From d4b9fd85e7c24d2875c30923e4be518c27e001ac Mon Sep 17 00:00:00 2001 From: Thomas Durieux <5577568+tdurieux@users.noreply.github.com> Date: Tue, 3 Nov 2026 15:03:23 +0000 Subject: [PATCH] fix: isolate website limits and scope explorer counts --- docs/website-request-budgets.md | 31 ++++++++ public/asset-manifest.json | 2 +- public/partials/explorer.htm | 2 +- public/script/app.js | 28 +++++-- public/script/vendor.min.js | 42 +++++------ src/config.ts | 3 + src/core/folder-counts.ts | 52 +++++++++++++ src/server/index.ts | 7 +- src/server/routes/repository-public.ts | 3 + src/server/website-rate-limit.ts | 20 +++++ test/folder-counts.test.js | 100 +++++++++++++++++++++++++ test/vue-ui.test.js | 50 +++++++++++++ test/website-rate-limit.test.js | 52 +++++++++++++ 13 files changed, 360 insertions(+), 32 deletions(-) create mode 100644 docs/website-request-budgets.md create mode 100644 src/core/folder-counts.ts create mode 100644 src/server/website-rate-limit.ts create mode 100644 test/folder-counts.test.js create mode 100644 test/website-rate-limit.test.js diff --git a/docs/website-request-budgets.md b/docs/website-request-budgets.md new file mode 100644 index 0000000..d9cf7ad --- /dev/null +++ b/docs/website-request-budgets.md @@ -0,0 +1,31 @@ +# Website requests and folder counts + +Website assets under `/w/` have a separate Redis-backed request budget. The +default `WEBSITE_RATE_LIMIT=2000` allows 2,000 requests per visitor in 15 minutes, +including signed-out visitors. Requests across repositories share this budget. +They do not consume the `/api` or `/github` allowance. Website slowdown, access +checks, file-size limits and streaming protections still apply. Rejections +include `Retry-After` and the existing JSON `rate_limited` response. + +Visitor identity uses the existing trusted-proxy address resolver. Do not trust +arbitrary forwarding headers or change `TRUST_PROXY` without verifying the +actual proxy chain. API and maintenance-token rate policies are unchanged. + +The explorer requests `/api/repo/:repoId/files/counts?path=…` after loading each +directory, once per directory per viewer initialization. The path is the same +anonymized path used for browsing. A response contains recursive file counts for +that directory and its immediate children, rather than a repository-wide map. +Counts use the captured active tree generation and sum anonymized child-name +collisions. Entering a colliding directory resolves the same original directory +as browsing it. No original paths are returned. + +The aggregation has a two-second database deadline, allows disk spill, and +returns at most 10,000 child groups plus the parent total. It still scans files +in the requested subtree; root counts can scan the whole active tree. No +cross-request cache bypasses authorization or retains counts from old snapshots. +The legacy endpoint without `path` retains its existing bounded response. + +Counts are optional. If a count request fails, the explorer continues browsing +without unavailable badges and stops issuing further count requests until the +viewer is reinitialized. It does not label the number of loaded tree entries as +the repository's total file count. File listing guards remain in place. diff --git a/public/asset-manifest.json b/public/asset-manifest.json index f9dcca6..fb0758a 100644 --- a/public/asset-manifest.json +++ b/public/asset-manifest.json @@ -1,6 +1,6 @@ { "core.min.js": "core.4a77c8ac41.min.js", - "vendor.min.js": "vendor.0b27dbacff.min.js", + "vendor.min.js": "vendor.5616fbf9b5.min.js", "mermaid.min.js": "mermaid.a7356d5ed1.min.js", "all.min.css": "all.c9afb0c819.min.css", "markdown.min.js": "markdown.6c8dfb7b1d.min.js", diff --git a/public/partials/explorer.htm b/public/partials/explorer.htm index 18e4e9d..e1a9f3c 100644 --- a/public/partials/explorer.htm +++ b/public/partials/explorer.htm @@ -21,7 +21,7 @@
- {{ fileCounts?.[''] || files?.length }} files + {{ fileCounts[''] }} files Available until {{ fmt?.date(options.expirationDate) }} diff --git a/public/script/app.js b/public/script/app.js index 0f1c315..908b17a 100644 --- a/public/script/app.js +++ b/public/script/app.js @@ -2718,32 +2718,42 @@ export const exploreController = function (state, http, location, params, html, } } state.fileCounts = null; + let listingGeneration = 0; + let countRequests = new Set(); + let countsUnavailable = false; state.getFiles = function (path) { const repoId = state.repoId; + const generation = listingGeneration; return http.get( `/api/repo/${state.repoId}/files/?path=${encodeURIComponent(path)}&v=${state.options.lastUpdateDate}` ).then(function (res) { - if (destroyed || repoId !== state.repoId) return []; + if (destroyed || repoId !== state.repoId || generation !== listingGeneration) return []; const normalized = path || ""; state.files = state.files.filter((f) => f.path !== normalized); state.files.push(...res.data); + fetchFileCounts(normalized, generation); return res.data; }, function (err) { - if (destroyed || repoId !== state.repoId) return []; + if (destroyed || repoId !== state.repoId || generation !== listingGeneration) return []; state.type = "error"; state.content = viewerErrorCode(err); state.files = []; }); }; - function fetchFileCounts() { + function fetchFileCounts(path, generation) { + if (countsUnavailable || countRequests.has(path)) return; + countRequests.add(path); const repoId = state.repoId; http.get( - `/api/repo/${state.repoId}/files/counts` + `/api/repo/${state.repoId}/files/counts?path=${encodeURIComponent(path)}` ).then(function (res) { - if (destroyed || repoId !== state.repoId) return; - state.fileCounts = res.data; + if (destroyed || repoId !== state.repoId || generation !== listingGeneration) return; + state.fileCounts = { ...state.fileCounts, ...res.data }; }, function () { - state.fileCounts = {}; + if (destroyed || repoId !== state.repoId || generation !== listingGeneration) return; + // Counts are optional. Do not retry a guarded or rate-limited query + // every time a visitor opens another directory. + countsUnavailable = true; }); } @@ -3140,6 +3150,9 @@ export const exploreController = function (state, http, location, params, html, state.files = []; state.content = null; state.fileCounts = null; + listingGeneration++; + countRequests = new Set(); + countsUnavailable = false; state.fileSearchQuery = ""; state.onFileSearchChange(); state.repoId = params.repoId; @@ -3149,7 +3162,6 @@ export const exploreController = function (state, http, location, params, html, const repoId = state.repoId; getOptions(function (options) { - fetchFileCounts(); var chain = promises.resolve(); for (let i = 0; i < state.paths.length; i++) { const path = i > 0 ? state.paths.slice(0, i).join("/") : ""; diff --git a/public/script/vendor.min.js b/public/script/vendor.min.js index 2656252..27a90a9 100644 --- a/public/script/vendor.min.js +++ b/public/script/vendor.min.js @@ -1,30 +1,30 @@ -"use strict";(()=>{var Sd=Object.defineProperty;var _d=(e,t)=>{for(var o in t)Sd(e,o,{get:t[o],enumerable:!0})};var ce=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var pe={markdown:"/script/markdown.6c8dfb7b1d.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",editor:"/script/editor.4f142d3adc.min.js"};function Ei(e){let t=e.location.hash.slice(1);if(e.history.replaceState(null,"","/review-link"),t.length>2048)return null;let o=new URLSearchParams(t);if([...o.keys()].length!==3||[...o.keys()].some(a=>!["clientId","intentId","token"].includes(a)))return null;let i=o.get("clientId"),s=o.get("intentId"),r=o.get("token");return!/^[a-f0-9]{32}$/.test(i||"")||!/^[a-f0-9]{32}$/.test(s||"")||!/^[a-f0-9]{64}$/.test(r||"")?null:{contract:"4open.artifacts/1",clientId:i,intentId:s,token:r}}function Ci(e,t){let{http:o,promises:i,window:s}=t,r=t.takeReviewHandoff(),a=r?{clientId:r.clientId,intentId:r.intentId}:null,c,f,g,y,b,h=!0,E,_=i.defer(),m=()=>[...s.crypto.getRandomValues(new Uint8Array(16))].map(L=>L.toString(16).padStart(2,"0")).join("");Object.assign(e,{repositoryId:"",handoffEnabled:!1,busy:!1,preview:null,acceptAccess:!1,acceptRetention:!1,uncertain:!1,saved:!1,expired:!1,error:r?"":"Open a new artifact link from your submission. This link is missing or invalid."});let C=()=>h&&e.user?.username===b;function N(){h=!1,r=c=f=void 0,_.resolve(),s.clearTimeout(E)}e.on("dispose",N),e.on("routeLeave",N),e.watch(()=>e.user?.username,L=>{!b&&L?b=L:b&&L!==b&&(N(),e.preview=null,e.repositoryId="",e.busy=!1,e.saved=!1,e.handoffEnabled=!1,e.error="Your account changed. Open a new artifact link from your submission.")});let O=()=>({timeout:_.promise,headers:{"Content-Type":"application/json","X-Review-CSRF":f}}),q=L=>L?.status===404?"Artifact linking is not available on this server.":L?.status===401?"Sign in, then open a new artifact link from your submission.":L?.status===403?"This account cannot approve this repository or this link.":"The request could not be completed. You can retry from this page.";e.loadPreview=async()=>{if(!h||!r||e.busy||e.uncertain||e.saved||!e.user?.username)return;b=e.user.username;let L=e.repositoryId.trim();if(!/^[A-Za-z0-9_-]{3,128}$/.test(L)){e.error="Enter the anonymous repository ID from its URL.";return}e.busy=!0,e.error="",e.preview=null,c=void 0,e.acceptAccess=e.acceptRetention=!1,e.expired=!1,s.clearTimeout(E),y||(y=m());try{let U=(await o.get("/api/review-consent/csrf",{timeout:_.promise})).data;if(!C())return;if(f=U.csrf,e.handoffEnabled=U.handoffEnabled===!0,!/^[a-f0-9]{64}$/.test(f||""))throw new Error("invalid_csrf");let z=(await o.post("/api/review-consent/preview",{repositoryId:L,intent:{...r,requestId:y}},O())).data;if(!C())return;if(!z||typeof z.ticket!="string"||!z.ticket||z.ticket.length>8192||typeof z.repositoryName!="string"||!["restricted-review","anonymous-link"].includes(z.policy?.access)||!Number.isSafeInteger(z.policy.version)||!Number.isFinite(Date.parse(z.policy.retainUntil))||!Number.isFinite(Date.parse(z.expiresAt))||Date.parse(z.expiresAt)<=Date.now()||Date.parse(z.expiresAt)>Date.now()+6e5)throw new Error("invalid_preview");c=z.ticket,g=m(),e.preview={repositoryName:z.repositoryName,policy:{...z.policy},expiresAt:z.expiresAt},E=s.setTimeout(()=>{h&&(e.expired=!0)},Math.max(0,Date.parse(z.expiresAt)-Date.now()))}catch(U){C()&&(e.error=q(U))}finally{C()&&(e.busy=!1)}},e.confirmConsent=async()=>{if(!(!C()||e.busy||e.saved||!c||!e.acceptAccess||!e.acceptRetention)){if(Date.parse(e.preview.expiresAt)<=Date.now()){e.expired=!0;return}e.busy=!0,e.error="";try{let L=(await o.post("/api/review-consent/confirm",{ticket:c,requestId:g,acceptAccess:!0,acceptRetention:!0},O())).data;if(!C())return;if(L?.requestId!==g||!Number.isFinite(Date.parse(L.confirmedAt)))throw new Error("invalid_receipt");e.saved=!0,e.uncertain=!1,r=void 0,e.handoffEnabled||(c=void 0)}catch{C()&&(e.uncertain=!0,e.error="The confirmation was not verified. Retry with the same approval, or return to your submission to check its status.")}finally{C()&&(e.busy=!1)}}},e.continueReview=async()=>{if(!C()||e.busy||!e.saved||!e.handoffEnabled||!c||!a)return;e.busy=!0,e.error="";let L,U=()=>{L?.remove(),s.removeEventListener("securitypolicyviolation",z)},z=ne=>{ne.violatedDirective?.startsWith("form-action")&&(U(),C()&&(e.busy=!1,e.error="The return address was blocked. Return to your submission to check the artifact status."))};try{let ne=(await o.post("/api/review-consent/handoff",{ticket:c},O())).data;if(!C())return;let x=ne?.completion,R=new URL(ne?.callbackUrl);if(!x||Object.keys(x).sort().join(",")!=="clientId,code,contract,expiresAt,intentId"||x.contract!=="4open.artifacts/1"||x.clientId!==a.clientId||x.intentId!==a.intentId||!/^[a-f0-9]{64}$/.test(x.code||"")||!Number.isFinite(Date.parse(x.expiresAt))||Date.parse(x.expiresAt)<=Date.now()||Date.parse(x.expiresAt)>Date.now()+3e5||R.protocol!=="https:"||R.href!==ne.callbackUrl||R.username||R.password||ne.callbackUrl.includes("?")||ne.callbackUrl.includes("#"))throw new Error("invalid_handoff");L=s.document.createElement("form"),L.method="POST",L.action=R.href;let V=s.document.createElement("input");V.type="hidden",V.name="completion",V.value=JSON.stringify(x),L.appendChild(V),s.document.body.appendChild(L),s.addEventListener("securitypolicyviolation",z),e.on("dispose",U),L.submit()}catch{U(),C()&&(e.busy=!1,e.error="The return to review could not be prepared. Retry from this page, or return to your submission to check its status.")}}}var yo=new Map,Dd=pe;function nn(e){if(!yo.has(e)){let t=document.createElement("script");t.src=Dd[e];let o=new Promise((i,s)=>{t.onload=i,t.onerror=()=>{yo.delete(e),t.remove(),s(new Error(`Unable to load ${e}. Please retry.`))}});yo.set(e,o),document.head.appendChild(t)}return yo.get(e)}async function Si(){await nn("editor"),ace.config.set("basePath","/script/external/ace/")}function gn(e){let t=Object.create(null);for(let o of e.split(","))t[o]=1;return o=>o in t}var Oe={},xt=[],rt=()=>{},ps=()=>!1,yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),bn=e=>e.startsWith("onUpdate:"),je=Object.assign,qn=(e,t)=>{let o=e.indexOf(t);o>-1&&e.splice(o,1)},Td=Object.prototype.hasOwnProperty,Se=(e,t)=>Td.call(e,t),he=Array.isArray,zt=e=>Mn(e)==="[object Map]",Ct=e=>Mn(e)==="[object Set]",_i=e=>Mn(e)==="[object Date]";var ye=e=>typeof e=="function",Le=e=>typeof e=="string",ft=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",fs=e=>(Te(e)||ye(e))&&ye(e.then)&&ye(e.catch),Ti=Object.prototype.toString,Mn=e=>Ti.call(e),hs=e=>Mn(e).slice(8,-1),bo=e=>Mn(e)==="[object Object]",wo=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,wn=gn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var ko=e=>{let t=Object.create(null);return(o=>t[o]||(t[o]=e(o)))},Ad=/-\w/g,Je=ko(e=>e.replace(Ad,t=>t.slice(1).toUpperCase())),Od=/\B([A-Z])/g,Ot=ko(e=>e.replace(Od,"-$1").toLowerCase()),on=ko(e=>e.charAt(0).toUpperCase()+e.slice(1)),Un=ko(e=>e?`on${on(e)}`:""),gt=(e,t)=>!Object.is(e,t),kn=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:o})},En=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var Ni,$n=()=>Ni||(Ni=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ie(e){if(he(e)){let t={};for(let o=0;oo.startsWith("/*")?"":o).split(Pd).forEach(o=>{if(o){let i=o.split(Id);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function P(e){let t="";if(Le(e))t=e;else if(he(e))for(let o=0;oSt(o,t))}var Pi=e=>!!(e&&e.__v_isRef===!0),u=e=>Le(e)?e:e==null?"":he(e)||Te(e)&&(e.toString===Ti||!ye(e.toString))?Pi(e)?u(e.value):JSON.stringify(e,Ii,2):String(e),Ii=(e,t)=>Pi(t)?Ii(e,t.value):zt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[i,s],r)=>(o[cs(i,r)+" =>"]=s,o),{})}:Ct(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>cs(o))}:ft(t)?cs(t):Te(t)&&!he(t)&&!bo(t)?String(t):t,cs=(e,t="")=>{var o;return ft(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};function Ld(e,...t){console.warn(`[Vue warn] ${e}`,...t)}var Qe,Hn=class{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Qe&&(Qe.active?(this.parent=Qe,this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){let i=this.scopes.slice();for(t=0,o=i.length;t0&&--this._on===0){if(Qe===this)Qe=this.prevScope;else{let t=Qe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,i;for(o=0,i=this.effects.length;o0)return;if(Bn){let t=Bn;for(Bn=void 0;t;){let o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;Fn;){let t=Fn;for(Fn=void 0;t;){let o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=o}}if(e)throw e}function Fi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Bi(e){let t,o=e.depsTail,i=o;for(;i;){let s=i.prevDep;i.version===-1?(i===o&&(o=s),Ds(i),Fd(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=s}e.deps=t,e.depsTail=o}function ys(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Hi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Hi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===zn)||(e.globalVersion=zn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ys(e))))return;e.flags|=2;let t=e.dep,o=Ue,i=_t;Ue=e,_t=!0;try{Fi(e);let s=e.fn(e._value);(t.version===0||gt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Ue=o,_t=i,Bi(e),e.flags&=-3}}function Ds(e,t=!1){let{dep:o,prevSub:i,nextSub:s}=e;if(i&&(i.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=i,e.nextSub=void 0),o.subs===e&&(o.subs=i,!i&&o.computed)){o.computed.flags&=-5;for(let r=o.computed.deps;r;r=r.nextDep)Ds(r,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Fd(e){let{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}var _t=!0,zi=[];function Nt(){zi.push(_t),_t=!1}function Rt(){let e=zi.pop();_t=e===void 0?!0:e}function Vi(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let o=Ue;Ue=void 0;try{t()}finally{Ue=o}}}var zn=0,bs=class{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},jn=class{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Ue||!_t||Ue===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==Ue)o=this.activeLink=new bs(Ue,this),Ue.deps?(o.prevDep=Ue.depsTail,Ue.depsTail.nextDep=o,Ue.depsTail=o):Ue.deps=Ue.depsTail=o,ji(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){let i=o.nextDep;i.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=i),o.prevDep=Ue.depsTail,o.nextDep=void 0,Ue.depsTail.nextDep=o,Ue.depsTail=o,Ue.deps===o&&(Ue.deps=i)}return o}trigger(t){this.version++,zn++,this.notify(t)}notify(t){Ns();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Rs()}}};function ji(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)ji(i)}let o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}var ws=new WeakMap,rn=Symbol(""),ks=Symbol(""),Gn=Symbol("");function xe(e,t,o){if(_t&&Ue){let i=ws.get(e);i||ws.set(e,i=new Map);let s=i.get(o);s||(i.set(o,s=new jn),s.map=i,s.key=o),s.track()}}function It(e,t,o,i,s,r){let a=ws.get(e);if(!a){zn++;return}let c=f=>{f&&f.trigger()};if(Ns(),t==="clear")a.forEach(c);else{let f=he(e),g=f&&wo(o);if(f&&o==="length"){let y=Number(i);a.forEach((b,h)=>{(h==="length"||h===Gn||!ft(h)&&h>=y)&&c(b)})}else switch((o!==void 0||a.has(void 0))&&c(a.get(o)),g&&c(a.get(Gn)),t){case"add":f?g&&c(a.get("length")):(c(a.get(rn)),zt(e)&&c(a.get(ks)));break;case"delete":f||(c(a.get(rn)),zt(e)&&c(a.get(ks)));break;case"set":zt(e)&&c(a.get(rn));break}}Rs()}function Cn(e){let t=Re(e);return t===e||(xe(t,"iterate",Gn),at(e))?t:yt(e)?qt(e)?t.map(o=>Gt(ht(o))):t.map(Gt):t.map(ht)}function Kn(e){return xe(e=Re(e),"iterate",Gn),e}function Pt(e,t){return yt(e)?Gt(qt(e)?ht(t):t):ht(t)}var Bd={__proto__:null,[Symbol.iterator](){return vs(this,Symbol.iterator,e=>Pt(this,e))},concat(...e){return Cn(this).concat(...e.map(t=>he(t)?Cn(t):t))},entries(){return vs(this,"entries",e=>(e[1]=Pt(this,e[1]),e))},every(e,t){return jt(this,"every",e,t,void 0,arguments)},filter(e,t){return jt(this,"filter",e,t,o=>o.map(i=>Pt(this,i)),arguments)},find(e,t){return jt(this,"find",e,t,o=>Pt(this,o),arguments)},findIndex(e,t){return jt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return jt(this,"findLast",e,t,o=>Pt(this,o),arguments)},findLastIndex(e,t){return jt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return jt(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return Cn(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return jt(this,"map",e,t,void 0,arguments)},pop(){return Ln(this,"pop")},push(...e){return Ln(this,"push",e)},reduce(e,...t){return Mi(this,"reduce",e,t)},reduceRight(e,...t){return Mi(this,"reduceRight",e,t)},shift(){return Ln(this,"shift")},some(e,t){return jt(this,"some",e,t,void 0,arguments)},splice(...e){return Ln(this,"splice",e)},toReversed(){return Cn(this).toReversed()},toSorted(e){return Cn(this).toSorted(e)},toSpliced(...e){return Cn(this).toSpliced(...e)},unshift(...e){return Ln(this,"unshift",e)},values(){return vs(this,"values",e=>Pt(this,e))}};function vs(e,t,o){let i=Kn(e),s=i[t],r=s.call(i);if(i!==e&&!at(e)){if(r[Symbol.toStringTag]==="Array Iterator"){let a=Object.create(Object.getPrototypeOf(r));return a.next=()=>qi(r.next(),o),s!==Gi[t]&&Object.defineProperties(a,{return:{get(){let c=r.return;return typeof c=="function"?c.bind(r):c}},throw:{get(){let c=r.throw;return typeof c=="function"?c.bind(r):c}}}),a}r._next=r.next,r.next=()=>qi(r._next(),o)}return r}function qi(e,t){return e.done||(e.value=t(e.value)),e}var Gi=Array.prototype;function jt(e,t,o,i,s,r){let a=Kn(e),c=a!==e&&!at(e),f=a[t];if(f!==Gi[t]){let b=f.apply(e,r);return c?ht(b):b}let g=o;a!==e&&(c?g=function(b,h){return o.call(this,Pt(e,b),h,e)}:o.length>2&&(g=function(b,h){return o.call(this,b,h,e)}));let y=f.call(a,g,i);return c&&s?s(y):y}function Mi(e,t,o,i){let s=Kn(e),r=s!==e&&!at(e),a=o,c=!1;s!==e&&(r?(c=i.length===0,a=function(g,y,b){return c&&(c=!1,g=Pt(e,g)),o.call(this,g,Pt(e,y),b,e)}):o.length>3&&(a=function(g,y,b){return o.call(this,g,y,b,e)}));let f=s[t](a,...i);return c?Pt(e,f):f}function gs(e,t,o){let i=Re(e);xe(i,"iterate",Gn);let s=i[t](...o);return(s===-1||s===!1)&&Jn(o[0])?(o[0]=Re(o[0]),i[t](...o)):s}function Ln(e,t,o=[]){Nt(),Ns();let i=Re(e)[t].apply(e,o);return Rs(),Rt(),i}var Hd=gn("__proto__,__v_isRef,__isVue"),Wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ft));function zd(e){ft(e)||(e=String(e));let t=Re(this);return xe(t,"has",e),t.hasOwnProperty(e)}var Do=class{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,i){if(o==="__v_skip")return t.__v_skip;let s=this._isReadonly,r=this._isShallow;if(o==="__v_isReactive")return!s;if(o==="__v_isReadonly")return s;if(o==="__v_isShallow")return r;if(o==="__v_raw")return i===(s?r?Zd:Ji:r?Yi:Ki).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;let a=he(t);if(!s){let f;if(a&&(f=Bd[o]))return f;if(o==="hasOwnProperty")return zd}let c=Reflect.get(t,o,Ze(t)?t:i);if((ft(o)?Wi.has(o):Hd(o))||(s||xe(t,"get",o),r))return c;if(Ze(c)){let f=a&&wo(o)?c:c.value;return s&&Te(f)?Ao(f):f}return Te(c)?s?Ao(c):Fe(c):c}},To=class extends Do{constructor(t=!1){super(!1,t)}set(t,o,i,s){let r=t[o],a=he(t)&&wo(o);if(!this._isShallow){let g=yt(r);if(!at(i)&&!yt(i)&&(r=Re(r),i=Re(i)),!a&&Ze(r)&&!Ze(i))return g||(r.value=i),!0}let c=a?Number(o)e,_o=e=>Reflect.getPrototypeOf(e);function Kd(e,t,o){return function(...i){let s=this.__v_raw,r=Re(s),a=zt(r),c=e==="entries"||e===Symbol.iterator&&a,f=e==="keys"&&a,g=s[e](...i),y=o?Cs:t?Gt:ht;return!t&&xe(r,"iterate",f?ks:rn),je(Object.create(g),{next(){let{value:b,done:h}=g.next();return h?{value:b,done:h}:{value:c?[y(b[0]),y(b[1])]:y(b),done:h}}})}}function No(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Yd(e,t){let o={get(s){let r=this.__v_raw,a=Re(r),c=Re(s);e||(gt(s,c)&&xe(a,"get",s),xe(a,"get",c));let{has:f}=_o(a),g=t?Cs:e?Gt:ht;if(f.call(a,s))return g(r.get(s));if(f.call(a,c))return g(r.get(c));r!==a&&r.get(s)},get size(){let s=this.__v_raw;return!e&&xe(Re(s),"iterate",rn),s.size},has(s){let r=this.__v_raw,a=Re(r),c=Re(s);return e||(gt(s,c)&&xe(a,"has",s),xe(a,"has",c)),s===c?r.has(s):r.has(s)||r.has(c)},forEach(s,r){let a=this,c=a.__v_raw,f=Re(c),g=t?Cs:e?Gt:ht;return!e&&xe(f,"iterate",rn),c.forEach((y,b)=>s.call(r,g(y),g(b),a))}};return je(o,e?{add:No("add"),set:No("set"),delete:No("delete"),clear:No("clear")}:{add(s){let r=Re(this),a=_o(r),c=Re(s),f=!t&&!at(s)&&!yt(s)?c:s;return a.has.call(r,f)||gt(s,f)&&a.has.call(r,s)||gt(c,f)&&a.has.call(r,c)||(r.add(f),It(r,"add",f,f)),this},set(s,r){!t&&!at(r)&&!yt(r)&&(r=Re(r));let a=Re(this),{has:c,get:f}=_o(a),g=c.call(a,s);g||(s=Re(s),g=c.call(a,s));let y=f.call(a,s);return a.set(s,r),g?gt(r,y)&&It(a,"set",s,r,y):It(a,"add",s,r),this},delete(s){let r=Re(this),{has:a,get:c}=_o(r),f=a.call(r,s);f||(s=Re(s),f=a.call(r,s));let g=c?c.call(r,s):void 0,y=r.delete(s);return f&&It(r,"delete",s,void 0,g),y},clear(){let s=Re(this),r=s.size!==0,a=void 0,c=s.clear();return r&&It(s,"clear",void 0,void 0,a),c}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=Kd(s,e,t)}),o}function Ts(e,t){let o=Yd(e,t);return(i,s,r)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_isShallow"?t:s==="__v_raw"?i:Reflect.get(Se(o,s)&&s in i?o:i,s,r)}var Jd={get:Ts(!1,!1)},Qd={get:Ts(!1,!0)},Xd={get:Ts(!0,!1)};var Ki=new WeakMap,Yi=new WeakMap,Ji=new WeakMap,Zd=new WeakMap;function xd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Fe(e){return yt(e)?e:As(e,!1,jd,Jd,Ki)}function Yn(e){return As(e,!1,Wd,Qd,Yi)}function Ao(e){return As(e,!0,Gd,Xd,Ji)}function As(e,t,o,i,s){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let r=s.get(e);if(r)return r;let a=xd(hs(e));if(a===0)return e;let c=new Proxy(e,a===2?i:o);return s.set(e,c),c}function qt(e){return yt(e)?qt(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function at(e){return!!(e&&e.__v_isShallow)}function Jn(e){return e?!!e.__v_raw:!1}function Re(e){let t=e&&e.__v_raw;return t?Re(t):e}function Os(e){return!Se(e,"__v_skip")&&Object.isExtensible(e)&&Eo(e,"__v_skip",!0),e}var ht=e=>Te(e)?Fe(e):e,Gt=e=>Te(e)?Ao(e):e;function Ze(e){return e?e.__v_isRef===!0:!1}function et(e){return Qi(e,!1)}function Po(e){return Qi(e,!0)}function Qi(e,t){return Ze(e)?e:new Ss(e,t)}var Ss=class{constructor(t,o){this.dep=new jn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:Re(t),this._value=o?t:ht(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){let o=this._rawValue,i=this.__v_isShallow||at(t)||yt(t);t=i?t:Re(t),gt(t,o)&&(this._rawValue=t,this._value=i?t:ht(t),this.dep.trigger())}};function Wt(e){return Ze(e)?e.value:e}var eu={get:(e,t,o)=>t==="__v_raw"?e:Wt(Reflect.get(e,t,o)),set:(e,t,o,i)=>{let s=e[t];return Ze(s)&&!Ze(o)?(s.value=o,!0):Reflect.set(e,t,o,i)}};function Io(e){return qt(e)?e:new Proxy(e,eu)}var _s=class{constructor(t,o,i){this.fn=t,this.setter=o,this._value=void 0,this.dep=new jn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=zn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&Ue!==this)return Li(this,!0),!0}get value(){let t=this.dep.track();return Hi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}};function Xi(e,t,o=!1){let i,s;return ye(e)?i=e:(i=e.get,s=e.set),new _s(i,s,o)}var Ro={},Oo=new WeakMap,sn;function Zi(e,t=!1,o=sn){if(o){let i=Oo.get(o);i||Oo.set(o,i=[]),i.push(e)}}function xi(e,t,o=Oe){let{immediate:i,deep:s,once:r,scheduler:a,augmentJob:c,call:f}=o,g=U=>{(o.onWarn||Ld)("Invalid watch source: ",U,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},y=U=>s?U:at(U)||s===!1||s===0?Vt(U,1):Vt(U),b,h,E,_,m=!1,C=!1;if(Ze(e)?(h=()=>e.value,m=at(e)):qt(e)?(h=()=>y(e),m=!0):he(e)?(C=!0,m=e.some(U=>qt(U)||at(U)),h=()=>e.map(U=>{if(Ze(U))return U.value;if(qt(U))return y(U);if(ye(U))return f?f(U,2):U()})):ye(e)?t?h=f?()=>f(e,2):e:h=()=>{if(E){Nt();try{E()}finally{Rt()}}let U=sn;sn=b;try{return f?f(e,3,[_]):e(_)}finally{sn=U}}:h=rt,t&&s){let U=h,z=s===!0?1/0:s;h=()=>Vt(U(),z)}let N=Ui(),O=()=>{b.stop(),N&&N.active&&qn(N.effects,b)};if(r&&t){let U=t;t=(...z)=>{try{return U(...z)}finally{O()}}}let q=C?new Array(e.length).fill(Ro):Ro,L=U=>{if(!(!(b.flags&1)||!b.dirty&&!U))if(t){let z=b.run();if(U||s||m||(C?z.some((ne,x)=>gt(ne,q[x])):gt(z,q))){let ne=sn;Nt();try{E&&E(),sn=b;let x=[z,q===Ro?void 0:C&&q[0]===Ro?[]:q,_];q=z,f?f(t,3,x):t(...x)}finally{sn=ne,Rt()}}}else b.run()};return c&&c(L),b=new Sn(h),b.scheduler=a?()=>a(L,!1):L,_=U=>Zi(U,!1,b),E=b.onStop=()=>{let U=Oo.get(b);if(U){if(f)f(U,4);else for(let z of U)z();Oo.delete(b)}},t?i?L(!0):q=b.run():a?a(L.bind(null,!0),!0):b.run(),O.pause=b.pause.bind(b),O.resume=b.resume.bind(b),O.stop=O,O}function Vt(e,t=1/0,o){if(t<=0||!Te(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,Ze(e))Vt(e.value,t,o);else if(he(e))for(let i=0;i{Vt(i,t,o)});else if(bo(e)){for(let i in e)Vt(e[i],t,o);for(let i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&Vt(e[i],t,o)}return e}function ao(e,t,o,i){try{return i?e(...i):e()}catch(s){lo(s,t,o)}}function bt(e,t,o,i){if(ye(e)){let s=ao(e,t,o,i);return s&&fs(s)&&s.catch(r=>{lo(r,t,o)}),s}if(he(e)){let s=[];for(let r=0;r>>1,s=st[i],r=no(s);r=no(o)?st.push(e):st.splice(iu(t),0,e),e.flags|=1,vr()}}function vr(){Mo||(Mo=mr.then(wr))}function gr(e){if(!he(e))en&&e.id===-1?en.splice(_n+1,0,e):e.flags&1||(Ut.push(e),e.flags|=1);else for(let t=0;t=t))continue;st.splice(i,1),i=e?i-1:Dt,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function br(e,t,o=0){if(Ut.length){let i=Ut,s=0;if(t){i=[];for(let a=0;ano(a)-no(c));if(Ut.length=s,en){for(let a=0;ae.id==null?e.flags&2?-1:1/0:e.id;function wr(e){let t=rt;try{for(Dt=0;Dt{i._d&&Fo(-1);let r=Uo(t),a=dn.length,c;try{c=e(...s)}finally{for(let f=dn.length;f>a;f--)Qr();Uo(r),i._d&&Fo(1)}return c};return i._n=!0,i._c=!0,i._d=!0,i}function D(e,t){if(mt===null)return e;let o=Yo(mt),i=e.dirs||(e.dirs=[]);for(let s=0;s1)return o&&ye(t)?t.call(i&&i.proxy):t}}var lu=Symbol.for("v-scx"),du=()=>{{let e=dt(lu);return e}};function He(e,t,o){return Er(e,t,o)}function Er(e,t,o=Oe){let{immediate:i,deep:s,flush:r,once:a}=o,c=je({},o),f=t&&i||!t&&r!=="post",g;if(Dn){if(r==="sync"){let E=du();g=E.__watcherHandles||(E.__watcherHandles=[])}else if(!f){let E=()=>{};return E.stop=rt,E.resume=rt,E.pause=rt,E}}let y=tt;c.call=(E,_,m)=>bt(E,y,_,m);let b=!1;r==="post"?c.scheduler=E=>{E.i=y,lt(E,y&&y.suspense)}:r!=="sync"&&(b=!0,c.scheduler=(E,_)=>{_?E():zs(E)}),c.augmentJob=E=>{t&&(E.flags|=4),b&&(E.flags|=2,y&&(E.id=y.uid,E.i=y))};let h=xi(e,t,c);return Dn&&(g?g.push(h):f&&h()),h}function uu(e,t,o){let i=this.proxy,s=Le(e)?e.includes(".")?Cr(i,e):()=>i[e]:e.bind(i,i),r;ye(t)?r=t:(r=t.handler,o=t);let a=po(this),c=Er(s,r.bind(i),o);return a(),c}function Cr(e,t){let o=t.split(".");return()=>{let i=e;for(let s=0;se.__isTeleport;var Is=Symbol("_leaveCb");function pu(e){let t=e[0];if(e.length>1){let o=!1;for(let i of e)if(i.type!==Tt){t=i,o=!0;break}}return t}function Sr(e){if(!jo(e))return zo(e.type)&&e.children?pu(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&ye(o.default))return o.default()}}function oo(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let o=e.component.subTree;oo(zo(o.type)&&Sr(o)||o,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===K&&he(e.children)){let o=Mr(e.children,!1);o&&oo(o,t)}}function Us(e){if(e.component)return Us(e.component.subTree);if(e.type===K){let t=he(e.children)&&Mr(e.children,!1);return t?Us(t):void 0}if(e.type!==Tt)return e}function uo(e,t){return ye(e)?je({name:e.name},t,{setup:e}):e}function js(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function er(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}var $o=new WeakMap;function Zn(e,t,o,i,s=!1){if(he(e)){e.forEach((m,C)=>Zn(m,t&&(he(t)?t[C]:t),o,i,s));return}if(xn(i)&&!s){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Zn(e,t,o,i.component.subTree);return}let r=i.shapeFlag&4?Yo(i.component):i.el,a=s?null:r,{i:c,r:f}=e,g=t&&t.r,y=c.refs===Oe?c.refs={}:c.refs,b=c.setupState,h=Re(b),E=b===Oe?ps:m=>er(y,m)?!1:Se(h,m),_=(m,C)=>!(C&&er(y,C));if(g!=null&&g!==f){if(tr(t),Le(g))y[g]=null,E(g)&&(b[g]=null);else if(Ze(g)){let m=t;_(g,m.k)&&(g.value=null),m.k&&(y[m.k]=null)}}if(ye(f))ao(f,c,12,[a,y]);else{let m=Le(f),C=Ze(f);if(m||C){let N=()=>{if(e.f){let O=m?E(f)?b[f]:y[f]:_(f)||!e.k?f.value:y[e.k];if(s)he(O)&&qn(O,r);else if(he(O))O.includes(r)||O.push(r);else if(m)y[f]=[r],E(f)&&(b[f]=y[f]);else{let q=[r];_(f,e.k)&&(f.value=q),e.k&&(y[e.k]=q)}}else m?(y[f]=a,E(f)&&(b[f]=a)):C&&(_(f,e.k)&&(f.value=a),e.k&&(y[e.k]=a))};if(a){let O=()=>{N(),$o.delete(e)};O.id=-1,$o.set(e,O),lt(O,o)}else tr(e),N()}}}function tr(e){let t=$o.get(e);t&&(t.flags|=8,$o.delete(e))}var nr=e=>e.nodeType===8;var Y$=$n().requestIdleCallback||(e=>setTimeout(e,1)),J$=$n().cancelIdleCallback||(e=>clearTimeout(e));function fu(e,t){if(nr(e)&&e.data==="["){let o=1,i=e.nextSibling;for(;i;){if(i.nodeType===1){if(t(i)===!1)break}else if(nr(i))if(i.data==="]"){if(--o===0)break}else i.data==="["&&o++;i=i.nextSibling}}else t(e)}var xn=e=>!!e.type.__asyncLoader;function _r(e){ye(e)&&(e={loader:e});let{loader:t,loadingComponent:o,errorComponent:i,delay:s=200,hydrate:r,timeout:a,suspensible:c=!0,onError:f}=e,g=null,y,b=0,h=()=>(b++,g=null,E()),E=()=>{let _;return g||(_=g=t().catch(m=>{if(m=m instanceof Error?m:new Error(String(m)),f)return new Promise((C,N)=>{f(m,()=>C(h()),()=>N(m),b+1)});throw m}).then(m=>_!==g&&g?g:(m&&(m.__esModule||m[Symbol.toStringTag]==="Module")&&(m=m.default),y=m,m)))};return uo({name:"AsyncComponentWrapper",__asyncLoader:E,__asyncHydrate(_,m,C){let N=_.isConnected,O=!1;(m.bu||(m.bu=[])).push(()=>O=!0);let q=()=>{O||!_.parentNode||N&&!_.isConnected||C()},L=r?()=>{let U=r(q,z=>fu(_,z));U&&(m.bum||(m.bum=[])).push(U)}:q;y?L():E().then(()=>!m.isUnmounted&&L())},get __asyncResolved(){return y},setup(){let _=tt;if(js(_),y)return()=>Vo(y,_);let m=U=>{g=null,lo(U,_,13,!i)};if(c&&_.suspense||Dn)return E().then(U=>()=>Vo(U,_)).catch(U=>(m(U),()=>i?Ee(i,{error:U}):null));let C=et(!1),N=et(),O=et(!!s),q,L;return co(()=>{q!=null&&clearTimeout(q),L!=null&&clearTimeout(L)}),s&&(L=setTimeout(()=>{_.isUnmounted||(O.value=!1)},s)),a!=null&&(q=setTimeout(()=>{if(!_.isUnmounted&&!C.value&&!N.value){let U=new Error(`Async component timed out after ${a}ms.`);m(U),N.value=U}},a)),E().then(()=>{_.isUnmounted||(C.value=!0,_.parent&&jo(_.parent.vnode)&&_.parent.update())}).catch(U=>{if(_.isUnmounted){g=null;return}m(U),N.value=U}),()=>{if(C.value&&y)return Vo(y,_);if(N.value&&i)return Ee(i,{error:N.value});if(o&&!O.value)return Vo(o,_)}}})}function Vo(e,t){let{ref:o,props:i,children:s,ce:r}=t.vnode,a=Ee(e,i,s);return a.ref=o,a.ce=r,delete t.vnode.ce,a}var jo=e=>e.type.__isKeepAlive;function Nr(e,t){Dr(e,"a",t)}function Rr(e,t){Dr(e,"da",t)}function Dr(e,t,o=tt){let i=e.__wdc||(e.__wdc=()=>{let s=o;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Go(t,i,o),o){let s=o.parent;for(;s&&s.parent;)jo(s.parent.vnode)&&hu(i,t,o,s),s=s.parent}}function hu(e,t,o,i){let s=Go(t,e,i,!0);co(()=>{qn(i[t],s)},o)}function Go(e,t,o=tt,i=!1){if(o){let s=o[e]||(o[e]=[]),r=t.__weh||(t.__weh=(...a)=>{Nt();let c=po(o),f=bt(t,o,e,a);return c(),Rt(),f});return i?s.unshift(r):s.push(r),r}}var Yt=e=>(t,o=tt)=>{(!Dn||e==="sp")&&Go(e,(...i)=>t(...i),o)},mu=Yt("bm"),Lt=Yt("m"),Tr=Yt("bu"),Ar=Yt("u"),cn=Yt("bum"),co=Yt("um"),vu=Yt("sp"),gu=Yt("rtg"),yu=Yt("rtc");function bu(e,t=tt){Go("ec",e,t)}var Or="components",wu="directives";function Ge(e,t){return Pr(Or,e,!0,t)||e}var ku=Symbol.for("v-ndc");function ge(e){return Pr(wu,e)}function Pr(e,t,o=!0,i=!1){let s=mt||tt;if(s){let r=s.type;if(e===Or){let c=sc(r,!1);if(c&&(c===t||c===Je(t)||c===on(Je(t))))return r}let a=or(s[e]||r[e],t)||or(s.appContext[e],t);return!a&&i?r:a}}function or(e,t){return e&&(e[t]||e[Je(t)]||e[on(Je(t))])}function te(e,t,o,i){let s,r=o&&o[i],a=he(e);if(a||Le(e)){let c=a&&qt(e),f=!1,g=!1;c&&(f=!at(e),g=yt(e),e=Kn(e)),s=new Array(e.length);for(let y=0,b=e.length;yt(c,f,void 0,r&&r[f]));else{let c=Object.keys(e);s=new Array(c.length);for(let f=0,g=c.length;fe?ea(e)?Yo(e):$s(e.parent):null;var eo=je(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>$s(e.parent),$root:e=>$s(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Gs(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=Ke.bind(e.proxy)),$watch:e=>uu.bind(e)});var Vs=(e,t)=>e!==Oe&&!e.__isScriptSetup&&Se(e,t),Eu={get({_:e},t){if(t==="__v_skip")return!0;let{ctx:o,setupState:i,data:s,props:r,accessCache:a,type:c,appContext:f}=e;if(t[0]!=="$"){let h=a[t];if(h!==void 0)switch(h){case 1:return i[t];case 2:return s[t];case 4:return o[t];case 3:return r[t]}else{if(Vs(i,t))return a[t]=1,i[t];if(s!==Oe&&Se(s,t))return a[t]=2,s[t];if(Se(r,t))return a[t]=3,r[t];if(o!==Oe&&Se(o,t))return a[t]=4,o[t];Ls&&(a[t]=0)}}let g=eo[t],y,b;if(g)return t==="$attrs"&&xe(e.attrs,"get",""),g(e);if((y=c.__cssModules)&&(y=y[t]))return y;if(o!==Oe&&Se(o,t))return a[t]=4,o[t];if(b=f.config.globalProperties,Se(b,t))return b[t]},set({_:e},t,o){let{data:i,setupState:s,ctx:r}=e;return Vs(s,t)?(s[t]=o,!0):i!==Oe&&Se(i,t)?(i[t]=o,!0):Se(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:i,appContext:s,props:r,type:a}},c){let f;return!!(o[c]||e!==Oe&&c[0]!=="$"&&Se(e,c)||Vs(t,c)||Se(r,c)||Se(i,c)||Se(eo,c)||Se(s.config.globalProperties,c)||(f=a.__cssModules)&&f[c])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:Se(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function sr(e){return he(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}var Ls=!0;function Cu(e){let t=Gs(e),o=e.proxy,i=e.ctx;Ls=!1,t.beforeCreate&&ir(t.beforeCreate,e,"bc");let{data:s,computed:r,methods:a,watch:c,provide:f,inject:g,created:y,beforeMount:b,mounted:h,beforeUpdate:E,updated:_,activated:m,deactivated:C,beforeDestroy:N,beforeUnmount:O,destroyed:q,unmounted:L,render:U,renderTracked:z,renderTriggered:ne,errorCaptured:x,serverPrefetch:R,expose:V,inheritAttrs:Y,components:X,directives:G,filters:J}=t;if(g&&Su(g,i,null),a)for(let de in a){let le=a[de];ye(le)&&(i[de]=le.bind(o))}if(s){let de=s.call(o,o);Te(de)&&(e.data=Fe(de))}if(Ls=!0,r)for(let de in r){let le=r[de],_e=ye(le)?le.bind(o,o):ye(le.get)?le.get.bind(o,o):rt,Ve=!ye(le)&&ye(le.set)?le.set.bind(o):rt,$e=nt({get:_e,set:Ve});Object.defineProperty(i,de,{enumerable:!0,configurable:!0,get:()=>$e.value,set:De=>$e.value=De})}if(c)for(let de in c)Ir(c[de],i,o,de);if(f){let de=ye(f)?f.call(o):f;Reflect.ownKeys(de).forEach(le=>{un(le,de[le])})}y&&ir(y,e,"c");function ue(de,le){he(le)?le.forEach(_e=>de(_e.bind(o))):le&&de(le.bind(o))}if(ue(mu,b),ue(Lt,h),ue(Tr,E),ue(Ar,_),ue(Nr,m),ue(Rr,C),ue(bu,x),ue(yu,z),ue(gu,ne),ue(cn,O),ue(co,L),ue(vu,R),he(V))if(V.length){let de=e.exposed||(e.exposed={});V.forEach(le=>{Object.defineProperty(de,le,{get:()=>o[le],set:_e=>o[le]=_e,enumerable:!0})})}else e.exposed||(e.exposed={});U&&e.render===rt&&(e.render=U),Y!=null&&(e.inheritAttrs=Y),X&&(e.components=X),G&&(e.directives=G),R&&js(e)}function Su(e,t,o=rt){he(e)&&(e=Fs(e));for(let i in e){let s=e[i],r;Te(s)?"default"in s?r=dt(s.from||i,s.default,!0):r=dt(s.from||i):r=dt(s),Ze(r)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):t[i]=r}}function ir(e,t,o){bt(he(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,o)}function Ir(e,t,o,i){let s=i.includes(".")?Cr(o,i):()=>o[i];if(Le(e)){let r=t[e];ye(r)&&He(s,r)}else if(ye(e))He(s,e.bind(o));else if(Te(e))if(he(e))e.forEach(r=>Ir(r,t,o,i));else{let r=ye(e.handler)?e.handler.bind(o):t[e.handler];ye(r)&&He(s,r,e)}}function Gs(e){let t=e.type,{mixins:o,extends:i}=t,{mixins:s,optionsCache:r,config:{optionMergeStrategies:a}}=e.appContext,c=r.get(t),f;return c?f=c:!s.length&&!o&&!i?f=t:(f={},s.length&&s.forEach(g=>Lo(f,g,a,!0)),Lo(f,t,a)),Te(t)&&r.set(t,f),f}function Lo(e,t,o,i=!1){let{mixins:s,extends:r}=t;r&&Lo(e,r,o,!0),s&&s.forEach(a=>Lo(e,a,o,!0));for(let a in t)if(!(i&&a==="expose")){let c=_u[a]||o&&o[a];e[a]=c?c(e[a],t[a]):t[a]}return e}var _u={data:rr,props:ar,emits:ar,methods:Xn,computed:Xn,beforeCreate:ot,created:ot,beforeMount:ot,mounted:ot,beforeUpdate:ot,updated:ot,beforeDestroy:ot,beforeUnmount:ot,destroyed:ot,unmounted:ot,activated:ot,deactivated:ot,errorCaptured:ot,serverPrefetch:ot,components:Xn,directives:Xn,watch:Ru,provide:rr,inject:Nu};function rr(e,t){return t?e?function(){return je(ye(e)?e.call(this,this):e,ye(t)?t.call(this,this):t)}:t:e}function Nu(e,t){return Xn(Fs(e),Fs(t))}function Fs(e){if(he(e)){let t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${Ot(t)}Modifiers`];function Ou(e,t,...o){if(e.isUnmounted)return;let i=e.vnode.props||Oe,s=o,r=t.startsWith("update:"),a=r&&Au(i,t.slice(7));a&&(a.trim&&(s=o.map(y=>Le(y)?y.trim():y)),a.number&&(s=s.map(En)));let c,f=i[c=Un(t)]||i[c=Un(Je(t))];!f&&r&&(f=i[c=Un(Ot(t))]),f&&bt(f,e,6,s);let g=i[c+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,bt(g,e,6,s)}}var Pu=new WeakMap;function qr(e,t,o=!1){let i=o?Pu:t.emitsCache,s=i.get(e);if(s!==void 0)return s;let r=e.emits,a={},c=!1;if(!ye(e)){let f=g=>{let y=qr(g,t,!0);y&&(c=!0,je(a,y))};!o&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!r&&!c?(Te(e)&&i.set(e,null),null):(he(r)?r.forEach(f=>a[f]=null):je(a,r),Te(e)&&i.set(e,a),a)}function Wo(e,t){return!e||!yn(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Se(e,t[0].toLowerCase()+t.slice(1))||Se(e,Ot(t))||Se(e,t))}function qs(e){let{type:t,vnode:o,proxy:i,withProxy:s,propsOptions:[r],slots:a,attrs:c,emit:f,render:g,renderCache:y,props:b,data:h,setupState:E,ctx:_,inheritAttrs:m}=e,C=Uo(e),N,O;try{if(o.shapeFlag&4){let U=s||i,z=U;N=$t(g.call(z,U,y,b,E,h,_)),O=c}else{let U=t;N=$t(U.length>1?U(b,{attrs:c,slots:a,emit:f}):U(b,null)),O=t.props?c:Iu(c)}}catch(U){dn.length=0,lo(U,e,1),N=Ee(Tt)}let q=N,L;if(O&&m!==!1){let U=Object.keys(O),{shapeFlag:z}=q;U.length&&z&7&&(r&&U.some(bn)&&(O=Vu(O,r)),q=Rn(q,O,!1,!0))}if(o.dirs&&(q=Rn(q,null,!1,!0),q.dirs=q.dirs?q.dirs.concat(o.dirs):o.dirs),o.transition){let U=zo(q.type)&&Sr(q)||q;oo(U,o.transition)}return N=q,Uo(C),N}function Mr(e,t=!0){let o;for(let i=0;i{let t;for(let o in e)(o==="class"||o==="style"||yn(o))&&((t||(t={}))[o]=e[o]);return t},Vu=(e,t)=>{let o={};for(let i in e)(!bn(i)||!(i.slice(9)in t))&&(o[i]=e[i]);return o};function qu(e,t,o){let{props:i,children:s,component:r}=e,{props:a,children:c,patchFlag:f}=t,g=r.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&f>=0){if(f&1024)return!0;if(f&16)return i?lr(i,a,g):!!a;if(f&8){let y=t.dynamicProps;for(let b=0;bObject.create($r),Fr=e=>Object.getPrototypeOf(e)===$r;function Uu(e,t,o,i=!1){let s={},r=Lr();e.propsDefaults=Object.create(null),Br(e,t,s,r);for(let a in e.propsOptions[0])a in s||(s[a]=void 0);o?e.props=i?s:Yn(s):e.type.props?e.props=s:e.props=r,e.attrs=r}function $u(e,t,o,i){let{props:s,attrs:r,vnode:{patchFlag:a}}=e,c=Re(s),[f]=e.propsOptions,g=!1;if((i||a>0)&&!(a&16)){if(a&8){let y=e.vnode.dynamicProps;for(let b=0;b{f=!0;let[h,E]=Hr(b,t,!0);je(a,h),E&&c.push(...E)};!o&&t.mixins.length&&t.mixins.forEach(y),e.extends&&y(e.extends),e.mixins&&e.mixins.forEach(y)}if(!r&&!f)return Te(e)&&i.set(e,xt),xt;if(he(r))for(let y=0;ye==="_"||e==="_ctx"||e==="$stable",Ks=e=>he(e)?e.map($t):[$t(e)],Fu=(e,t,o)=>{if(t._n)return t;let i=au((...s)=>Ks(t(...s)),o);return i._c=!1,i},zr=(e,t,o)=>{let i=e._ctx;for(let s in e){if(Ws(s))continue;let r=e[s];if(ye(r))t[s]=Fu(s,r,i);else if(r!=null){let a=Ks(r);t[s]=()=>a}}},jr=(e,t)=>{let o=Ks(t);e.slots.default=()=>o},Gr=(e,t,o)=>{for(let i in t)(o||!Ws(i))&&(e[i]=t[i])},Bu=(e,t,o)=>{let i=e.slots=Lr();if(e.vnode.shapeFlag&32){let s=t._;s?(Gr(i,t,o),o&&Eo(i,"_",s,!0)):zr(t,i)}else t&&jr(e,t)},Hu=(e,t,o)=>{let{vnode:i,slots:s}=e,r=!0,a=Oe;if(i.shapeFlag&32){let c=t._;c?o&&c===1?r=!1:Gr(s,t,o):(r=!t.$stable,zr(t,s)),a=t}else t&&(jr(e,t),a={default:1});if(r)for(let c in s)!Ws(c)&&a[c]==null&&delete s[c]};function zu(){let e=[]}var lt=Ku;function Wr(e){return ju(e)}function ju(e,t){zu();let o=$n();o.__VUE__=!0;let{insert:i,remove:s,patchProp:r,createElement:a,createText:c,createComment:f,setText:g,setElementText:y,parentNode:b,nextSibling:h,setScopeId:E=rt,insertStaticContent:_}=e,m=(k,S,M,j=null,w=null,T=null,A=void 0,I=null,B=!!S.dynamicChildren)=>{if(k===S)return;k&&!Qn(k,S)&&(j=ee(k),Ne(k,w,T,!0),k=null),S.patchFlag===-2&&(B=!1,S.dynamicChildren=null),S.dynamicChildren&&k&&k.dynamicChildren&&k.dynamicChildren.hasOnce&&(S.dynamicChildren===xt&&(S.dynamicChildren=[]),S.dynamicChildren.hasOnce=!0);let{type:F,ref:se,shapeFlag:Z}=S;switch(F){case Ko:C(k,S,M,j);break;case Tt:N(k,S,M,j);break;case to:k==null&&O(S,M,j,A);break;case K:G(k,S,M,j,w,T,A,I,B);break;default:Z&1?z(k,S,M,j,w,T,A,I,B):Z&6?J(k,S,M,j,w,T,A,I,B):(Z&64||Z&128)&&F.process(k,S,M,j,w,T,A,I,B,oe)}se!=null&&w?Zn(se,k&&k.ref,T,S||k,!S):se==null&&k&&k.ref!=null&&Zn(k.ref,null,T,k,!0)},C=(k,S,M,j)=>{if(k==null)i(S.el=c(S.children),M,j);else{let w=S.el=k.el;S.children!==k.children&&g(w,S.children)}},N=(k,S,M,j)=>{k==null?i(S.el=f(S.children||""),M,j):S.el=k.el},O=(k,S,M,j)=>{[k.el,k.anchor]=_(k.children,S,M,j,k.el,k.anchor)},q=(k,S,M,j)=>{if(S.children!==k.children){let w=h(k.anchor);U(k),[S.el,S.anchor]=_(S.children,M,w,j)}else S.el=k.el,S.anchor=k.anchor},L=({el:k,anchor:S},M,j)=>{let w;for(;k&&k!==S;)w=h(k),i(k,M,j),k=w;i(S,M,j)},U=({el:k,anchor:S})=>{let M;for(;k&&k!==S;)M=h(k),s(k),k=M;s(S)},z=(k,S,M,j,w,T,A,I,B)=>{if(S.type==="svg"?A="svg":S.type==="math"&&(A="mathml"),k==null)ne(S,M,j,w,T,A,I,B);else{let F=k.el&&k.el._isVueCE?k.el:null;try{F&&F._beginPatch(),V(k,S,w,T,A,I,B)}finally{F&&F._endPatch()}}},ne=(k,S,M,j,w,T,A,I)=>{let B,F,{props:se,shapeFlag:Z,transition:re,dirs:me}=k;if(B=k.el=a(k.type,T,se&&se.is,se),Z&8?y(B,k.children):Z&16&&R(k.children,B,null,j,w,Ms(k,T),A,I),me&&an(k,null,j,"created"),x(B,k,k.scopeId,A,j),se){for(let qe in se)qe!=="value"&&!wn(qe)&&r(B,qe,null,se[qe],T,j);"value"in se&&r(B,"value",null,se.value,T),(F=se.onVnodeBeforeMount)&&Mt(F,j,k)}me&&an(k,null,j,"beforeMount");let we=Gu(w,re);we&&re.beforeEnter(B),i(B,S,M),((F=se&&se.onVnodeMounted)||we||me)&<(()=>{let Pe;F&&Mt(F,j,k),we&&re.enter(B),me&&an(k,null,j,"mounted")},w)},x=(k,S,M,j,w)=>{if(M&&E(k,M),j)for(let T=0;T{for(let F=B;F{let I=S.el=k.el,{patchFlag:B,dynamicChildren:F,dirs:se}=S;B|=k.patchFlag&16;let Z=k.props||Oe,re=S.props||Oe,me;if(M&&ln(M,!1),(me=re.onVnodeBeforeUpdate)&&Mt(me,M,S,k),se&&an(S,k,M,"beforeUpdate"),M&&ln(M,!0),F&&(!k.dynamicChildren||k.dynamicChildren.length!==F.length)&&(B=0,A=!1,F=null),(Z.innerHTML&&re.innerHTML==null||Z.textContent&&re.textContent==null)&&y(I,""),F?Y(k.dynamicChildren,F,I,M,j,Ms(S,w),T):A||_e(k,S,I,null,M,j,Ms(S,w),T,!1),B>0){if(B&16)X(I,Z,re,M,w);else if(B&2&&Z.class!==re.class&&r(I,"class",null,re.class,w),B&4&&r(I,"style",Z.style,re.style,w),B&8){let we=S.dynamicProps;for(let qe=0;qe{me&&Mt(me,M,S,k),se&&an(S,k,M,"updated")},j)},Y=(k,S,M,j,w,T,A)=>{for(let I=0;I{if(S!==M){if(S!==Oe)for(let T in S)!wn(T)&&!(T in M)&&r(k,T,S[T],null,w,j);for(let T in M){if(wn(T))continue;let A=M[T],I=S[T];A!==I&&T!=="value"&&r(k,T,I,A,w,j)}"value"in M&&r(k,"value",S.value,M.value,w)}},G=(k,S,M,j,w,T,A,I,B)=>{let F=S.el=k?k.el:c(""),se=S.anchor=k?k.anchor:c(""),{patchFlag:Z,dynamicChildren:re,slotScopeIds:me}=S;me&&(I=I?I.concat(me):me),k==null?(i(F,M,j),i(se,M,j),R(S.children||[],M,se,w,T,A,I,B)):Z>0&&Z&64&&re&&k.dynamicChildren&&k.dynamicChildren.length===re.length?(Y(k.dynamicChildren,re,M,w,T,A,I),(S.key!=null||w&&S===w.subTree)&&Kr(k,S,!0)):_e(k,S,M,se,w,T,A,I,B)},J=(k,S,M,j,w,T,A,I,B)=>{S.slotScopeIds=I,k==null?S.shapeFlag&512?w.ctx.activate(S,M,j,A,B):ie(S,M,j,w,T,A,B):ue(k,S,B)},ie=(k,S,M,j,w,T,A)=>{let I=k.component=xu(k,j,w);if(jo(k)&&(I.ctx.renderer=oe),ec(I,!1,A),I.asyncDep){if(w&&w.registerDep(I,de,A,T),!k.el){let B=I.subTree=Ee(Tt);N(null,B,S,M),k.placeholder=B.el}}else de(I,k,S,M,w,T,A)},ue=(k,S,M)=>{let j=S.component=k.component;if(qu(k,S,M))if(j.asyncDep&&!j.asyncResolved){S.el=k.el,S.placeholder=k.placeholder,le(j,S,M);return}else j.next=S,j.update();else S.el=k.el,S.placeholder=k.placeholder,j.vnode=S},de=(k,S,M,j,w,T,A)=>{let I=()=>{if(k.isMounted){let{next:Z,bu:re,u:me,parent:we,vnode:qe}=k;{let ct=Yr(k);if(ct){Z&&(Z.el=qe.el,le(k,Z,A)),ct.asyncDep.then(()=>{lt(()=>{k.isUnmounted||F()},w)});return}}let Pe=Z,We;ln(k,!1),Z?(Z.el=qe.el,le(k,Z,A)):Z=qe,re&&kn(re),(We=Z.props&&Z.props.onVnodeBeforeUpdate)&&Mt(We,we,Z,qe),ln(k,!0);let Ye=qs(k),Et=k.subTree;k.subTree=Ye,m(Et,Ye,b(Et.el),ee(Et),k,w,T),Z.el=Ye.el,Pe===null&&Mu(k,Ye.el),me&<(me,w),(We=Z.props&&Z.props.onVnodeUpdated)&<(()=>Mt(We,we,Z,qe),w)}else{let Z,{el:re,props:me}=S,{bm:we,m:qe,parent:Pe,root:We,type:Ye}=k,Et=xn(S);if(ln(k,!1),we&&kn(we),!Et&&(Z=me&&me.onVnodeBeforeMount)&&Mt(Z,Pe,S),ln(k,!0),re&&Ce){let ct=()=>{k.subTree=qs(k),Ce(re,k.subTree,k,w,null)};Et&&Ye.__asyncHydrate?Ye.__asyncHydrate(re,k,ct):ct()}else{We.ce&&We.ce._hasShadowRoot()&&We.ce._injectChildStyle(Ye,k.parent?k.parent.type:void 0);let ct=k.subTree=qs(k);m(null,ct,M,j,k,w,T),S.el=ct.el}if(qe&<(qe,w),!Et&&(Z=me&&me.onVnodeMounted)){let ct=S;lt(()=>Mt(Z,Pe,ct),w)}(S.shapeFlag&256||Pe&&xn(Pe.vnode)&&Pe.vnode.shapeFlag&256)&&k.a&<(k.a,w),k.isMounted=!0,S=M=j=null}};k.scope.on();let B=k.effect=new Sn(I);k.scope.off();let F=k.update=B.run.bind(B),se=k.job=B.runIfDirty.bind(B);se.i=k,se.id=k.uid,B.scheduler=()=>zs(se),ln(k,!0),F()},le=(k,S,M)=>{S.component=k;let j=k.vnode.props;k.vnode=S,k.next=null,$u(k,S.props,j,M),Hu(k,S.children,M),Nt(),yr(k),Rt()},_e=(k,S,M,j,w,T,A,I,B=!1)=>{let F=k&&k.children,se=k?k.shapeFlag:0,Z=S.children,{patchFlag:re,shapeFlag:me}=S;if(re>0){if(re&128){$e(F,Z,M,j,w,T,A,I,B);return}else if(re&256){Ve(F,Z,M,j,w,T,A,I,B);return}}me&8?(se&16&&H(F,w,T),Z!==F&&y(M,Z)):se&16?me&16?$e(F,Z,M,j,w,T,A,I,B):H(F,w,T,!0):(se&8&&y(M,""),me&16&&R(Z,M,j,w,T,A,I,B))},Ve=(k,S,M,j,w,T,A,I,B)=>{k=k||xt,S=S||xt;let F=k.length,se=S.length,Z=Math.min(F,se),re;for(re=0;rese?H(k,w,T,!0,!1,Z):R(S,M,j,w,T,A,I,B,Z)},$e=(k,S,M,j,w,T,A,I,B)=>{let F=0,se=S.length,Z=k.length-1,re=se-1;for(;F<=Z&&F<=re;){let me=k[F],we=S[F]=B?Kt(S[F]):$t(S[F]);if(Qn(me,we))m(me,we,M,null,w,T,A,I,B);else break;F++}for(;F<=Z&&F<=re;){let me=k[Z],we=S[re]=B?Kt(S[re]):$t(S[re]);if(Qn(me,we))m(me,we,M,null,w,T,A,I,B);else break;Z--,re--}if(F>Z){if(F<=re){let me=re+1,we=mere)for(;F<=Z;)Ne(k[F],w,T,!0),F++;else{let me=F,we=F,qe=new Map;for(F=we;F<=re;F++){let pt=S[F]=B?Kt(S[F]):$t(S[F]);pt.key!=null&&qe.set(pt.key,F)}let Pe,We=0,Ye=re-we+1,Et=!1,ct=0,Vn=new Array(Ye);for(F=0;F=Ye){Ne(pt,w,T,!0);continue}let At;if(pt.key!=null)At=qe.get(pt.key);else for(Pe=we;Pe<=re;Pe++)if(Vn[Pe-we]===0&&Qn(pt,S[Pe])){At=Pe;break}At===void 0?Ne(pt,w,T,!0):(Vn[At-we]=F+1,At>=ct?ct=At:Et=!0,m(pt,S[At],M,null,w,T,A,I,B),We++)}let bi=Et?Wu(Vn):xt;for(Pe=bi.length-1,F=Ye-1;F>=0;F--){let pt=we+F,At=S[pt],wi=S[pt+1],ki=pt+1{let{el:T,type:A,transition:I,children:B,shapeFlag:F}=k;if(F&6){De(k.component.subTree,S,M,j);return}if(F&128){k.suspense.move(S,M,j);return}if(F&64){A.move(k,S,M,oe);return}if(A===K){i(T,S,M);for(let Z=0;ZI.enter(T),w));else{let{leave:Z,delayLeave:re,afterLeave:me}=I,we=()=>{k.ctx.isUnmounted?s(T):i(T,S,M)},qe=()=>{let Pe=T._isLeaving||!!T[Is];T._isLeaving&&T[Is](!0),I.persisted&&!Pe?we():Z(T,()=>{we(),me&&me()})};re?re(T,we,qe):qe()}else i(T,S,M)},Ne=(k,S,M,j=!1,w=!1)=>{let{type:T,props:A,ref:I,children:B,dynamicChildren:F,shapeFlag:se,patchFlag:Z,dirs:re,cacheIndex:me,memo:we}=k;if((Z===-2||F&&F.hasOnce)&&(w=!1),I!=null&&(Nt(),Zn(I,null,M,k,!0),Rt()),me!=null&&(!k.ctx||k.ctx===S)&&(S.renderCache[me]=void 0),se&256){S.ctx.deactivate(k);return}let qe=se&1&&re,Pe=!xn(k),We;if(Pe&&(We=A&&A.onVnodeBeforeUnmount)&&Mt(We,S,k),se&6)ke(k.component,M,j);else{if(se&128){k.suspense.unmount(M,j);return}qe&&an(k,null,S,"beforeUnmount"),se&64?k.type.remove(k,S,M,oe,j):F&&!F.hasOnce&&(T!==K||Z>0&&Z&64)?H(F,S,M,!1,!0):(T===K&&Z&384||!w&&se&16)&&H(B,S,M),j&&Be(k)}let Ye=we!=null&&me==null;(Pe&&(We=A&&A.onVnodeUnmounted)||qe||Ye)&<(()=>{We&&Mt(We,S,k),qe&&an(k,null,S,"unmounted"),Ye&&(k.el=null)},M)},Be=k=>{let{type:S,el:M,anchor:j,transition:w}=k,T=S===K;if(T&&!w){Me(M,j);return}if(S===to){U(k),w&&!w.persisted&&w.afterLeave&&w.afterLeave();return}let A=T?Us(k):k,I=()=>{T?b(M)&&Me(M,j):s(M),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(A&&A.shapeFlag&1&&w&&!w.persisted){let{leave:B,delayLeave:F}=w,se=A.el,Z=()=>B(se,I);F?F(se,I,Z):Z()}else I()},Me=(k,S)=>{let M;for(;k!==S;)M=h(k),s(k),k=M;s(S)},ke=(k,S,M)=>{let{bum:j,scope:w,job:T,subTree:A,um:I,m:B,a:F}=k;ur(B),ur(F),j&&kn(j),w.stop(),T?(T.flags|=8,Ne(A,k,S,M)):k.vnode.el&&A&&(A.transition=k.vnode.transition,Ne(A,k,S,M)),I&<(I,S),lt(()=>{k.isUnmounted=!0},S)},H=(k,S,M,j=!1,w=!1,T=0)=>{for(let A=T;A{if(k.shapeFlag&6)return ee(k.component.subTree);if(k.shapeFlag&128)return k.suspense.next();let S=h(k.anchor||k.el),M=S&&S[cu];return M?h(M):S},Q=(k,S,M)=>{let j=k&&S._vnode?void 0:k&&k.component?k.component.uid:Zu();ru(()=>{k==null?S._vnode&&Ne(S._vnode,null,null,!0):m(S._vnode||null,k,S,null,null,null,M),S._vnode=k},j)},oe={p:m,um:Ne,m:De,r:Be,mt:ie,mc:R,pc:_e,pbc:Y,n:ee,o:e},ve,Ce;return t&&([ve,Ce]=t(oe)),{render:Q,hydrate:ve,createApp:Tu(Q,ve)}}function Ms({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function ln({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Gu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Kr(e,t,o=!1){let i=e.children,s=t.children;if(he(i)&&he(s))for(let r=0;r>1,e[o[c]]0&&(t[i]=o[r-1]),o[r]=i)}}for(r=o.length,a=o[r-1];r-- >0;)o[r]=a,a=t[a];return o}function Yr(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yr(t)}function ur(e){if(e)for(let t=0;te.__isSuspense;function Ku(e,t){t&&t.pendingBranch?he(e)?t.effects.push(...e):t.effects.push(e):gr(e)}var K=Symbol.for("v-fgt"),Ko=Symbol.for("v-txt"),Tt=Symbol.for("v-cmt"),to=Symbol.for("v-stc"),dn=[],vt=null;function l(e=!1){dn.push(vt=e?null:[])}function Qr(){dn.pop(),vt=dn[dn.length-1]||null}var so=1;function Fo(e,t=!1){so+=e,e<0&&vt&&t&&(vt.hasOnce=!0)}function Xr(e){return e.dynamicChildren=so>0?vt||xt:null,Qr(),so>0&&vt&&vt.push(e),e}function d(e,t,o,i,s,r){return Xr(n(e,t,o,i,s,r,!0))}function Ft(e,t,o,i,s){return Xr(Ee(e,t,o,i,s,!0))}function io(e){return e?e.__v_isVNode===!0:!1}function Qn(e,t){return e.type===t.type&&e.key===t.key}var Zr=({key:e})=>e??null,qo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||Ze(e)||ye(e)?{i:mt,r:e,k:t,f:!!o}:e:null);function n(e,t=null,o=null,i=0,s=null,r=e===K?0:1,a=!1,c=!1){let f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zr(t),ref:t&&qo(t),scopeId:kr,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:mt};return c?(Bo(f,o),r&128&&e.normalize(f)):o&&(f.shapeFlag|=Le(o)?8:16),so>0&&!a&&vt&&(f.patchFlag>0||r&6)&&f.patchFlag!==32&&vt.push(f),f}var Ee=Yu;function Yu(e,t=null,o=null,i=0,s=null,r=!1){if((!e||e===ku)&&(e=Tt),io(e)){let c=Rn(e,t,!0);return o&&Bo(c,o),so>0&&!r&&vt&&(c.shapeFlag&6?vt[vt.indexOf(e)]=c:vt.push(c)),c.patchFlag=-2,c}if(ic(e)&&(e=e.__vccOpts),t){t=Ju(t);let{class:c,style:f}=t;c&&!Le(c)&&(t.class=P(c)),Te(f)&&(Jn(f)&&!he(f)&&(f=je({},f)),t.style=Ie(f))}let a=Le(e)?1:Jr(e)?128:zo(e)?64:Te(e)?4:ye(e)?2:0;return n(e,t,o,i,s,a,r,!0)}function Ju(e){return e?Jn(e)||Fr(e)?je({},e):e:null}function Rn(e,t,o=!1,i=!1){let{props:s,ref:r,patchFlag:a,children:c,transition:f}=e,g=t?Qu(s||{},t):s,y={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&Zr(g),ref:t&&t.ref?o&&r?he(r)?r.concat(qo(t)):[r,qo(t)]:qo(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:c,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==K?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Rn(e.ssContent),ssFallback:e.ssFallback&&Rn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return f&&i&&oo(y,f.clone(y)),y}function v(e=" ",t=0){return Ee(Ko,null,e,t)}function fe(e,t){let o=Ee(to,null,e);return o.staticCount=t,o}function p(e="",t=!1){return t?(l(),Ft(Tt,null,e)):Ee(Tt,null,e)}function $t(e){return e==null||typeof e=="boolean"?Ee(Tt):he(e)?Ee(K,null,e.slice()):io(e)?Kt(e):Ee(Ko,null,String(e))}function Kt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Rn(e)}function Bo(e,t){let o=0,{shapeFlag:i}=e;if(t==null)t=null;else if(he(t))o=16;else if(typeof t=="object")if(i&65){let s=t.default;s&&(s._c&&(s._d=!1),Bo(e,s()),s._c&&(s._d=!0));return}else{o=32;let s=t._;!s&&!Fr(t)?t._ctx=mt:s===3&&mt&&(mt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(ye(t)){if(i&65){Bo(e,{default:t});return}t={default:t,_ctx:mt},o=32}else t=String(t),i&64?(o=16,t=[v(t)]):o=8;e.children=t,e.shapeFlag|=o}function Qu(...e){let t={};for(let o=0;ott||mt,Ho,ro;{let e=$n(),t=(o,i)=>{let s;return(s=e[o])||(s=e[o]=[]),s.push(i),r=>{s.length>1?s.forEach(a=>a(r)):s[0](r)}};Ho=t("__VUE_INSTANCE_SETTERS__",o=>tt=o),ro=t("__VUE_SSR_SETTERS__",o=>Dn=o)}var po=e=>{let t=tt;return Ho(e),e.scope.on(),()=>{e.scope.off(),Ho(t)}},cr=()=>{tt&&tt.scope.off(),Ho(null)};function ea(e){return e.vnode.shapeFlag&4}var Dn=!1;function ec(e,t=!1,o=!1){t&&ro(t);let{props:i,children:s}=e.vnode,r=ea(e);Uu(e,i,r,t),Bu(e,s,o||t);let a=r?tc(e,t):void 0;return t&&ro(!1),a}function tc(e,t){let o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Eu);let{setup:i}=o;if(i){Nt();let s=e.setupContext=i.length>1?oc(e):null,r=po(e),a=ao(i,e,0,[e.props,s]),c=fs(a);if(Rt(),r(),(c||e.sp)&&!xn(e)&&js(e),c){if(a.then(cr,cr),t)return a.then(f=>{ro(!0);try{pr(e,f,t)}finally{ro(!1)}}).catch(f=>{lo(f,e,0)});e.asyncDep=a}else pr(e,a,t)}else ta(e,t)}function pr(e,t,o){ye(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=Io(t)),ta(e,o)}var fr,hr;function ta(e,t,o){let i=e.type;if(!e.render){if(!t&&fr&&!i.render){let s=i.template||Gs(e).template;if(s){let{isCustomElement:r,compilerOptions:a}=e.appContext.config,{delimiters:c,compilerOptions:f}=i,g=je(je({isCustomElement:r,delimiters:c},a),f);i.render=fr(s,g)}}e.render=i.render||rt,hr&&hr(e)}{let s=po(e);Nt();try{Cu(e)}finally{Rt(),s()}}}var nc={get(e,t){return xe(e,"get",""),e[t]}};function oc(e){let t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,nc),slots:e.slots,emit:e.emit,expose:t}}function Yo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Io(Os(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in eo)return eo[o](e)},has(t,o){return o in t||o in eo}})):e.proxy}function sc(e,t=!0){return ye(e)?e.displayName||e.name:e.name||t&&e.__name}function ic(e){return ye(e)&&"__vccOpts"in e}var nt=(e,t)=>Xi(e,t,Dn);function be(e,t,o){try{Fo(-1);let i=arguments.length;return i===2?Te(t)&&!he(t)?io(t)?Ee(e,null,[t]):Ee(e,t):Ee(e,null,t):(i>3?o=Array.prototype.slice.call(arguments,2):i===3&&io(o)&&(o=[o]),Ee(e,t,o))}finally{Fo(1)}}var rc="3.5.44";var Zs,na=typeof window<"u"&&window.trustedTypes;if(na)try{Zs=na.createPolicy("vue",{createHTML:e=>e})}catch{}var ha=Zs?e=>Zs.createHTML(e):e=>e,ac="http://www.w3.org/2000/svg",lc="http://www.w3.org/1998/Math/MathML",Jt=typeof document<"u"?document:null,oa=Jt&&Jt.createElement("template"),dc={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,i)=>{let s=t==="svg"?Jt.createElementNS(ac,e):t==="mathml"?Jt.createElementNS(lc,e):o?Jt.createElement(e,{is:o}):Jt.createElement(e);return e==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:e=>Jt.createTextNode(e),createComment:e=>Jt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Jt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,i,s,r){let a=o?o.previousSibling:t.lastChild;if(s&&(s===r||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),o),!(s===r||!(s=s.nextSibling)););else{oa.innerHTML=ha(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);let c=oa.content;if(i==="svg"||i==="mathml"){let f=c.firstChild;for(;f.firstChild;)c.appendChild(f.firstChild);c.removeChild(f)}t.insertBefore(c,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}};var uc=Symbol("_vtc");function cc(e,t,o){let i=e[uc];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}var Xo=Symbol("_vod"),ma=Symbol("_vsh"),W={name:"show",beforeMount(e,{value:t},{transition:o}){e[Xo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):fo(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:i}){!t!=!o&&(i?t?(i.beforeEnter(e),fo(e,!0),i.enter(e)):i.leave(e,()=>{fo(e,!1)}):fo(e,t))},beforeUnmount(e,{value:t}){fo(e,t)}};function fo(e,t){e.style.display=t?e[Xo]:"none",e[ma]=!t}var pc=Symbol("");var fc=/(?:^|;)\s*display\s*:/;function hc(e,t,o){let i=e.style,s=Le(o),r=!1;if(o&&!s){if(t)if(Le(t))for(let a of t.split(";")){let c=a.slice(0,a.indexOf(":")).trim();o[c]==null&&ho(i,c,"")}else for(let a in t)o[a]==null&&ho(i,a,"");for(let a in o){a==="display"&&(r=!0);let c=o[a];c!=null?vc(e,a,!Le(t)&&t?t[a]:void 0,c)||ho(i,a,c):ho(i,a,"")}}else if(s){if(t!==o){let a=i[pc];a&&(o+=";"+a),i.cssText=o,r=fc.test(o)}}else t&&e.removeAttribute("style");Xo in e&&((!s||t!==o)&&(e[Xo]=r?i.display:""),e[ma]&&(i.display="none"))}var Jo=/\s*!important$/;function ho(e,t,o){if(he(o))o.forEach(i=>ho(e,t,i));else if(o==null&&(o=""),t.startsWith("--"))Jo.test(o)?e.setProperty(t,o.replace(Jo,""),"important"):e.setProperty(t,o);else{let i=mc(e,t);Jo.test(o)?e.setProperty(Ot(i),o.replace(Jo,""),"important"):e[i]=o}}var sa=["Webkit","Moz","ms"],Js={};function mc(e,t){let o=Js[t];if(o)return o;let i=Je(t);if(i!=="filter"&&i in e)return Js[t]=i;i=on(i);for(let s=0;sQs||(Ec.then(()=>Qs=0),Qs=Date.now());function Sc(e,t){let o=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=o.attached)return;let s=o.value;if(he(s)){let r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};let a=s.slice(),c=[i];for(let f=0;fe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,_c=(e,t,o,i,s,r)=>{let a=s==="svg";t==="class"?cc(e,i,a):t==="style"?hc(e,o,i):yn(t)?bn(t)||yc(e,t,o,i,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nc(e,t,i,a))?(aa(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ra(e,t,i,a,r,t!=="value")):e._isVueCE&&(Rc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Le(i)))?aa(e,Je(t),i,r,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),ra(e,t,i,a))};function Nc(e,t,o,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&da(t)&&ye(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){let s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return da(t)&&Le(o)?!1:t in e}function Rc(e,t){let o=e._def.props;if(!o)return!1;let i=Je(t);return Array.isArray(o)?o.some(s=>Je(s)===i):Object.keys(o).some(s=>Je(s)===i)}var Tn=e=>{let t=e.props["onUpdate:modelValue"]||!1;return he(t)?o=>kn(t,o):t};function Dc(e){e.target.composing=!0}function ua(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}var Bt=Symbol("_assign"),Qo=Symbol("_initialValue");function Xs(e,t,o){return t&&(e=e.trim()),o&&(e=En(e)),e}var wt={created(e,{modifiers:{lazy:t,trim:o,number:i}},s){e.parentNode&&(e.type==="text"?e[Qo]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Qo]=e.defaultValue.replace(/\r\n?/g,` -`))),e[Bt]=Tn(s);let r=i||s.props&&s.props.type==="number";tn(e,t?"change":"input",a=>{a.target.composing||e[Bt](Xs(e.value,o,r))}),(o||r)&&tn(e,"change",()=>{e.value=Xs(e.value,o,r)}),t||(tn(e,"compositionstart",Dc),tn(e,"compositionend",ua),tn(e,"change",ua))},mounted(e,{value:t,modifiers:{trim:o,number:i}}){let s=t??"",r=e[Qo];delete e[Qo],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[Bt](Xs(e.value,o,i)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:i,trim:s,number:r}},a){if(e[Bt]=Tn(a),e.composing)return;let c=(r||e.type==="number")&&!/^0\d/.test(e.value)?En(e.value):e.value,f=t??"";if(c===f)return;let g=e.getRootNode();(g instanceof Document||g instanceof ShadowRoot)&&g.activeElement===e&&e.type!=="range"&&(i&&t===o||s&&e.value.trim()===f)||(e.value=f)}},xs={deep:!0,created(e,t,o){e[Bt]=Tn(o),tn(e,"change",()=>{let i=e._modelValue,s=mo(e),r=e.checked,a=e[Bt];if(he(i)){let c=So(i,s),f=c!==-1;if(r&&!f)a(i.concat(s));else if(!r&&f){let g=[...i];g.splice(c,1),a(g)}}else if(Ct(i)){let c=new Set(i);r?c.add(s):c.delete(s),a(c)}else a(va(e,r))})},mounted:ca,beforeUpdate(e,t,o){e[Bt]=Tn(o),ca(e,t,o)}};function ca(e,{value:t,oldValue:o},i){e._modelValue=t;let s;if(he(t))s=So(t,i.props.value)>-1;else if(Ct(t))s=t.has(i.props.value);else{if(t===o)return;s=St(t,va(e,!0))}e.checked!==s&&(e.checked=s)}var pn={deep:!0,created(e,{value:t,modifiers:{number:o}},i){e._modelValue=t,tn(e,"change",()=>{let s=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>o?En(mo(f)):mo(f)),r=e.multiple,a=r?Ct(e._modelValue)?new Set(s):s:s[0],c=e._pendingValue=[r,r?he(a)?s.slice():s:a];try{e[Bt](a)}finally{Ke(()=>{e._pendingValue===c&&(e._pendingValue=void 0)})}}),e[Bt]=Tn(i)},mounted(e,{value:t}){pa(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[Bt]=Tn(o)},updated(e,{value:t}){let o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!Tc(t,o[1],o[0]))&&pa(e,t)}};function Tc(e,t,o){if(!o)return St(e,t);if(he(e))return St(e,t);if(Ct(e)){if(e.size!==t.length)return!1;for(let i of t)if(!e.has(i))return!1;return!0}return!1}function pa(e,t){let o=e.multiple,i=he(t);if(!(o&&!i&&!Ct(t))){for(let s=0,r=e.options.length;sString(g)===String(c)):a.selected=So(t,c)>-1}else a.selected=t.has(c);else if(St(mo(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function mo(e){return"_value"in e?e._value:e.value}function va(e,t){let o=t?"_trueValue":"_falseValue";return o in e?e[o]:t}var Ac=["ctrl","shift","alt","meta"],Oc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ac.some(o=>e[`${o}Key`]&&!t.includes(o))},ae=(e,t)=>{if(!e)return e;let o=e._withMods||(e._withMods={}),i=t.join(".");return o[i]||(o[i]=((s,...r)=>{for(let a=0;a{let o=e._withKeys||(e._withKeys={}),i=t.join(".");return o[i]||(o[i]=(s=>{if(!("key"in s))return;let r=Ot(s.key);if(t.some(a=>a===r||Pc[a]===r))return e(s)}))},Ic=je({patchProp:_c},dc),fa;function Vc(){return fa||(fa=Wr(Ic))}var ga=((...e)=>{let t=Vc().createApp(...e),{mount:o}=t;return t.mount=i=>{let s=Mc(i);if(!s)return;let r=t._component;!ye(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=o(s,!1,qc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function qc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Mc(e){return Le(e)?document.querySelector(e):e}var mn=typeof document<"u";function ba(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ba(e.default)}var Ae=Object.assign;function Zo(e,t){let o={};for(let i in t){let s=t[i];o[i]=kt(s)?s.map(e):e(s)}return o}var Pn=()=>{},kt=Array.isArray;function ni(e,t){let o={};for(let i in e)o[i]=i in t?t[i]:e[i];return o}var wa=/#/g,$c=/&/g,Lc=/\//g,Fc=/=/g,Bc=/\?/g,ka=/\+/g,Hc=/%5B/g,zc=/%5D/g,Ea=/%5E/g,jc=/%60/g,Ca=/%7B/g,Gc=/%7C/g,Sa=/%7D/g,Wc=/%20/g;function oi(e){return e==null?"":encodeURI(""+e).replace(Gc,"|").replace(Hc,"[").replace(zc,"]")}function _a(e){return oi(e).replace(Ca,"{").replace(Sa,"}").replace(Ea,"^")}function ei(e){return oi(e).replace(ka,"%2B").replace(Wc,"+").replace(wa,"%23").replace($c,"%26").replace(jc,"`").replace(Ca,"{").replace(Sa,"}").replace(Ea,"^")}function Kc(e){return ei(e).replace(Fc,"%3D")}function Yc(e){return oi(e).replace(wa,"%23").replace(Bc,"%3F")}function Na(e){return Yc(e).replace(Lc,"%2F")}function On(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Jc=/\/$/,Qc=e=>e.replace(Jc,"");function xo(e,t,o="/"){let i,s={},r="",a="",c=t.indexOf("#"),f=t.indexOf("?");return f=c>=0&&f>c?-1:f,f>=0&&(i=t.slice(0,f),r=t.slice(f,c>0?c:t.length),s=e(r.slice(1))),c>=0&&(i=i||t.slice(0,c),a=t.slice(c,t.length)),i=Zc(i??t,o),{fullPath:i+r+a,path:i,query:s,hash:On(a)}}function Ra(e,t){let o=t.query?e(t.query):"";return t.path+(o&&"?")+o+(t.hash||"")}function si(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Da(e,t,o){let i=t.matched.length-1,s=o.matched.length-1;return i>-1&&i===s&&fn(t.matched[i],o.matched[s])&&ii(t.params,o.params)&&e(t.query)===e(o.query)&&t.hash===o.hash}function fn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ii(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var o in e)if(!Xc(e[o],t[o]))return!1;return!0}function Xc(e,t){return kt(e)?ya(e,t):kt(t)?ya(t,e):e?.valueOf()===t?.valueOf()}function ya(e,t){return kt(t)?e.length===t.length&&e.every((o,i)=>o===t[i]):e.length===1&&e[0]===t}function Zc(e,t){if(e.startsWith("/"))return e;if(!e)return t;let o=t.split("/"),i=e.split("/"),s=i[i.length-1];(s===".."||s===".")&&i.push("");let r=o.length-1,a,c;for(a=0;a1&&r--;else break;return o.slice(0,r).join("/")+"/"+i.slice(a).join("/")}var Xt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},es=(function(e){return e.pop="pop",e.push="push",e})({}),ts=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Ta(e){if(!e)if(mn){let t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Qc(e)}var xc=/^[^#]+#/;function Aa(e,t){return e.replace(xc,"#")+t}function ep(e,t){let o=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-o.left-(t.left||0),top:i.top-o.top-(t.top||0)}}var vo=()=>({left:window.scrollX,top:window.scrollY});function Oa(e){let t;if("el"in e){let o=e.el,i=typeof o=="string"&&o.startsWith("#"),s=typeof o=="string"?i?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!s)return;t=ep(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function ri(e,t){return(history.state?history.state.position-t:-1)+e}var ti=new Map;function Pa(e,t){ti.set(e,t)}function Ia(e){let t=ti.get(e);return ti.delete(e),t}function tp(e){return typeof e=="string"||e&&typeof e=="object"}function ai(e){return typeof e=="string"||typeof e=="symbol"}var ze=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({}),Va=Symbol("");var NL={[ze.MATCHER_NOT_FOUND]({location:e,currentLocation:t}){return`No match for +"use strict";(()=>{var Sd=Object.defineProperty;var _d=(e,t)=>{for(var o in t)Sd(e,o,{get:t[o],enumerable:!0})};var ce=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var pe={markdown:"/script/markdown.6c8dfb7b1d.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",editor:"/script/editor.4f142d3adc.min.js"};function Ei(e){let t=e.location.hash.slice(1);if(e.history.replaceState(null,"","/review-link"),t.length>2048)return null;let o=new URLSearchParams(t);if([...o.keys()].length!==3||[...o.keys()].some(a=>!["clientId","intentId","token"].includes(a)))return null;let i=o.get("clientId"),s=o.get("intentId"),r=o.get("token");return!/^[a-f0-9]{32}$/.test(i||"")||!/^[a-f0-9]{32}$/.test(s||"")||!/^[a-f0-9]{64}$/.test(r||"")?null:{contract:"4open.artifacts/1",clientId:i,intentId:s,token:r}}function Ci(e,t){let{http:o,promises:i,window:s}=t,r=t.takeReviewHandoff(),a=r?{clientId:r.clientId,intentId:r.intentId}:null,c,f,g,y,b,h=!0,E,_=i.defer(),m=()=>[...s.crypto.getRandomValues(new Uint8Array(16))].map(U=>U.toString(16).padStart(2,"0")).join("");Object.assign(e,{repositoryId:"",handoffEnabled:!1,busy:!1,preview:null,acceptAccess:!1,acceptRetention:!1,uncertain:!1,saved:!1,expired:!1,error:r?"":"Open a new artifact link from your submission. This link is missing or invalid."});let C=()=>h&&e.user?.username===b;function N(){h=!1,r=c=f=void 0,_.resolve(),s.clearTimeout(E)}e.on("dispose",N),e.on("routeLeave",N),e.watch(()=>e.user?.username,U=>{!b&&U?b=U:b&&U!==b&&(N(),e.preview=null,e.repositoryId="",e.busy=!1,e.saved=!1,e.handoffEnabled=!1,e.error="Your account changed. Open a new artifact link from your submission.")});let A=()=>({timeout:_.promise,headers:{"Content-Type":"application/json","X-Review-CSRF":f}}),M=U=>U?.status===404?"Artifact linking is not available on this server.":U?.status===401?"Sign in, then open a new artifact link from your submission.":U?.status===403?"This account cannot approve this repository or this link.":"The request could not be completed. You can retry from this page.";e.loadPreview=async()=>{if(!h||!r||e.busy||e.uncertain||e.saved||!e.user?.username)return;b=e.user.username;let U=e.repositoryId.trim();if(!/^[A-Za-z0-9_-]{3,128}$/.test(U)){e.error="Enter the anonymous repository ID from its URL.";return}e.busy=!0,e.error="",e.preview=null,c=void 0,e.acceptAccess=e.acceptRetention=!1,e.expired=!1,s.clearTimeout(E),y||(y=m());try{let q=(await o.get("/api/review-consent/csrf",{timeout:_.promise})).data;if(!C())return;if(f=q.csrf,e.handoffEnabled=q.handoffEnabled===!0,!/^[a-f0-9]{64}$/.test(f||""))throw new Error("invalid_csrf");let B=(await o.post("/api/review-consent/preview",{repositoryId:U,intent:{...r,requestId:y}},A())).data;if(!C())return;if(!B||typeof B.ticket!="string"||!B.ticket||B.ticket.length>8192||typeof B.repositoryName!="string"||!["restricted-review","anonymous-link"].includes(B.policy?.access)||!Number.isSafeInteger(B.policy.version)||!Number.isFinite(Date.parse(B.policy.retainUntil))||!Number.isFinite(Date.parse(B.expiresAt))||Date.parse(B.expiresAt)<=Date.now()||Date.parse(B.expiresAt)>Date.now()+6e5)throw new Error("invalid_preview");c=B.ticket,g=m(),e.preview={repositoryName:B.repositoryName,policy:{...B.policy},expiresAt:B.expiresAt},E=s.setTimeout(()=>{h&&(e.expired=!0)},Math.max(0,Date.parse(B.expiresAt)-Date.now()))}catch(q){C()&&(e.error=M(q))}finally{C()&&(e.busy=!1)}},e.confirmConsent=async()=>{if(!(!C()||e.busy||e.saved||!c||!e.acceptAccess||!e.acceptRetention)){if(Date.parse(e.preview.expiresAt)<=Date.now()){e.expired=!0;return}e.busy=!0,e.error="";try{let U=(await o.post("/api/review-consent/confirm",{ticket:c,requestId:g,acceptAccess:!0,acceptRetention:!0},A())).data;if(!C())return;if(U?.requestId!==g||!Number.isFinite(Date.parse(U.confirmedAt)))throw new Error("invalid_receipt");e.saved=!0,e.uncertain=!1,r=void 0,e.handoffEnabled||(c=void 0)}catch{C()&&(e.uncertain=!0,e.error="The confirmation was not verified. Retry with the same approval, or return to your submission to check its status.")}finally{C()&&(e.busy=!1)}}},e.continueReview=async()=>{if(!C()||e.busy||!e.saved||!e.handoffEnabled||!c||!a)return;e.busy=!0,e.error="";let U,q=()=>{U?.remove(),s.removeEventListener("securitypolicyviolation",B)},B=oe=>{oe.violatedDirective?.startsWith("form-action")&&(q(),C()&&(e.busy=!1,e.error="The return address was blocked. Return to your submission to check the artifact status."))};try{let oe=(await o.post("/api/review-consent/handoff",{ticket:c},A())).data;if(!C())return;let ee=oe?.completion,R=new URL(oe?.callbackUrl);if(!ee||Object.keys(ee).sort().join(",")!=="clientId,code,contract,expiresAt,intentId"||ee.contract!=="4open.artifacts/1"||ee.clientId!==a.clientId||ee.intentId!==a.intentId||!/^[a-f0-9]{64}$/.test(ee.code||"")||!Number.isFinite(Date.parse(ee.expiresAt))||Date.parse(ee.expiresAt)<=Date.now()||Date.parse(ee.expiresAt)>Date.now()+3e5||R.protocol!=="https:"||R.href!==oe.callbackUrl||R.username||R.password||oe.callbackUrl.includes("?")||oe.callbackUrl.includes("#"))throw new Error("invalid_handoff");U=s.document.createElement("form"),U.method="POST",U.action=R.href;let j=s.document.createElement("input");j.type="hidden",j.name="completion",j.value=JSON.stringify(ee),U.appendChild(j),s.document.body.appendChild(U),s.addEventListener("securitypolicyviolation",B),e.on("dispose",q),U.submit()}catch{q(),C()&&(e.busy=!1,e.error="The return to review could not be prepared. Retry from this page, or return to your submission to check its status.")}}}var yo=new Map,Dd=pe;function nn(e){if(!yo.has(e)){let t=document.createElement("script");t.src=Dd[e];let o=new Promise((i,s)=>{t.onload=i,t.onerror=()=>{yo.delete(e),t.remove(),s(new Error(`Unable to load ${e}. Please retry.`))}});yo.set(e,o),document.head.appendChild(t)}return yo.get(e)}async function Si(){await nn("editor"),ace.config.set("basePath","/script/external/ace/")}function gn(e){let t=Object.create(null);for(let o of e.split(","))t[o]=1;return o=>o in t}var Pe={},xt=[],rt=()=>{},ps=()=>!1,yn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),bn=e=>e.startsWith("onUpdate:"),je=Object.assign,qn=(e,t)=>{let o=e.indexOf(t);o>-1&&e.splice(o,1)},Td=Object.prototype.hasOwnProperty,Ne=(e,t)=>Td.call(e,t),he=Array.isArray,zt=e=>Mn(e)==="[object Map]",Ct=e=>Mn(e)==="[object Set]",_i=e=>Mn(e)==="[object Date]";var ye=e=>typeof e=="function",Le=e=>typeof e=="string",ft=e=>typeof e=="symbol",De=e=>e!==null&&typeof e=="object",fs=e=>(De(e)||ye(e))&&ye(e.then)&&ye(e.catch),Ti=Object.prototype.toString,Mn=e=>Ti.call(e),hs=e=>Mn(e).slice(8,-1),bo=e=>Mn(e)==="[object Object]",wo=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,wn=gn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var ko=e=>{let t=Object.create(null);return(o=>t[o]||(t[o]=e(o)))},Ad=/-\w/g,Je=ko(e=>e.replace(Ad,t=>t.slice(1).toUpperCase())),Od=/\B([A-Z])/g,Ot=ko(e=>e.replace(Od,"-$1").toLowerCase()),on=ko(e=>e.charAt(0).toUpperCase()+e.slice(1)),Un=ko(e=>e?`on${on(e)}`:""),gt=(e,t)=>!Object.is(e,t),kn=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:o})},En=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var Ni,$n=()=>Ni||(Ni=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function qe(e){if(he(e)){let t={};for(let o=0;oo.startsWith("/*")?"":o).split(Pd).forEach(o=>{if(o){let i=o.split(Id);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function P(e){let t="";if(Le(e))t=e;else if(he(e))for(let o=0;oSt(o,t))}var Pi=e=>!!(e&&e.__v_isRef===!0),u=e=>Le(e)?e:e==null?"":he(e)||De(e)&&(e.toString===Ti||!ye(e.toString))?Pi(e)?u(e.value):JSON.stringify(e,Ii,2):String(e),Ii=(e,t)=>Pi(t)?Ii(e,t.value):zt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[i,s],r)=>(o[cs(i,r)+" =>"]=s,o),{})}:Ct(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>cs(o))}:ft(t)?cs(t):De(t)&&!he(t)&&!bo(t)?String(t):t,cs=(e,t="")=>{var o;return ft(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};function Ld(e,...t){console.warn(`[Vue warn] ${e}`,...t)}var Qe,Hn=class{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&Qe&&(Qe.active?(this.parent=Qe,this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){let i=this.scopes.slice();for(t=0,o=i.length;t0&&--this._on===0){if(Qe===this)Qe=this.prevScope;else{let t=Qe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,i;for(o=0,i=this.effects.length;o0)return;if(Bn){let t=Bn;for(Bn=void 0;t;){let o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;Fn;){let t=Fn;for(Fn=void 0;t;){let o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=o}}if(e)throw e}function Fi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Bi(e){let t,o=e.depsTail,i=o;for(;i;){let s=i.prevDep;i.version===-1?(i===o&&(o=s),Ds(i),Fd(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=s}e.deps=t,e.depsTail=o}function ys(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Hi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Hi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===zn)||(e.globalVersion=zn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ys(e))))return;e.flags|=2;let t=e.dep,o=$e,i=_t;$e=e,_t=!0;try{Fi(e);let s=e.fn(e._value);(t.version===0||gt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{$e=o,_t=i,Bi(e),e.flags&=-3}}function Ds(e,t=!1){let{dep:o,prevSub:i,nextSub:s}=e;if(i&&(i.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=i,e.nextSub=void 0),o.subs===e&&(o.subs=i,!i&&o.computed)){o.computed.flags&=-5;for(let r=o.computed.deps;r;r=r.nextDep)Ds(r,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Fd(e){let{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}var _t=!0,zi=[];function Nt(){zi.push(_t),_t=!1}function Rt(){let e=zi.pop();_t=e===void 0?!0:e}function Vi(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let o=$e;$e=void 0;try{t()}finally{$e=o}}}var zn=0,bs=class{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},jn=class{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!$e||!_t||$e===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==$e)o=this.activeLink=new bs($e,this),$e.deps?(o.prevDep=$e.depsTail,$e.depsTail.nextDep=o,$e.depsTail=o):$e.deps=$e.depsTail=o,ji(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){let i=o.nextDep;i.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=i),o.prevDep=$e.depsTail,o.nextDep=void 0,$e.depsTail.nextDep=o,$e.depsTail=o,$e.deps===o&&($e.deps=i)}return o}trigger(t){this.version++,zn++,this.notify(t)}notify(t){Ns();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Rs()}}};function ji(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)ji(i)}let o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}var ws=new WeakMap,rn=Symbol(""),ks=Symbol(""),Gn=Symbol("");function xe(e,t,o){if(_t&&$e){let i=ws.get(e);i||ws.set(e,i=new Map);let s=i.get(o);s||(i.set(o,s=new jn),s.map=i,s.key=o),s.track()}}function It(e,t,o,i,s,r){let a=ws.get(e);if(!a){zn++;return}let c=f=>{f&&f.trigger()};if(Ns(),t==="clear")a.forEach(c);else{let f=he(e),g=f&&wo(o);if(f&&o==="length"){let y=Number(i);a.forEach((b,h)=>{(h==="length"||h===Gn||!ft(h)&&h>=y)&&c(b)})}else switch((o!==void 0||a.has(void 0))&&c(a.get(o)),g&&c(a.get(Gn)),t){case"add":f?g&&c(a.get("length")):(c(a.get(rn)),zt(e)&&c(a.get(ks)));break;case"delete":f||(c(a.get(rn)),zt(e)&&c(a.get(ks)));break;case"set":zt(e)&&c(a.get(rn));break}}Rs()}function Cn(e){let t=Re(e);return t===e||(xe(t,"iterate",Gn),at(e))?t:yt(e)?qt(e)?t.map(o=>Gt(ht(o))):t.map(Gt):t.map(ht)}function Kn(e){return xe(e=Re(e),"iterate",Gn),e}function Pt(e,t){return yt(e)?Gt(qt(e)?ht(t):t):ht(t)}var Bd={__proto__:null,[Symbol.iterator](){return vs(this,Symbol.iterator,e=>Pt(this,e))},concat(...e){return Cn(this).concat(...e.map(t=>he(t)?Cn(t):t))},entries(){return vs(this,"entries",e=>(e[1]=Pt(this,e[1]),e))},every(e,t){return jt(this,"every",e,t,void 0,arguments)},filter(e,t){return jt(this,"filter",e,t,o=>o.map(i=>Pt(this,i)),arguments)},find(e,t){return jt(this,"find",e,t,o=>Pt(this,o),arguments)},findIndex(e,t){return jt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return jt(this,"findLast",e,t,o=>Pt(this,o),arguments)},findLastIndex(e,t){return jt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return jt(this,"forEach",e,t,void 0,arguments)},includes(...e){return gs(this,"includes",e)},indexOf(...e){return gs(this,"indexOf",e)},join(e){return Cn(this).join(e)},lastIndexOf(...e){return gs(this,"lastIndexOf",e)},map(e,t){return jt(this,"map",e,t,void 0,arguments)},pop(){return Ln(this,"pop")},push(...e){return Ln(this,"push",e)},reduce(e,...t){return Mi(this,"reduce",e,t)},reduceRight(e,...t){return Mi(this,"reduceRight",e,t)},shift(){return Ln(this,"shift")},some(e,t){return jt(this,"some",e,t,void 0,arguments)},splice(...e){return Ln(this,"splice",e)},toReversed(){return Cn(this).toReversed()},toSorted(e){return Cn(this).toSorted(e)},toSpliced(...e){return Cn(this).toSpliced(...e)},unshift(...e){return Ln(this,"unshift",e)},values(){return vs(this,"values",e=>Pt(this,e))}};function vs(e,t,o){let i=Kn(e),s=i[t],r=s.call(i);if(i!==e&&!at(e)){if(r[Symbol.toStringTag]==="Array Iterator"){let a=Object.create(Object.getPrototypeOf(r));return a.next=()=>qi(r.next(),o),s!==Gi[t]&&Object.defineProperties(a,{return:{get(){let c=r.return;return typeof c=="function"?c.bind(r):c}},throw:{get(){let c=r.throw;return typeof c=="function"?c.bind(r):c}}}),a}r._next=r.next,r.next=()=>qi(r._next(),o)}return r}function qi(e,t){return e.done||(e.value=t(e.value)),e}var Gi=Array.prototype;function jt(e,t,o,i,s,r){let a=Kn(e),c=a!==e&&!at(e),f=a[t];if(f!==Gi[t]){let b=f.apply(e,r);return c?ht(b):b}let g=o;a!==e&&(c?g=function(b,h){return o.call(this,Pt(e,b),h,e)}:o.length>2&&(g=function(b,h){return o.call(this,b,h,e)}));let y=f.call(a,g,i);return c&&s?s(y):y}function Mi(e,t,o,i){let s=Kn(e),r=s!==e&&!at(e),a=o,c=!1;s!==e&&(r?(c=i.length===0,a=function(g,y,b){return c&&(c=!1,g=Pt(e,g)),o.call(this,g,Pt(e,y),b,e)}):o.length>3&&(a=function(g,y,b){return o.call(this,g,y,b,e)}));let f=s[t](a,...i);return c?Pt(e,f):f}function gs(e,t,o){let i=Re(e);xe(i,"iterate",Gn);let s=i[t](...o);return(s===-1||s===!1)&&Jn(o[0])?(o[0]=Re(o[0]),i[t](...o)):s}function Ln(e,t,o=[]){Nt(),Ns();let i=Re(e)[t].apply(e,o);return Rs(),Rt(),i}var Hd=gn("__proto__,__v_isRef,__isVue"),Wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ft));function zd(e){ft(e)||(e=String(e));let t=Re(this);return xe(t,"has",e),t.hasOwnProperty(e)}var Do=class{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,i){if(o==="__v_skip")return t.__v_skip;let s=this._isReadonly,r=this._isShallow;if(o==="__v_isReactive")return!s;if(o==="__v_isReadonly")return s;if(o==="__v_isShallow")return r;if(o==="__v_raw")return i===(s?r?Zd:Ji:r?Yi:Ki).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;let a=he(t);if(!s){let f;if(a&&(f=Bd[o]))return f;if(o==="hasOwnProperty")return zd}let c=Reflect.get(t,o,Ze(t)?t:i);if((ft(o)?Wi.has(o):Hd(o))||(s||xe(t,"get",o),r))return c;if(Ze(c)){let f=a&&wo(o)?c:c.value;return s&&De(f)?Ao(f):f}return De(c)?s?Ao(c):Fe(c):c}},To=class extends Do{constructor(t=!1){super(!1,t)}set(t,o,i,s){let r=t[o],a=he(t)&&wo(o);if(!this._isShallow){let g=yt(r);if(!at(i)&&!yt(i)&&(r=Re(r),i=Re(i)),!a&&Ze(r)&&!Ze(i))return g||(r.value=i),!0}let c=a?Number(o)e,_o=e=>Reflect.getPrototypeOf(e);function Kd(e,t,o){return function(...i){let s=this.__v_raw,r=Re(s),a=zt(r),c=e==="entries"||e===Symbol.iterator&&a,f=e==="keys"&&a,g=s[e](...i),y=o?Cs:t?Gt:ht;return!t&&xe(r,"iterate",f?ks:rn),je(Object.create(g),{next(){let{value:b,done:h}=g.next();return h?{value:b,done:h}:{value:c?[y(b[0]),y(b[1])]:y(b),done:h}}})}}function No(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Yd(e,t){let o={get(s){let r=this.__v_raw,a=Re(r),c=Re(s);e||(gt(s,c)&&xe(a,"get",s),xe(a,"get",c));let{has:f}=_o(a),g=t?Cs:e?Gt:ht;if(f.call(a,s))return g(r.get(s));if(f.call(a,c))return g(r.get(c));r!==a&&r.get(s)},get size(){let s=this.__v_raw;return!e&&xe(Re(s),"iterate",rn),s.size},has(s){let r=this.__v_raw,a=Re(r),c=Re(s);return e||(gt(s,c)&&xe(a,"has",s),xe(a,"has",c)),s===c?r.has(s):r.has(s)||r.has(c)},forEach(s,r){let a=this,c=a.__v_raw,f=Re(c),g=t?Cs:e?Gt:ht;return!e&&xe(f,"iterate",rn),c.forEach((y,b)=>s.call(r,g(y),g(b),a))}};return je(o,e?{add:No("add"),set:No("set"),delete:No("delete"),clear:No("clear")}:{add(s){let r=Re(this),a=_o(r),c=Re(s),f=!t&&!at(s)&&!yt(s)?c:s;return a.has.call(r,f)||gt(s,f)&&a.has.call(r,s)||gt(c,f)&&a.has.call(r,c)||(r.add(f),It(r,"add",f,f)),this},set(s,r){!t&&!at(r)&&!yt(r)&&(r=Re(r));let a=Re(this),{has:c,get:f}=_o(a),g=c.call(a,s);g||(s=Re(s),g=c.call(a,s));let y=f.call(a,s);return a.set(s,r),g?gt(r,y)&&It(a,"set",s,r,y):It(a,"add",s,r),this},delete(s){let r=Re(this),{has:a,get:c}=_o(r),f=a.call(r,s);f||(s=Re(s),f=a.call(r,s));let g=c?c.call(r,s):void 0,y=r.delete(s);return f&&It(r,"delete",s,void 0,g),y},clear(){let s=Re(this),r=s.size!==0,a=void 0,c=s.clear();return r&&It(s,"clear",void 0,void 0,a),c}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=Kd(s,e,t)}),o}function Ts(e,t){let o=Yd(e,t);return(i,s,r)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_isShallow"?t:s==="__v_raw"?i:Reflect.get(Ne(o,s)&&s in i?o:i,s,r)}var Jd={get:Ts(!1,!1)},Qd={get:Ts(!1,!0)},Xd={get:Ts(!0,!1)};var Ki=new WeakMap,Yi=new WeakMap,Ji=new WeakMap,Zd=new WeakMap;function xd(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Fe(e){return yt(e)?e:As(e,!1,jd,Jd,Ki)}function Yn(e){return As(e,!1,Wd,Qd,Yi)}function Ao(e){return As(e,!0,Gd,Xd,Ji)}function As(e,t,o,i,s){if(!De(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let r=s.get(e);if(r)return r;let a=xd(hs(e));if(a===0)return e;let c=new Proxy(e,a===2?i:o);return s.set(e,c),c}function qt(e){return yt(e)?qt(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function at(e){return!!(e&&e.__v_isShallow)}function Jn(e){return e?!!e.__v_raw:!1}function Re(e){let t=e&&e.__v_raw;return t?Re(t):e}function Os(e){return!Ne(e,"__v_skip")&&Object.isExtensible(e)&&Eo(e,"__v_skip",!0),e}var ht=e=>De(e)?Fe(e):e,Gt=e=>De(e)?Ao(e):e;function Ze(e){return e?e.__v_isRef===!0:!1}function et(e){return Qi(e,!1)}function Po(e){return Qi(e,!0)}function Qi(e,t){return Ze(e)?e:new Ss(e,t)}var Ss=class{constructor(t,o){this.dep=new jn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:Re(t),this._value=o?t:ht(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){let o=this._rawValue,i=this.__v_isShallow||at(t)||yt(t);t=i?t:Re(t),gt(t,o)&&(this._rawValue=t,this._value=i?t:ht(t),this.dep.trigger())}};function Wt(e){return Ze(e)?e.value:e}var eu={get:(e,t,o)=>t==="__v_raw"?e:Wt(Reflect.get(e,t,o)),set:(e,t,o,i)=>{let s=e[t];return Ze(s)&&!Ze(o)?(s.value=o,!0):Reflect.set(e,t,o,i)}};function Io(e){return qt(e)?e:new Proxy(e,eu)}var _s=class{constructor(t,o,i){this.fn=t,this.setter=o,this._value=void 0,this.dep=new jn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=zn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&$e!==this)return Li(this,!0),!0}get value(){let t=this.dep.track();return Hi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}};function Xi(e,t,o=!1){let i,s;return ye(e)?i=e:(i=e.get,s=e.set),new _s(i,s,o)}var Ro={},Oo=new WeakMap,sn;function Zi(e,t=!1,o=sn){if(o){let i=Oo.get(o);i||Oo.set(o,i=[]),i.push(e)}}function xi(e,t,o=Pe){let{immediate:i,deep:s,once:r,scheduler:a,augmentJob:c,call:f}=o,g=q=>{(o.onWarn||Ld)("Invalid watch source: ",q,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},y=q=>s?q:at(q)||s===!1||s===0?Vt(q,1):Vt(q),b,h,E,_,m=!1,C=!1;if(Ze(e)?(h=()=>e.value,m=at(e)):qt(e)?(h=()=>y(e),m=!0):he(e)?(C=!0,m=e.some(q=>qt(q)||at(q)),h=()=>e.map(q=>{if(Ze(q))return q.value;if(qt(q))return y(q);if(ye(q))return f?f(q,2):q()})):ye(e)?t?h=f?()=>f(e,2):e:h=()=>{if(E){Nt();try{E()}finally{Rt()}}let q=sn;sn=b;try{return f?f(e,3,[_]):e(_)}finally{sn=q}}:h=rt,t&&s){let q=h,B=s===!0?1/0:s;h=()=>Vt(q(),B)}let N=Ui(),A=()=>{b.stop(),N&&N.active&&qn(N.effects,b)};if(r&&t){let q=t;t=(...B)=>{try{return q(...B)}finally{A()}}}let M=C?new Array(e.length).fill(Ro):Ro,U=q=>{if(!(!(b.flags&1)||!b.dirty&&!q))if(t){let B=b.run();if(q||s||m||(C?B.some((oe,ee)=>gt(oe,M[ee])):gt(B,M))){let oe=sn;Nt();try{E&&E(),sn=b;let ee=[B,M===Ro?void 0:C&&M[0]===Ro?[]:M,_];M=B,f?f(t,3,ee):t(...ee)}finally{sn=oe,Rt()}}}else b.run()};return c&&c(U),b=new Sn(h),b.scheduler=a?()=>a(U,!1):U,_=q=>Zi(q,!1,b),E=b.onStop=()=>{let q=Oo.get(b);if(q){if(f)f(q,4);else for(let B of q)B();Oo.delete(b)}},t?i?U(!0):M=b.run():a?a(U.bind(null,!0),!0):b.run(),A.pause=b.pause.bind(b),A.resume=b.resume.bind(b),A.stop=A,A}function Vt(e,t=1/0,o){if(t<=0||!De(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,Ze(e))Vt(e.value,t,o);else if(he(e))for(let i=0;i{Vt(i,t,o)});else if(bo(e)){for(let i in e)Vt(e[i],t,o);for(let i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&Vt(e[i],t,o)}return e}function ao(e,t,o,i){try{return i?e(...i):e()}catch(s){lo(s,t,o)}}function bt(e,t,o,i){if(ye(e)){let s=ao(e,t,o,i);return s&&fs(s)&&s.catch(r=>{lo(r,t,o)}),s}if(he(e)){let s=[];for(let r=0;r>>1,s=st[i],r=no(s);r=no(o)?st.push(e):st.splice(iu(t),0,e),e.flags|=1,vr()}}function vr(){Mo||(Mo=mr.then(wr))}function gr(e){if(!he(e))en&&e.id===-1?en.splice(_n+1,0,e):e.flags&1||(Ut.push(e),e.flags|=1);else for(let t=0;t=t))continue;st.splice(i,1),i=e?i-1:Dt,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function br(e,t,o=0){if(Ut.length){let i=Ut,s=0;if(t){i=[];for(let a=0;ano(a)-no(c));if(Ut.length=s,en){for(let a=0;ae.id==null?e.flags&2?-1:1/0:e.id;function wr(e){let t=rt;try{for(Dt=0;Dt{i._d&&Fo(-1);let r=Uo(t),a=dn.length,c;try{c=e(...s)}finally{for(let f=dn.length;f>a;f--)Qr();Uo(r),i._d&&Fo(1)}return c};return i._n=!0,i._c=!0,i._d=!0,i}function D(e,t){if(mt===null)return e;let o=Yo(mt),i=e.dirs||(e.dirs=[]);for(let s=0;s1)return o&&ye(t)?t.call(i&&i.proxy):t}}var lu=Symbol.for("v-scx"),du=()=>{{let e=dt(lu);return e}};function Be(e,t,o){return Er(e,t,o)}function Er(e,t,o=Pe){let{immediate:i,deep:s,flush:r,once:a}=o,c=je({},o),f=t&&i||!t&&r!=="post",g;if(Dn){if(r==="sync"){let E=du();g=E.__watcherHandles||(E.__watcherHandles=[])}else if(!f){let E=()=>{};return E.stop=rt,E.resume=rt,E.pause=rt,E}}let y=tt;c.call=(E,_,m)=>bt(E,y,_,m);let b=!1;r==="post"?c.scheduler=E=>{E.i=y,lt(E,y&&y.suspense)}:r!=="sync"&&(b=!0,c.scheduler=(E,_)=>{_?E():zs(E)}),c.augmentJob=E=>{t&&(E.flags|=4),b&&(E.flags|=2,y&&(E.id=y.uid,E.i=y))};let h=xi(e,t,c);return Dn&&(g?g.push(h):f&&h()),h}function uu(e,t,o){let i=this.proxy,s=Le(e)?e.includes(".")?Cr(i,e):()=>i[e]:e.bind(i,i),r;ye(t)?r=t:(r=t.handler,o=t);let a=po(this),c=Er(s,r.bind(i),o);return a(),c}function Cr(e,t){let o=t.split(".");return()=>{let i=e;for(let s=0;se.__isTeleport;var Is=Symbol("_leaveCb");function pu(e){let t=e[0];if(e.length>1){let o=!1;for(let i of e)if(i.type!==Tt){t=i,o=!0;break}}return t}function Sr(e){if(!jo(e))return zo(e.type)&&e.children?pu(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&ye(o.default))return o.default()}}function oo(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let o=e.component.subTree;oo(zo(o.type)&&Sr(o)||o,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===K&&he(e.children)){let o=Mr(e.children,!1);o&&oo(o,t)}}function Us(e){if(e.component)return Us(e.component.subTree);if(e.type===K){let t=he(e.children)&&Mr(e.children,!1);return t?Us(t):void 0}if(e.type!==Tt)return e}function uo(e,t){return ye(e)?je({name:e.name},t,{setup:e}):e}function js(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function er(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}var $o=new WeakMap;function Zn(e,t,o,i,s=!1){if(he(e)){e.forEach((m,C)=>Zn(m,t&&(he(t)?t[C]:t),o,i,s));return}if(xn(i)&&!s){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Zn(e,t,o,i.component.subTree);return}let r=i.shapeFlag&4?Yo(i.component):i.el,a=s?null:r,{i:c,r:f}=e,g=t&&t.r,y=c.refs===Pe?c.refs={}:c.refs,b=c.setupState,h=Re(b),E=b===Pe?ps:m=>er(y,m)?!1:Ne(h,m),_=(m,C)=>!(C&&er(y,C));if(g!=null&&g!==f){if(tr(t),Le(g))y[g]=null,E(g)&&(b[g]=null);else if(Ze(g)){let m=t;_(g,m.k)&&(g.value=null),m.k&&(y[m.k]=null)}}if(ye(f))ao(f,c,12,[a,y]);else{let m=Le(f),C=Ze(f);if(m||C){let N=()=>{if(e.f){let A=m?E(f)?b[f]:y[f]:_(f)||!e.k?f.value:y[e.k];if(s)he(A)&&qn(A,r);else if(he(A))A.includes(r)||A.push(r);else if(m)y[f]=[r],E(f)&&(b[f]=y[f]);else{let M=[r];_(f,e.k)&&(f.value=M),e.k&&(y[e.k]=M)}}else m?(y[f]=a,E(f)&&(b[f]=a)):C&&(_(f,e.k)&&(f.value=a),e.k&&(y[e.k]=a))};if(a){let A=()=>{N(),$o.delete(e)};A.id=-1,$o.set(e,A),lt(A,o)}else tr(e),N()}}}function tr(e){let t=$o.get(e);t&&(t.flags|=8,$o.delete(e))}var nr=e=>e.nodeType===8;var Y$=$n().requestIdleCallback||(e=>setTimeout(e,1)),J$=$n().cancelIdleCallback||(e=>clearTimeout(e));function fu(e,t){if(nr(e)&&e.data==="["){let o=1,i=e.nextSibling;for(;i;){if(i.nodeType===1){if(t(i)===!1)break}else if(nr(i))if(i.data==="]"){if(--o===0)break}else i.data==="["&&o++;i=i.nextSibling}}else t(e)}var xn=e=>!!e.type.__asyncLoader;function _r(e){ye(e)&&(e={loader:e});let{loader:t,loadingComponent:o,errorComponent:i,delay:s=200,hydrate:r,timeout:a,suspensible:c=!0,onError:f}=e,g=null,y,b=0,h=()=>(b++,g=null,E()),E=()=>{let _;return g||(_=g=t().catch(m=>{if(m=m instanceof Error?m:new Error(String(m)),f)return new Promise((C,N)=>{f(m,()=>C(h()),()=>N(m),b+1)});throw m}).then(m=>_!==g&&g?g:(m&&(m.__esModule||m[Symbol.toStringTag]==="Module")&&(m=m.default),y=m,m)))};return uo({name:"AsyncComponentWrapper",__asyncLoader:E,__asyncHydrate(_,m,C){let N=_.isConnected,A=!1;(m.bu||(m.bu=[])).push(()=>A=!0);let M=()=>{A||!_.parentNode||N&&!_.isConnected||C()},U=r?()=>{let q=r(M,B=>fu(_,B));q&&(m.bum||(m.bum=[])).push(q)}:M;y?U():E().then(()=>!m.isUnmounted&&U())},get __asyncResolved(){return y},setup(){let _=tt;if(js(_),y)return()=>Vo(y,_);let m=q=>{g=null,lo(q,_,13,!i)};if(c&&_.suspense||Dn)return E().then(q=>()=>Vo(q,_)).catch(q=>(m(q),()=>i?Ce(i,{error:q}):null));let C=et(!1),N=et(),A=et(!!s),M,U;return co(()=>{M!=null&&clearTimeout(M),U!=null&&clearTimeout(U)}),s&&(U=setTimeout(()=>{_.isUnmounted||(A.value=!1)},s)),a!=null&&(M=setTimeout(()=>{if(!_.isUnmounted&&!C.value&&!N.value){let q=new Error(`Async component timed out after ${a}ms.`);m(q),N.value=q}},a)),E().then(()=>{_.isUnmounted||(C.value=!0,_.parent&&jo(_.parent.vnode)&&_.parent.update())}).catch(q=>{if(_.isUnmounted){g=null;return}m(q),N.value=q}),()=>{if(C.value&&y)return Vo(y,_);if(N.value&&i)return Ce(i,{error:N.value});if(o&&!A.value)return Vo(o,_)}}})}function Vo(e,t){let{ref:o,props:i,children:s,ce:r}=t.vnode,a=Ce(e,i,s);return a.ref=o,a.ce=r,delete t.vnode.ce,a}var jo=e=>e.type.__isKeepAlive;function Nr(e,t){Dr(e,"a",t)}function Rr(e,t){Dr(e,"da",t)}function Dr(e,t,o=tt){let i=e.__wdc||(e.__wdc=()=>{let s=o;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Go(t,i,o),o){let s=o.parent;for(;s&&s.parent;)jo(s.parent.vnode)&&hu(i,t,o,s),s=s.parent}}function hu(e,t,o,i){let s=Go(t,e,i,!0);co(()=>{qn(i[t],s)},o)}function Go(e,t,o=tt,i=!1){if(o){let s=o[e]||(o[e]=[]),r=t.__weh||(t.__weh=(...a)=>{Nt();let c=po(o),f=bt(t,o,e,a);return c(),Rt(),f});return i?s.unshift(r):s.push(r),r}}var Yt=e=>(t,o=tt)=>{(!Dn||e==="sp")&&Go(e,(...i)=>t(...i),o)},mu=Yt("bm"),Lt=Yt("m"),Tr=Yt("bu"),Ar=Yt("u"),cn=Yt("bum"),co=Yt("um"),vu=Yt("sp"),gu=Yt("rtg"),yu=Yt("rtc");function bu(e,t=tt){Go("ec",e,t)}var Or="components",wu="directives";function Ge(e,t){return Pr(Or,e,!0,t)||e}var ku=Symbol.for("v-ndc");function ge(e){return Pr(wu,e)}function Pr(e,t,o=!0,i=!1){let s=mt||tt;if(s){let r=s.type;if(e===Or){let c=sc(r,!1);if(c&&(c===t||c===Je(t)||c===on(Je(t))))return r}let a=or(s[e]||r[e],t)||or(s.appContext[e],t);return!a&&i?r:a}}function or(e,t){return e&&(e[t]||e[Je(t)]||e[on(Je(t))])}function ne(e,t,o,i){let s,r=o&&o[i],a=he(e);if(a||Le(e)){let c=a&&qt(e),f=!1,g=!1;c&&(f=!at(e),g=yt(e),e=Kn(e)),s=new Array(e.length);for(let y=0,b=e.length;yt(c,f,void 0,r&&r[f]));else{let c=Object.keys(e);s=new Array(c.length);for(let f=0,g=c.length;fe?ea(e)?Yo(e):$s(e.parent):null;var eo=je(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>$s(e.parent),$root:e=>$s(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Gs(e),$forceUpdate:e=>e.f||(e.f=()=>{zs(e.update)}),$nextTick:e=>e.n||(e.n=Ke.bind(e.proxy)),$watch:e=>uu.bind(e)});var Vs=(e,t)=>e!==Pe&&!e.__isScriptSetup&&Ne(e,t),Eu={get({_:e},t){if(t==="__v_skip")return!0;let{ctx:o,setupState:i,data:s,props:r,accessCache:a,type:c,appContext:f}=e;if(t[0]!=="$"){let h=a[t];if(h!==void 0)switch(h){case 1:return i[t];case 2:return s[t];case 4:return o[t];case 3:return r[t]}else{if(Vs(i,t))return a[t]=1,i[t];if(s!==Pe&&Ne(s,t))return a[t]=2,s[t];if(Ne(r,t))return a[t]=3,r[t];if(o!==Pe&&Ne(o,t))return a[t]=4,o[t];Ls&&(a[t]=0)}}let g=eo[t],y,b;if(g)return t==="$attrs"&&xe(e.attrs,"get",""),g(e);if((y=c.__cssModules)&&(y=y[t]))return y;if(o!==Pe&&Ne(o,t))return a[t]=4,o[t];if(b=f.config.globalProperties,Ne(b,t))return b[t]},set({_:e},t,o){let{data:i,setupState:s,ctx:r}=e;return Vs(s,t)?(s[t]=o,!0):i!==Pe&&Ne(i,t)?(i[t]=o,!0):Ne(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:i,appContext:s,props:r,type:a}},c){let f;return!!(o[c]||e!==Pe&&c[0]!=="$"&&Ne(e,c)||Vs(t,c)||Ne(r,c)||Ne(i,c)||Ne(eo,c)||Ne(s.config.globalProperties,c)||(f=a.__cssModules)&&f[c])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:Ne(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function sr(e){return he(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}var Ls=!0;function Cu(e){let t=Gs(e),o=e.proxy,i=e.ctx;Ls=!1,t.beforeCreate&&ir(t.beforeCreate,e,"bc");let{data:s,computed:r,methods:a,watch:c,provide:f,inject:g,created:y,beforeMount:b,mounted:h,beforeUpdate:E,updated:_,activated:m,deactivated:C,beforeDestroy:N,beforeUnmount:A,destroyed:M,unmounted:U,render:q,renderTracked:B,renderTriggered:oe,errorCaptured:ee,serverPrefetch:R,expose:j,inheritAttrs:ie,components:ve,directives:z,filters:J}=t;if(g&&Su(g,i,null),a)for(let X in a){let re=a[X];ye(re)&&(i[X]=re.bind(o))}if(s){let X=s.call(o,o);De(X)&&(e.data=Fe(X))}if(Ls=!0,r)for(let X in r){let re=r[X],Ee=ye(re)?re.bind(o,o):ye(re.get)?re.get.bind(o,o):rt,Te=!ye(re)&&ye(re.set)?re.set.bind(o):rt,Ae=nt({get:Ee,set:Te});Object.defineProperty(i,X,{enumerable:!0,configurable:!0,get:()=>Ae.value,set:Se=>Ae.value=Se})}if(c)for(let X in c)Ir(c[X],i,o,X);if(f){let X=ye(f)?f.call(o):f;Reflect.ownKeys(X).forEach(re=>{un(re,X[re])})}y&&ir(y,e,"c");function te(X,re){he(re)?re.forEach(Ee=>X(Ee.bind(o))):re&&X(re.bind(o))}if(te(mu,b),te(Lt,h),te(Tr,E),te(Ar,_),te(Nr,m),te(Rr,C),te(bu,ee),te(yu,B),te(gu,oe),te(cn,A),te(co,U),te(vu,R),he(j))if(j.length){let X=e.exposed||(e.exposed={});j.forEach(re=>{Object.defineProperty(X,re,{get:()=>o[re],set:Ee=>o[re]=Ee,enumerable:!0})})}else e.exposed||(e.exposed={});q&&e.render===rt&&(e.render=q),ie!=null&&(e.inheritAttrs=ie),ve&&(e.components=ve),z&&(e.directives=z),R&&js(e)}function Su(e,t,o=rt){he(e)&&(e=Fs(e));for(let i in e){let s=e[i],r;De(s)?"default"in s?r=dt(s.from||i,s.default,!0):r=dt(s.from||i):r=dt(s),Ze(r)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):t[i]=r}}function ir(e,t,o){bt(he(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,o)}function Ir(e,t,o,i){let s=i.includes(".")?Cr(o,i):()=>o[i];if(Le(e)){let r=t[e];ye(r)&&Be(s,r)}else if(ye(e))Be(s,e.bind(o));else if(De(e))if(he(e))e.forEach(r=>Ir(r,t,o,i));else{let r=ye(e.handler)?e.handler.bind(o):t[e.handler];ye(r)&&Be(s,r,e)}}function Gs(e){let t=e.type,{mixins:o,extends:i}=t,{mixins:s,optionsCache:r,config:{optionMergeStrategies:a}}=e.appContext,c=r.get(t),f;return c?f=c:!s.length&&!o&&!i?f=t:(f={},s.length&&s.forEach(g=>Lo(f,g,a,!0)),Lo(f,t,a)),De(t)&&r.set(t,f),f}function Lo(e,t,o,i=!1){let{mixins:s,extends:r}=t;r&&Lo(e,r,o,!0),s&&s.forEach(a=>Lo(e,a,o,!0));for(let a in t)if(!(i&&a==="expose")){let c=_u[a]||o&&o[a];e[a]=c?c(e[a],t[a]):t[a]}return e}var _u={data:rr,props:ar,emits:ar,methods:Xn,computed:Xn,beforeCreate:ot,created:ot,beforeMount:ot,mounted:ot,beforeUpdate:ot,updated:ot,beforeDestroy:ot,beforeUnmount:ot,destroyed:ot,unmounted:ot,activated:ot,deactivated:ot,errorCaptured:ot,serverPrefetch:ot,components:Xn,directives:Xn,watch:Ru,provide:rr,inject:Nu};function rr(e,t){return t?e?function(){return je(ye(e)?e.call(this,this):e,ye(t)?t.call(this,this):t)}:t:e}function Nu(e,t){return Xn(Fs(e),Fs(t))}function Fs(e){if(he(e)){let t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${Ot(t)}Modifiers`];function Ou(e,t,...o){if(e.isUnmounted)return;let i=e.vnode.props||Pe,s=o,r=t.startsWith("update:"),a=r&&Au(i,t.slice(7));a&&(a.trim&&(s=o.map(y=>Le(y)?y.trim():y)),a.number&&(s=s.map(En)));let c,f=i[c=Un(t)]||i[c=Un(Je(t))];!f&&r&&(f=i[c=Un(Ot(t))]),f&&bt(f,e,6,s);let g=i[c+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,bt(g,e,6,s)}}var Pu=new WeakMap;function qr(e,t,o=!1){let i=o?Pu:t.emitsCache,s=i.get(e);if(s!==void 0)return s;let r=e.emits,a={},c=!1;if(!ye(e)){let f=g=>{let y=qr(g,t,!0);y&&(c=!0,je(a,y))};!o&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!r&&!c?(De(e)&&i.set(e,null),null):(he(r)?r.forEach(f=>a[f]=null):je(a,r),De(e)&&i.set(e,a),a)}function Wo(e,t){return!e||!yn(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Ne(e,t[0].toLowerCase()+t.slice(1))||Ne(e,Ot(t))||Ne(e,t))}function qs(e){let{type:t,vnode:o,proxy:i,withProxy:s,propsOptions:[r],slots:a,attrs:c,emit:f,render:g,renderCache:y,props:b,data:h,setupState:E,ctx:_,inheritAttrs:m}=e,C=Uo(e),N,A;try{if(o.shapeFlag&4){let q=s||i,B=q;N=$t(g.call(B,q,y,b,E,h,_)),A=c}else{let q=t;N=$t(q.length>1?q(b,{attrs:c,slots:a,emit:f}):q(b,null)),A=t.props?c:Iu(c)}}catch(q){dn.length=0,lo(q,e,1),N=Ce(Tt)}let M=N,U;if(A&&m!==!1){let q=Object.keys(A),{shapeFlag:B}=M;q.length&&B&7&&(r&&q.some(bn)&&(A=Vu(A,r)),M=Rn(M,A,!1,!0))}if(o.dirs&&(M=Rn(M,null,!1,!0),M.dirs=M.dirs?M.dirs.concat(o.dirs):o.dirs),o.transition){let q=zo(M.type)&&Sr(M)||M;oo(q,o.transition)}return N=M,Uo(C),N}function Mr(e,t=!0){let o;for(let i=0;i{let t;for(let o in e)(o==="class"||o==="style"||yn(o))&&((t||(t={}))[o]=e[o]);return t},Vu=(e,t)=>{let o={};for(let i in e)(!bn(i)||!(i.slice(9)in t))&&(o[i]=e[i]);return o};function qu(e,t,o){let{props:i,children:s,component:r}=e,{props:a,children:c,patchFlag:f}=t,g=r.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&f>=0){if(f&1024)return!0;if(f&16)return i?lr(i,a,g):!!a;if(f&8){let y=t.dynamicProps;for(let b=0;bObject.create($r),Fr=e=>Object.getPrototypeOf(e)===$r;function Uu(e,t,o,i=!1){let s={},r=Lr();e.propsDefaults=Object.create(null),Br(e,t,s,r);for(let a in e.propsOptions[0])a in s||(s[a]=void 0);o?e.props=i?s:Yn(s):e.type.props?e.props=s:e.props=r,e.attrs=r}function $u(e,t,o,i){let{props:s,attrs:r,vnode:{patchFlag:a}}=e,c=Re(s),[f]=e.propsOptions,g=!1;if((i||a>0)&&!(a&16)){if(a&8){let y=e.vnode.dynamicProps;for(let b=0;b{f=!0;let[h,E]=Hr(b,t,!0);je(a,h),E&&c.push(...E)};!o&&t.mixins.length&&t.mixins.forEach(y),e.extends&&y(e.extends),e.mixins&&e.mixins.forEach(y)}if(!r&&!f)return De(e)&&i.set(e,xt),xt;if(he(r))for(let y=0;ye==="_"||e==="_ctx"||e==="$stable",Ks=e=>he(e)?e.map($t):[$t(e)],Fu=(e,t,o)=>{if(t._n)return t;let i=au((...s)=>Ks(t(...s)),o);return i._c=!1,i},zr=(e,t,o)=>{let i=e._ctx;for(let s in e){if(Ws(s))continue;let r=e[s];if(ye(r))t[s]=Fu(s,r,i);else if(r!=null){let a=Ks(r);t[s]=()=>a}}},jr=(e,t)=>{let o=Ks(t);e.slots.default=()=>o},Gr=(e,t,o)=>{for(let i in t)(o||!Ws(i))&&(e[i]=t[i])},Bu=(e,t,o)=>{let i=e.slots=Lr();if(e.vnode.shapeFlag&32){let s=t._;s?(Gr(i,t,o),o&&Eo(i,"_",s,!0)):zr(t,i)}else t&&jr(e,t)},Hu=(e,t,o)=>{let{vnode:i,slots:s}=e,r=!0,a=Pe;if(i.shapeFlag&32){let c=t._;c?o&&c===1?r=!1:Gr(s,t,o):(r=!t.$stable,zr(t,s)),a=t}else t&&(jr(e,t),a={default:1});if(r)for(let c in s)!Ws(c)&&a[c]==null&&delete s[c]};function zu(){let e=[]}var lt=Ku;function Wr(e){return ju(e)}function ju(e,t){zu();let o=$n();o.__VUE__=!0;let{insert:i,remove:s,patchProp:r,createElement:a,createText:c,createComment:f,setText:g,setElementText:y,parentNode:b,nextSibling:h,setScopeId:E=rt,insertStaticContent:_}=e,m=(k,S,V,G=null,w=null,T=null,O=void 0,I=null,F=!!S.dynamicChildren)=>{if(k===S)return;k&&!Qn(k,S)&&(G=se(k),_e(k,w,T,!0),k=null),S.patchFlag===-2&&(F=!1,S.dynamicChildren=null),S.dynamicChildren&&k&&k.dynamicChildren&&k.dynamicChildren.hasOnce&&(S.dynamicChildren===xt&&(S.dynamicChildren=[]),S.dynamicChildren.hasOnce=!0);let{type:L,ref:ae,shapeFlag:x}=S;switch(L){case Ko:C(k,S,V,G);break;case Tt:N(k,S,V,G);break;case to:k==null&&A(S,V,G,O);break;case K:z(k,S,V,G,w,T,O,I,F);break;default:x&1?B(k,S,V,G,w,T,O,I,F):x&6?J(k,S,V,G,w,T,O,I,F):(x&64||x&128)&&L.process(k,S,V,G,w,T,O,I,F,Z)}ae!=null&&w?Zn(ae,k&&k.ref,T,S||k,!S):ae==null&&k&&k.ref!=null&&Zn(k.ref,null,T,k,!0)},C=(k,S,V,G)=>{if(k==null)i(S.el=c(S.children),V,G);else{let w=S.el=k.el;S.children!==k.children&&g(w,S.children)}},N=(k,S,V,G)=>{k==null?i(S.el=f(S.children||""),V,G):S.el=k.el},A=(k,S,V,G)=>{[k.el,k.anchor]=_(k.children,S,V,G,k.el,k.anchor)},M=(k,S,V,G)=>{if(S.children!==k.children){let w=h(k.anchor);q(k),[S.el,S.anchor]=_(S.children,V,w,G)}else S.el=k.el,S.anchor=k.anchor},U=({el:k,anchor:S},V,G)=>{let w;for(;k&&k!==S;)w=h(k),i(k,V,G),k=w;i(S,V,G)},q=({el:k,anchor:S})=>{let V;for(;k&&k!==S;)V=h(k),s(k),k=V;s(S)},B=(k,S,V,G,w,T,O,I,F)=>{if(S.type==="svg"?O="svg":S.type==="math"&&(O="mathml"),k==null)oe(S,V,G,w,T,O,I,F);else{let L=k.el&&k.el._isVueCE?k.el:null;try{L&&L._beginPatch(),j(k,S,w,T,O,I,F)}finally{L&&L._endPatch()}}},oe=(k,S,V,G,w,T,O,I)=>{let F,L,{props:ae,shapeFlag:x,transition:le,dirs:me}=k;if(F=k.el=a(k.type,T,ae&&ae.is,ae),x&8?y(F,k.children):x&16&&R(k.children,F,null,G,w,Ms(k,T),O,I),me&&an(k,null,G,"created"),ee(F,k,k.scopeId,O,G),ae){for(let Me in ae)Me!=="value"&&!wn(Me)&&r(F,Me,null,ae[Me],T,G);"value"in ae&&r(F,"value",null,ae.value,T),(L=ae.onVnodeBeforeMount)&&Mt(L,G,k)}me&&an(k,null,G,"beforeMount");let ke=Gu(w,le);ke&&le.beforeEnter(F),i(F,S,V),((L=ae&&ae.onVnodeMounted)||ke||me)&<(()=>{let Ve;L&&Mt(L,G,k),ke&&le.enter(F),me&&an(k,null,G,"mounted")},w)},ee=(k,S,V,G,w)=>{if(V&&E(k,V),G)for(let T=0;T{for(let L=F;L{let I=S.el=k.el,{patchFlag:F,dynamicChildren:L,dirs:ae}=S;F|=k.patchFlag&16;let x=k.props||Pe,le=S.props||Pe,me;if(V&&ln(V,!1),(me=le.onVnodeBeforeUpdate)&&Mt(me,V,S,k),ae&&an(S,k,V,"beforeUpdate"),V&&ln(V,!0),L&&(!k.dynamicChildren||k.dynamicChildren.length!==L.length)&&(F=0,O=!1,L=null),(x.innerHTML&&le.innerHTML==null||x.textContent&&le.textContent==null)&&y(I,""),L?ie(k.dynamicChildren,L,I,V,G,Ms(S,w),T):O||Ee(k,S,I,null,V,G,Ms(S,w),T,!1),F>0){if(F&16)ve(I,x,le,V,w);else if(F&2&&x.class!==le.class&&r(I,"class",null,le.class,w),F&4&&r(I,"style",x.style,le.style,w),F&8){let ke=S.dynamicProps;for(let Me=0;Me{me&&Mt(me,V,S,k),ae&&an(S,k,V,"updated")},G)},ie=(k,S,V,G,w,T,O)=>{for(let I=0;I{if(S!==V){if(S!==Pe)for(let T in S)!wn(T)&&!(T in V)&&r(k,T,S[T],null,w,G);for(let T in V){if(wn(T))continue;let O=V[T],I=S[T];O!==I&&T!=="value"&&r(k,T,I,O,w,G)}"value"in V&&r(k,"value",S.value,V.value,w)}},z=(k,S,V,G,w,T,O,I,F)=>{let L=S.el=k?k.el:c(""),ae=S.anchor=k?k.anchor:c(""),{patchFlag:x,dynamicChildren:le,slotScopeIds:me}=S;me&&(I=I?I.concat(me):me),k==null?(i(L,V,G),i(ae,V,G),R(S.children||[],V,ae,w,T,O,I,F)):x>0&&x&64&&le&&k.dynamicChildren&&k.dynamicChildren.length===le.length?(ie(k.dynamicChildren,le,V,w,T,O,I),(S.key!=null||w&&S===w.subTree)&&Kr(k,S,!0)):Ee(k,S,V,ae,w,T,O,I,F)},J=(k,S,V,G,w,T,O,I,F)=>{S.slotScopeIds=I,k==null?S.shapeFlag&512?w.ctx.activate(S,V,G,O,F):Q(S,V,G,w,T,O,F):te(k,S,F)},Q=(k,S,V,G,w,T,O)=>{let I=k.component=xu(k,G,w);if(jo(k)&&(I.ctx.renderer=Z),ec(I,!1,O),I.asyncDep){if(w&&w.registerDep(I,X,O,T),!k.el){let F=I.subTree=Ce(Tt);N(null,F,S,V),k.placeholder=F.el}}else X(I,k,S,V,w,T,O)},te=(k,S,V)=>{let G=S.component=k.component;if(qu(k,S,V))if(G.asyncDep&&!G.asyncResolved){S.el=k.el,S.placeholder=k.placeholder,re(G,S,V);return}else G.next=S,G.update();else S.el=k.el,S.placeholder=k.placeholder,G.vnode=S},X=(k,S,V,G,w,T,O)=>{let I=()=>{if(k.isMounted){let{next:x,bu:le,u:me,parent:ke,vnode:Me}=k;{let ct=Yr(k);if(ct){x&&(x.el=Me.el,re(k,x,O)),ct.asyncDep.then(()=>{lt(()=>{k.isUnmounted||L()},w)});return}}let Ve=x,We;ln(k,!1),x?(x.el=Me.el,re(k,x,O)):x=Me,le&&kn(le),(We=x.props&&x.props.onVnodeBeforeUpdate)&&Mt(We,ke,x,Me),ln(k,!0);let Ye=qs(k),Et=k.subTree;k.subTree=Ye,m(Et,Ye,b(Et.el),se(Et),k,w,T),x.el=Ye.el,Ve===null&&Mu(k,Ye.el),me&<(me,w),(We=x.props&&x.props.onVnodeUpdated)&<(()=>Mt(We,ke,x,Me),w)}else{let x,{el:le,props:me}=S,{bm:ke,m:Me,parent:Ve,root:We,type:Ye}=k,Et=xn(S);if(ln(k,!1),ke&&kn(ke),!Et&&(x=me&&me.onVnodeBeforeMount)&&Mt(x,Ve,S),ln(k,!0),le&&be){let ct=()=>{k.subTree=qs(k),be(le,k.subTree,k,w,null)};Et&&Ye.__asyncHydrate?Ye.__asyncHydrate(le,k,ct):ct()}else{We.ce&&We.ce._hasShadowRoot()&&We.ce._injectChildStyle(Ye,k.parent?k.parent.type:void 0);let ct=k.subTree=qs(k);m(null,ct,V,G,k,w,T),S.el=ct.el}if(Me&<(Me,w),!Et&&(x=me&&me.onVnodeMounted)){let ct=S;lt(()=>Mt(x,Ve,ct),w)}(S.shapeFlag&256||Ve&&xn(Ve.vnode)&&Ve.vnode.shapeFlag&256)&&k.a&<(k.a,w),k.isMounted=!0,S=V=G=null}};k.scope.on();let F=k.effect=new Sn(I);k.scope.off();let L=k.update=F.run.bind(F),ae=k.job=F.runIfDirty.bind(F);ae.i=k,ae.id=k.uid,F.scheduler=()=>zs(ae),ln(k,!0),L()},re=(k,S,V)=>{S.component=k;let G=k.vnode.props;k.vnode=S,k.next=null,$u(k,S.props,G,V),Hu(k,S.children,V),Nt(),yr(k),Rt()},Ee=(k,S,V,G,w,T,O,I,F=!1)=>{let L=k&&k.children,ae=k?k.shapeFlag:0,x=S.children,{patchFlag:le,shapeFlag:me}=S;if(le>0){if(le&128){Ae(L,x,V,G,w,T,O,I,F);return}else if(le&256){Te(L,x,V,G,w,T,O,I,F);return}}me&8?(ae&16&&H(L,w,T),x!==L&&y(V,x)):ae&16?me&16?Ae(L,x,V,G,w,T,O,I,F):H(L,w,T,!0):(ae&8&&y(V,""),me&16&&R(x,V,G,w,T,O,I,F))},Te=(k,S,V,G,w,T,O,I,F)=>{k=k||xt,S=S||xt;let L=k.length,ae=S.length,x=Math.min(L,ae),le;for(le=0;leae?H(k,w,T,!0,!1,x):R(S,V,G,w,T,O,I,F,x)},Ae=(k,S,V,G,w,T,O,I,F)=>{let L=0,ae=S.length,x=k.length-1,le=ae-1;for(;L<=x&&L<=le;){let me=k[L],ke=S[L]=F?Kt(S[L]):$t(S[L]);if(Qn(me,ke))m(me,ke,V,null,w,T,O,I,F);else break;L++}for(;L<=x&&L<=le;){let me=k[x],ke=S[le]=F?Kt(S[le]):$t(S[le]);if(Qn(me,ke))m(me,ke,V,null,w,T,O,I,F);else break;x--,le--}if(L>x){if(L<=le){let me=le+1,ke=mele)for(;L<=x;)_e(k[L],w,T,!0),L++;else{let me=L,ke=L,Me=new Map;for(L=ke;L<=le;L++){let pt=S[L]=F?Kt(S[L]):$t(S[L]);pt.key!=null&&Me.set(pt.key,L)}let Ve,We=0,Ye=le-ke+1,Et=!1,ct=0,Vn=new Array(Ye);for(L=0;L=Ye){_e(pt,w,T,!0);continue}let At;if(pt.key!=null)At=Me.get(pt.key);else for(Ve=ke;Ve<=le;Ve++)if(Vn[Ve-ke]===0&&Qn(pt,S[Ve])){At=Ve;break}At===void 0?_e(pt,w,T,!0):(Vn[At-ke]=L+1,At>=ct?ct=At:Et=!0,m(pt,S[At],V,null,w,T,O,I,F),We++)}let bi=Et?Wu(Vn):xt;for(Ve=bi.length-1,L=Ye-1;L>=0;L--){let pt=ke+L,At=S[pt],wi=S[pt+1],ki=pt+1{let{el:T,type:O,transition:I,children:F,shapeFlag:L}=k;if(L&6){Se(k.component.subTree,S,V,G);return}if(L&128){k.suspense.move(S,V,G);return}if(L&64){O.move(k,S,V,Z);return}if(O===K){i(T,S,V);for(let x=0;xI.enter(T),w));else{let{leave:x,delayLeave:le,afterLeave:me}=I,ke=()=>{k.ctx.isUnmounted?s(T):i(T,S,V)},Me=()=>{let Ve=T._isLeaving||!!T[Is];T._isLeaving&&T[Is](!0),I.persisted&&!Ve?ke():x(T,()=>{ke(),me&&me()})};le?le(T,ke,Me):Me()}else i(T,S,V)},_e=(k,S,V,G=!1,w=!1)=>{let{type:T,props:O,ref:I,children:F,dynamicChildren:L,shapeFlag:ae,patchFlag:x,dirs:le,cacheIndex:me,memo:ke}=k;if((x===-2||L&&L.hasOnce)&&(w=!1),I!=null&&(Nt(),Zn(I,null,V,k,!0),Rt()),me!=null&&(!k.ctx||k.ctx===S)&&(S.renderCache[me]=void 0),ae&256){S.ctx.deactivate(k);return}let Me=ae&1&&le,Ve=!xn(k),We;if(Ve&&(We=O&&O.onVnodeBeforeUnmount)&&Mt(We,S,k),ae&6)Ie(k.component,V,G);else{if(ae&128){k.suspense.unmount(V,G);return}Me&&an(k,null,S,"beforeUnmount"),ae&64?k.type.remove(k,S,V,Z,G):L&&!L.hasOnce&&(T!==K||x>0&&x&64)?H(L,S,V,!1,!0):(T===K&&x&384||!w&&ae&16)&&H(F,S,V),G&&ze(k)}let Ye=ke!=null&&me==null;(Ve&&(We=O&&O.onVnodeUnmounted)||Me||Ye)&<(()=>{We&&Mt(We,S,k),Me&&an(k,null,S,"unmounted"),Ye&&(k.el=null)},V)},ze=k=>{let{type:S,el:V,anchor:G,transition:w}=k,T=S===K;if(T&&!w){Ue(V,G);return}if(S===to){q(k),w&&!w.persisted&&w.afterLeave&&w.afterLeave();return}let O=T?Us(k):k,I=()=>{T?b(V)&&Ue(V,G):s(V),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(O&&O.shapeFlag&1&&w&&!w.persisted){let{leave:F,delayLeave:L}=w,ae=O.el,x=()=>F(ae,I);L?L(ae,I,x):x()}else I()},Ue=(k,S)=>{let V;for(;k!==S;)V=h(k),s(k),k=V;s(S)},Ie=(k,S,V)=>{let{bum:G,scope:w,job:T,subTree:O,um:I,m:F,a:L}=k;ur(F),ur(L),G&&kn(G),w.stop(),T?(T.flags|=8,_e(O,k,S,V)):k.vnode.el&&O&&(O.transition=k.vnode.transition,_e(O,k,S,V)),I&<(I,S),lt(()=>{k.isUnmounted=!0},S)},H=(k,S,V,G=!1,w=!1,T=0)=>{for(let O=T;O{if(k.shapeFlag&6)return se(k.component.subTree);if(k.shapeFlag&128)return k.suspense.next();let S=h(k.anchor||k.el),V=S&&S[cu];return V?h(V):S},Y=(k,S,V)=>{let G=k&&S._vnode?void 0:k&&k.component?k.component.uid:Zu();ru(()=>{k==null?S._vnode&&_e(S._vnode,null,null,!0):m(S._vnode||null,k,S,null,null,null,V),S._vnode=k},G)},Z={p:m,um:_e,m:Se,r:ze,mt:Q,mc:R,pc:Ee,pbc:ie,n:se,o:e},ue,be;return t&&([ue,be]=t(Z)),{render:Y,hydrate:ue,createApp:Tu(Y,ue)}}function Ms({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function ln({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Gu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Kr(e,t,o=!1){let i=e.children,s=t.children;if(he(i)&&he(s))for(let r=0;r>1,e[o[c]]0&&(t[i]=o[r-1]),o[r]=i)}}for(r=o.length,a=o[r-1];r-- >0;)o[r]=a,a=t[a];return o}function Yr(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yr(t)}function ur(e){if(e)for(let t=0;te.__isSuspense;function Ku(e,t){t&&t.pendingBranch?he(e)?t.effects.push(...e):t.effects.push(e):gr(e)}var K=Symbol.for("v-fgt"),Ko=Symbol.for("v-txt"),Tt=Symbol.for("v-cmt"),to=Symbol.for("v-stc"),dn=[],vt=null;function l(e=!1){dn.push(vt=e?null:[])}function Qr(){dn.pop(),vt=dn[dn.length-1]||null}var so=1;function Fo(e,t=!1){so+=e,e<0&&vt&&t&&(vt.hasOnce=!0)}function Xr(e){return e.dynamicChildren=so>0?vt||xt:null,Qr(),so>0&&vt&&vt.push(e),e}function d(e,t,o,i,s,r){return Xr(n(e,t,o,i,s,r,!0))}function Ft(e,t,o,i,s){return Xr(Ce(e,t,o,i,s,!0))}function io(e){return e?e.__v_isVNode===!0:!1}function Qn(e,t){return e.type===t.type&&e.key===t.key}var Zr=({key:e})=>e??null,qo=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||Ze(e)||ye(e)?{i:mt,r:e,k:t,f:!!o}:e:null);function n(e,t=null,o=null,i=0,s=null,r=e===K?0:1,a=!1,c=!1){let f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zr(t),ref:t&&qo(t),scopeId:kr,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:mt};return c?(Bo(f,o),r&128&&e.normalize(f)):o&&(f.shapeFlag|=Le(o)?8:16),so>0&&!a&&vt&&(f.patchFlag>0||r&6)&&f.patchFlag!==32&&vt.push(f),f}var Ce=Yu;function Yu(e,t=null,o=null,i=0,s=null,r=!1){if((!e||e===ku)&&(e=Tt),io(e)){let c=Rn(e,t,!0);return o&&Bo(c,o),so>0&&!r&&vt&&(c.shapeFlag&6?vt[vt.indexOf(e)]=c:vt.push(c)),c.patchFlag=-2,c}if(ic(e)&&(e=e.__vccOpts),t){t=Ju(t);let{class:c,style:f}=t;c&&!Le(c)&&(t.class=P(c)),De(f)&&(Jn(f)&&!he(f)&&(f=je({},f)),t.style=qe(f))}let a=Le(e)?1:Jr(e)?128:zo(e)?64:De(e)?4:ye(e)?2:0;return n(e,t,o,i,s,a,r,!0)}function Ju(e){return e?Jn(e)||Fr(e)?je({},e):e:null}function Rn(e,t,o=!1,i=!1){let{props:s,ref:r,patchFlag:a,children:c,transition:f}=e,g=t?Qu(s||{},t):s,y={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&Zr(g),ref:t&&t.ref?o&&r?he(r)?r.concat(qo(t)):[r,qo(t)]:qo(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:c,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==K?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Rn(e.ssContent),ssFallback:e.ssFallback&&Rn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return f&&i&&oo(y,f.clone(y)),y}function v(e=" ",t=0){return Ce(Ko,null,e,t)}function fe(e,t){let o=Ce(to,null,e);return o.staticCount=t,o}function p(e="",t=!1){return t?(l(),Ft(Tt,null,e)):Ce(Tt,null,e)}function $t(e){return e==null||typeof e=="boolean"?Ce(Tt):he(e)?Ce(K,null,e.slice()):io(e)?Kt(e):Ce(Ko,null,String(e))}function Kt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Rn(e)}function Bo(e,t){let o=0,{shapeFlag:i}=e;if(t==null)t=null;else if(he(t))o=16;else if(typeof t=="object")if(i&65){let s=t.default;s&&(s._c&&(s._d=!1),Bo(e,s()),s._c&&(s._d=!0));return}else{o=32;let s=t._;!s&&!Fr(t)?t._ctx=mt:s===3&&mt&&(mt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(ye(t)){if(i&65){Bo(e,{default:t});return}t={default:t,_ctx:mt},o=32}else t=String(t),i&64?(o=16,t=[v(t)]):o=8;e.children=t,e.shapeFlag|=o}function Qu(...e){let t={};for(let o=0;ott||mt,Ho,ro;{let e=$n(),t=(o,i)=>{let s;return(s=e[o])||(s=e[o]=[]),s.push(i),r=>{s.length>1?s.forEach(a=>a(r)):s[0](r)}};Ho=t("__VUE_INSTANCE_SETTERS__",o=>tt=o),ro=t("__VUE_SSR_SETTERS__",o=>Dn=o)}var po=e=>{let t=tt;return Ho(e),e.scope.on(),()=>{e.scope.off(),Ho(t)}},cr=()=>{tt&&tt.scope.off(),Ho(null)};function ea(e){return e.vnode.shapeFlag&4}var Dn=!1;function ec(e,t=!1,o=!1){t&&ro(t);let{props:i,children:s}=e.vnode,r=ea(e);Uu(e,i,r,t),Bu(e,s,o||t);let a=r?tc(e,t):void 0;return t&&ro(!1),a}function tc(e,t){let o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Eu);let{setup:i}=o;if(i){Nt();let s=e.setupContext=i.length>1?oc(e):null,r=po(e),a=ao(i,e,0,[e.props,s]),c=fs(a);if(Rt(),r(),(c||e.sp)&&!xn(e)&&js(e),c){if(a.then(cr,cr),t)return a.then(f=>{ro(!0);try{pr(e,f,t)}finally{ro(!1)}}).catch(f=>{lo(f,e,0)});e.asyncDep=a}else pr(e,a,t)}else ta(e,t)}function pr(e,t,o){ye(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:De(t)&&(e.setupState=Io(t)),ta(e,o)}var fr,hr;function ta(e,t,o){let i=e.type;if(!e.render){if(!t&&fr&&!i.render){let s=i.template||Gs(e).template;if(s){let{isCustomElement:r,compilerOptions:a}=e.appContext.config,{delimiters:c,compilerOptions:f}=i,g=je(je({isCustomElement:r,delimiters:c},a),f);i.render=fr(s,g)}}e.render=i.render||rt,hr&&hr(e)}{let s=po(e);Nt();try{Cu(e)}finally{Rt(),s()}}}var nc={get(e,t){return xe(e,"get",""),e[t]}};function oc(e){let t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,nc),slots:e.slots,emit:e.emit,expose:t}}function Yo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Io(Os(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in eo)return eo[o](e)},has(t,o){return o in t||o in eo}})):e.proxy}function sc(e,t=!0){return ye(e)?e.displayName||e.name:e.name||t&&e.__name}function ic(e){return ye(e)&&"__vccOpts"in e}var nt=(e,t)=>Xi(e,t,Dn);function we(e,t,o){try{Fo(-1);let i=arguments.length;return i===2?De(t)&&!he(t)?io(t)?Ce(e,null,[t]):Ce(e,t):Ce(e,null,t):(i>3?o=Array.prototype.slice.call(arguments,2):i===3&&io(o)&&(o=[o]),Ce(e,t,o))}finally{Fo(1)}}var rc="3.5.44";var Zs,na=typeof window<"u"&&window.trustedTypes;if(na)try{Zs=na.createPolicy("vue",{createHTML:e=>e})}catch{}var ha=Zs?e=>Zs.createHTML(e):e=>e,ac="http://www.w3.org/2000/svg",lc="http://www.w3.org/1998/Math/MathML",Jt=typeof document<"u"?document:null,oa=Jt&&Jt.createElement("template"),dc={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,i)=>{let s=t==="svg"?Jt.createElementNS(ac,e):t==="mathml"?Jt.createElementNS(lc,e):o?Jt.createElement(e,{is:o}):Jt.createElement(e);return e==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:e=>Jt.createTextNode(e),createComment:e=>Jt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Jt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,i,s,r){let a=o?o.previousSibling:t.lastChild;if(s&&(s===r||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),o),!(s===r||!(s=s.nextSibling)););else{oa.innerHTML=ha(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);let c=oa.content;if(i==="svg"||i==="mathml"){let f=c.firstChild;for(;f.firstChild;)c.appendChild(f.firstChild);c.removeChild(f)}t.insertBefore(c,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}};var uc=Symbol("_vtc");function cc(e,t,o){let i=e[uc];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}var Xo=Symbol("_vod"),ma=Symbol("_vsh"),W={name:"show",beforeMount(e,{value:t},{transition:o}){e[Xo]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):fo(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:i}){!t!=!o&&(i?t?(i.beforeEnter(e),fo(e,!0),i.enter(e)):i.leave(e,()=>{fo(e,!1)}):fo(e,t))},beforeUnmount(e,{value:t}){fo(e,t)}};function fo(e,t){e.style.display=t?e[Xo]:"none",e[ma]=!t}var pc=Symbol("");var fc=/(?:^|;)\s*display\s*:/;function hc(e,t,o){let i=e.style,s=Le(o),r=!1;if(o&&!s){if(t)if(Le(t))for(let a of t.split(";")){let c=a.slice(0,a.indexOf(":")).trim();o[c]==null&&ho(i,c,"")}else for(let a in t)o[a]==null&&ho(i,a,"");for(let a in o){a==="display"&&(r=!0);let c=o[a];c!=null?vc(e,a,!Le(t)&&t?t[a]:void 0,c)||ho(i,a,c):ho(i,a,"")}}else if(s){if(t!==o){let a=i[pc];a&&(o+=";"+a),i.cssText=o,r=fc.test(o)}}else t&&e.removeAttribute("style");Xo in e&&((!s||t!==o)&&(e[Xo]=r?i.display:""),e[ma]&&(i.display="none"))}var Jo=/\s*!important$/;function ho(e,t,o){if(he(o))o.forEach(i=>ho(e,t,i));else if(o==null&&(o=""),t.startsWith("--"))Jo.test(o)?e.setProperty(t,o.replace(Jo,""),"important"):e.setProperty(t,o);else{let i=mc(e,t);Jo.test(o)?e.setProperty(Ot(i),o.replace(Jo,""),"important"):e[i]=o}}var sa=["Webkit","Moz","ms"],Js={};function mc(e,t){let o=Js[t];if(o)return o;let i=Je(t);if(i!=="filter"&&i in e)return Js[t]=i;i=on(i);for(let s=0;sQs||(Ec.then(()=>Qs=0),Qs=Date.now());function Sc(e,t){let o=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=o.attached)return;let s=o.value;if(he(s)){let r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};let a=s.slice(),c=[i];for(let f=0;fe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,_c=(e,t,o,i,s,r)=>{let a=s==="svg";t==="class"?cc(e,i,a):t==="style"?hc(e,o,i):yn(t)?bn(t)||yc(e,t,o,i,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nc(e,t,i,a))?(aa(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ra(e,t,i,a,r,t!=="value")):e._isVueCE&&(Rc(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Le(i)))?aa(e,Je(t),i,r,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),ra(e,t,i,a))};function Nc(e,t,o,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&da(t)&&ye(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){let s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return da(t)&&Le(o)?!1:t in e}function Rc(e,t){let o=e._def.props;if(!o)return!1;let i=Je(t);return Array.isArray(o)?o.some(s=>Je(s)===i):Object.keys(o).some(s=>Je(s)===i)}var Tn=e=>{let t=e.props["onUpdate:modelValue"]||!1;return he(t)?o=>kn(t,o):t};function Dc(e){e.target.composing=!0}function ua(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}var Bt=Symbol("_assign"),Qo=Symbol("_initialValue");function Xs(e,t,o){return t&&(e=e.trim()),o&&(e=En(e)),e}var wt={created(e,{modifiers:{lazy:t,trim:o,number:i}},s){e.parentNode&&(e.type==="text"?e[Qo]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Qo]=e.defaultValue.replace(/\r\n?/g,` +`))),e[Bt]=Tn(s);let r=i||s.props&&s.props.type==="number";tn(e,t?"change":"input",a=>{a.target.composing||e[Bt](Xs(e.value,o,r))}),(o||r)&&tn(e,"change",()=>{e.value=Xs(e.value,o,r)}),t||(tn(e,"compositionstart",Dc),tn(e,"compositionend",ua),tn(e,"change",ua))},mounted(e,{value:t,modifiers:{trim:o,number:i}}){let s=t??"",r=e[Qo];delete e[Qo],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[Bt](Xs(e.value,o,i)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:i,trim:s,number:r}},a){if(e[Bt]=Tn(a),e.composing)return;let c=(r||e.type==="number")&&!/^0\d/.test(e.value)?En(e.value):e.value,f=t??"";if(c===f)return;let g=e.getRootNode();(g instanceof Document||g instanceof ShadowRoot)&&g.activeElement===e&&e.type!=="range"&&(i&&t===o||s&&e.value.trim()===f)||(e.value=f)}},xs={deep:!0,created(e,t,o){e[Bt]=Tn(o),tn(e,"change",()=>{let i=e._modelValue,s=mo(e),r=e.checked,a=e[Bt];if(he(i)){let c=So(i,s),f=c!==-1;if(r&&!f)a(i.concat(s));else if(!r&&f){let g=[...i];g.splice(c,1),a(g)}}else if(Ct(i)){let c=new Set(i);r?c.add(s):c.delete(s),a(c)}else a(va(e,r))})},mounted:ca,beforeUpdate(e,t,o){e[Bt]=Tn(o),ca(e,t,o)}};function ca(e,{value:t,oldValue:o},i){e._modelValue=t;let s;if(he(t))s=So(t,i.props.value)>-1;else if(Ct(t))s=t.has(i.props.value);else{if(t===o)return;s=St(t,va(e,!0))}e.checked!==s&&(e.checked=s)}var pn={deep:!0,created(e,{value:t,modifiers:{number:o}},i){e._modelValue=t,tn(e,"change",()=>{let s=Array.prototype.filter.call(e.options,f=>f.selected).map(f=>o?En(mo(f)):mo(f)),r=e.multiple,a=r?Ct(e._modelValue)?new Set(s):s:s[0],c=e._pendingValue=[r,r?he(a)?s.slice():s:a];try{e[Bt](a)}finally{Ke(()=>{e._pendingValue===c&&(e._pendingValue=void 0)})}}),e[Bt]=Tn(i)},mounted(e,{value:t}){pa(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[Bt]=Tn(o)},updated(e,{value:t}){let o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!Tc(t,o[1],o[0]))&&pa(e,t)}};function Tc(e,t,o){if(!o)return St(e,t);if(he(e))return St(e,t);if(Ct(e)){if(e.size!==t.length)return!1;for(let i of t)if(!e.has(i))return!1;return!0}return!1}function pa(e,t){let o=e.multiple,i=he(t);if(!(o&&!i&&!Ct(t))){for(let s=0,r=e.options.length;sString(g)===String(c)):a.selected=So(t,c)>-1}else a.selected=t.has(c);else if(St(mo(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function mo(e){return"_value"in e?e._value:e.value}function va(e,t){let o=t?"_trueValue":"_falseValue";return o in e?e[o]:t}var Ac=["ctrl","shift","alt","meta"],Oc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ac.some(o=>e[`${o}Key`]&&!t.includes(o))},de=(e,t)=>{if(!e)return e;let o=e._withMods||(e._withMods={}),i=t.join(".");return o[i]||(o[i]=((s,...r)=>{for(let a=0;a{let o=e._withKeys||(e._withKeys={}),i=t.join(".");return o[i]||(o[i]=(s=>{if(!("key"in s))return;let r=Ot(s.key);if(t.some(a=>a===r||Pc[a]===r))return e(s)}))},Ic=je({patchProp:_c},dc),fa;function Vc(){return fa||(fa=Wr(Ic))}var ga=((...e)=>{let t=Vc().createApp(...e),{mount:o}=t;return t.mount=i=>{let s=Mc(i);if(!s)return;let r=t._component;!ye(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=o(s,!1,qc(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function qc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Mc(e){return Le(e)?document.querySelector(e):e}var mn=typeof document<"u";function ba(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ba(e.default)}var Oe=Object.assign;function Zo(e,t){let o={};for(let i in t){let s=t[i];o[i]=kt(s)?s.map(e):e(s)}return o}var Pn=()=>{},kt=Array.isArray;function ni(e,t){let o={};for(let i in e)o[i]=i in t?t[i]:e[i];return o}var wa=/#/g,$c=/&/g,Lc=/\//g,Fc=/=/g,Bc=/\?/g,ka=/\+/g,Hc=/%5B/g,zc=/%5D/g,Ea=/%5E/g,jc=/%60/g,Ca=/%7B/g,Gc=/%7C/g,Sa=/%7D/g,Wc=/%20/g;function oi(e){return e==null?"":encodeURI(""+e).replace(Gc,"|").replace(Hc,"[").replace(zc,"]")}function _a(e){return oi(e).replace(Ca,"{").replace(Sa,"}").replace(Ea,"^")}function ei(e){return oi(e).replace(ka,"%2B").replace(Wc,"+").replace(wa,"%23").replace($c,"%26").replace(jc,"`").replace(Ca,"{").replace(Sa,"}").replace(Ea,"^")}function Kc(e){return ei(e).replace(Fc,"%3D")}function Yc(e){return oi(e).replace(wa,"%23").replace(Bc,"%3F")}function Na(e){return Yc(e).replace(Lc,"%2F")}function On(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Jc=/\/$/,Qc=e=>e.replace(Jc,"");function xo(e,t,o="/"){let i,s={},r="",a="",c=t.indexOf("#"),f=t.indexOf("?");return f=c>=0&&f>c?-1:f,f>=0&&(i=t.slice(0,f),r=t.slice(f,c>0?c:t.length),s=e(r.slice(1))),c>=0&&(i=i||t.slice(0,c),a=t.slice(c,t.length)),i=Zc(i??t,o),{fullPath:i+r+a,path:i,query:s,hash:On(a)}}function Ra(e,t){let o=t.query?e(t.query):"";return t.path+(o&&"?")+o+(t.hash||"")}function si(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Da(e,t,o){let i=t.matched.length-1,s=o.matched.length-1;return i>-1&&i===s&&fn(t.matched[i],o.matched[s])&&ii(t.params,o.params)&&e(t.query)===e(o.query)&&t.hash===o.hash}function fn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ii(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var o in e)if(!Xc(e[o],t[o]))return!1;return!0}function Xc(e,t){return kt(e)?ya(e,t):kt(t)?ya(t,e):e?.valueOf()===t?.valueOf()}function ya(e,t){return kt(t)?e.length===t.length&&e.every((o,i)=>o===t[i]):e.length===1&&e[0]===t}function Zc(e,t){if(e.startsWith("/"))return e;if(!e)return t;let o=t.split("/"),i=e.split("/"),s=i[i.length-1];(s===".."||s===".")&&i.push("");let r=o.length-1,a,c;for(a=0;a1&&r--;else break;return o.slice(0,r).join("/")+"/"+i.slice(a).join("/")}var Xt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},es=(function(e){return e.pop="pop",e.push="push",e})({}),ts=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Ta(e){if(!e)if(mn){let t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Qc(e)}var xc=/^[^#]+#/;function Aa(e,t){return e.replace(xc,"#")+t}function ep(e,t){let o=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-o.left-(t.left||0),top:i.top-o.top-(t.top||0)}}var vo=()=>({left:window.scrollX,top:window.scrollY});function Oa(e){let t;if("el"in e){let o=e.el,i=typeof o=="string"&&o.startsWith("#"),s=typeof o=="string"?i?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!s)return;t=ep(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function ri(e,t){return(history.state?history.state.position-t:-1)+e}var ti=new Map;function Pa(e,t){ti.set(e,t)}function Ia(e){let t=ti.get(e);return ti.delete(e),t}function tp(e){return typeof e=="string"||e&&typeof e=="object"}function ai(e){return typeof e=="string"||typeof e=="symbol"}var He=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({}),Va=Symbol("");var NL={[He.MATCHER_NOT_FOUND]({location:e,currentLocation:t}){return`No match for ${JSON.stringify(e)}${t?` while being at -`+JSON.stringify(t):""}`},[ze.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${op(t)}" via a navigation guard.`},[ze.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[ze.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[ze.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function hn(e,t){return Ae(new Error,{type:e,[Va]:!0},t)}function Ht(e,t){return e instanceof Error&&Va in e&&(t==null||!!(e.type&t))}var np=["params","query","hash"];function op(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let o of np)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function qa(e){let t={};if(e===""||e==="?")return t;let o=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;is&&ei(s)):[i&&ei(i)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+o,s!=null&&(t+="="+s))})}return t}function Ma(e){let t={};for(let o in e){let i=e[o];i!==void 0&&(t[o]=kt(i)?i.map(s=>s==null?null:""+s):i==null?i:""+i)}return t}var Ua=Symbol(""),di=Symbol(""),ns=Symbol(""),os=Symbol(""),ss=Symbol("");function In(){let e=[];function t(i){return e.push(i),()=>{let s=e.indexOf(i);s>-1&&e.splice(s,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function Qt(e,t,o,i,s,r=a=>a()){let a=i&&(i.enterCallbacks[s]=i.enterCallbacks[s]||[]);return()=>new Promise((c,f)=>{let g=h=>{h===!1?f(hn(ze.NAVIGATION_ABORTED,{from:o,to:t})):h instanceof Error?f(h):tp(h)?f(hn(ze.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(a&&i.enterCallbacks[s]===a&&typeof h=="function"&&a.push(h),c())},y=r(()=>e.call(i&&i.instances[s],t,o,g)),b=Promise.resolve(y);e.length<3&&(b=b.then(g)),b.catch(h=>f(h))})}function is(e,t,o,i,s=r=>r()){let r=[];for(let a of e)for(let c in a.components){let f=a.components[c];if(!(t!=="beforeRouteEnter"&&!a.instances[c]))if(ba(f)){let g=(f.__vccOpts||f)[t];g&&r.push(Qt(g,o,i,a,c,s))}else{let g=f();r.push(()=>g.then(y=>{if(!y)throw new Error(`Couldn't resolve component "${c}" at "${a.path}"`);let b=Uc(y)?y.default:y;a.mods[c]=y,a.components[c]=b;let h=(b.__vccOpts||b)[t];return h&&Qt(h,o,i,a,c,s)()}))}}return r}function $a(e,t){let o=[],i=[],s=[],r=Math.max(t.matched.length,e.matched.length);for(let a=0;afn(g,c))?i.push(c):o.push(c));let f=e.matched[a];f&&(t.matched.find(g=>fn(g,f))||s.push(f))}return[o,i,s]}var sp=()=>location.protocol+"//"+location.host;function Ja(e,t){let{pathname:o,search:i,hash:s}=t,r=e.indexOf("#");if(r>-1){let a=s.includes(e.slice(r))?e.slice(r).length:1,c=s.slice(a);return c[0]!=="/"&&(c="/"+c),si(c,"")}return si(o,e)+i+s}function ip(e,t,o,i){let s=[],r=[],a=null,c=({state:h})=>{let E=Ja(e,location),_=o.value,m=t.value,C=0;if(h){if(o.value=E,t.value=h,a&&a===_){a=null;return}C=m?h.position-m.position:0}else i(E);s.forEach(N=>{N(o.value,_,{delta:C,type:es.pop,direction:C?C>0?ts.forward:ts.back:ts.unknown})})};function f(){a=o.value}function g(h){s.push(h);let E=()=>{let _=s.indexOf(h);_>-1&&s.splice(_,1)};return r.push(E),E}function y(){if(document.visibilityState==="hidden"){let{history:h}=window;if(!h.state)return;h.replaceState(Ae({},h.state,{scroll:vo()}),"")}}function b(){for(let h of r)h();r=[],window.removeEventListener("popstate",c),window.removeEventListener("pagehide",y),document.removeEventListener("visibilitychange",y)}return window.addEventListener("popstate",c),window.addEventListener("pagehide",y),document.addEventListener("visibilitychange",y),{pauseListeners:f,listen:g,destroy:b}}function La(e,t,o,i=!1,s=!1){return{back:e,current:t,forward:o,replaced:i,position:window.history.length,scroll:s?vo():null}}function rp(e){let{history:t,location:o}=window,i={value:Ja(e,o)},s={value:t.state};s.value||r(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(f,g,y){let b=e.indexOf("#"),h=b>-1?(o.host&&document.querySelector("base")?e:e.slice(b))+f:sp()+e+f;try{t[y?"replaceState":"pushState"](g,"",h),s.value=g}catch(E){console.error(E),o[y?"replace":"assign"](h)}}function a(f,g){r(f,Ae({},t.state,La(s.value.back,f,s.value.forward,!0),g,{position:s.value.position}),!0),i.value=f}function c(f,g){let y=Ae({},s.value,t.state,{forward:f,scroll:vo()});r(y.current,y,!0),r(f,Ae({},La(i.value,f,null),{position:y.position+1},g),!1),i.value=f}return{location:i,state:s,push:c,replace:a}}function Qa(e){e=Ta(e);let t=rp(e),o=ip(e,t.state,t.location,t.replace);function i(r,a=!0){a||o.pauseListeners(),history.go(r)}let s=Ae({location:"",base:e,go:i,createHref:Aa.bind(null,e)},t,o);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}var vn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({}),Xe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Xe||{}),ap={type:vn.Static,value:""},lp=/[a-zA-Z0-9_]/;function dp(e){if(!e)return[[]];if(e==="/")return[[ap]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(E){throw new Error(`ERR (${o})/"${g}": ${E}`)}let o=Xe.Static,i=o,s=[],r;function a(){r&&s.push(r),r=[]}let c=0,f,g="",y="";function b(){g&&(o===Xe.Static?r.push({type:vn.Static,value:g}):o===Xe.Param||o===Xe.ParamRegExp||o===Xe.ParamRegExpEnd?(r.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${g}) must be alone in its segment. eg: '/:ids+.`),r.push({type:vn.Param,value:g,regexp:y,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),g="")}function h(){g+=f}for(;ct.length?t.length===1&&t[0]===it.Static+it.Segment?1:-1:0}function Xa(e,t){let o=0,i=e.score,s=t.score;for(;o0&&t[t.length-1]<0}var hp={strict:!1,end:!0,sensitive:!1};function mp(e,t,o){let i=pp(dp(e.path),o),s=Ae(i,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function vp(e,t){let o=[],i=new Map;t=ni(hp,t);function s(b){return i.get(b)}function r(b,h,E){let _=!E,m=za(b);m.aliasOf=E&&E.record;let C=ni(t,b),N=[m];if("alias"in b){let L=typeof b.alias=="string"?[b.alias]:b.alias;for(let U of L)N.push(za(Ae({},m,{components:E?E.record.components:m.components,path:U,aliasOf:E?E.record:m})))}let O,q;for(let L of N){let{path:U}=L;if(h&&U[0]!=="/"){let z=h.record.path,ne=z[z.length-1]==="/"?"":"/";L.path=h.record.path+(U&&ne+U)}if(O=mp(L,h,C),E?E.alias.push(O):(q=q||O,q!==O&&q.alias.push(O),_&&b.name&&!ja(O)&&a(b.name)),Za(O)&&f(O),m.children){let z=m.children;for(let ne=0;ne{a(q)}:Pn}function a(b){if(ai(b)){let h=i.get(b);h&&(i.delete(b),o.splice(o.indexOf(h),1),h.children.forEach(a),h.alias.forEach(a))}else{let h=o.indexOf(b);h>-1&&(o.splice(h,1),b.record.name&&i.delete(b.record.name),b.children.forEach(a),b.alias.forEach(a))}}function c(){return o}function f(b){let h=bp(b,o);o.splice(h,0,b),b.record.name&&!ja(b)&&i.set(b.record.name,b)}function g(b,h){let E,_={},m,C;if("name"in b&&b.name){if(E=i.get(b.name),!E)throw hn(ze.MATCHER_NOT_FOUND,{location:b});C=E.record.name,_=Ae(Ha(h.params,E.keys.filter(q=>!q.optional).concat(E.parent?E.parent.keys.filter(q=>q.optional):[]).map(q=>q.name)),b.params&&Ha(b.params,E.keys.map(q=>q.name))),m=E.stringify(_)}else if(b.path!=null)m=b.path,E=o.find(q=>q.re.test(m)),E&&(_=E.parse(m),C=E.record.name);else{if(E=h.name?i.get(h.name):o.find(q=>q.re.test(h.path)),!E)throw hn(ze.MATCHER_NOT_FOUND,{location:b,currentLocation:h});C=E.record.name,_=Ae({},h.params,b.params),m=E.stringify(_)}let N=[],O=E;for(;O;)N.unshift(O.record),O=O.parent;return{name:C,path:m,params:_,matched:N,meta:yp(N)}}e.forEach(b=>r(b));function y(){o.length=0,i.clear()}return{addRoute:r,resolve:g,removeRoute:a,clearRoutes:y,getRoutes:c,getRecordMatcher:s}}function Ha(e,t){let o={};for(let i of t)i in e&&(o[i]=e[i]);return o}function za(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:gp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function gp(e){let t={},o=e.props||!1;if("component"in e)t.default=o;else for(let i in e.components)t[i]=typeof o=="object"?o[i]:o;return t}function ja(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function yp(e){return e.reduce((t,o)=>Ae(t,o.meta),{})}function bp(e,t){let o=0,i=t.length;for(;o!==i;){let r=o+i>>1;Xa(e,t[r])<0?i=r:o=r+1}let s=wp(e);return s&&(i=t.lastIndexOf(s,i-1)),i}function wp(e){let t=e;for(;t=t.parent;)if(Za(t)&&Xa(e,t)===0)return t}function Za({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ga(e){let t=dt(ns),o=dt(os),i=!1,s=null,r=nt(()=>{let y=Wt(e.to);return t.resolve(y)}),a=nt(()=>{let{matched:y}=r.value,{length:b}=y,h=y[b-1],E=o.matched;if(!h||!E.length)return-1;let _=E.findIndex(fn.bind(null,h));if(_>-1)return _;let m=Wa(y[b-2]);return b>1&&Wa(h)===m&&E[E.length-1].path!==m?E.findIndex(fn.bind(null,y[b-2])):_}),c=nt(()=>a.value>-1&&_p(o.params,r.value.params)),f=nt(()=>a.value>-1&&a.value===o.matched.length-1&&ii(o.params,r.value.params));function g(y={}){if(Sp(y)){let b=t[Wt(e.replace)?"replace":"push"](Wt(e.to)).catch(Pn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>b),b}return Promise.resolve()}return{route:r,href:nt(()=>r.value.href),isActive:c,isExactActive:f,navigate:g}}function kp(e){return e.length===1?e[0]:e}var Ep=uo({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Ga,setup(e,{slots:t}){let o=Fe(Ga(e)),{options:i}=dt(ns),s=nt(()=>({[Ka(e.activeClass,i.linkActiveClass,"router-link-active")]:o.isActive,[Ka(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{let r=t.default&&kp(t.default(o));return e.custom?r:be("a",{"aria-current":o.isExactActive?e.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:s.value},r)}}}),Cp=Ep;function Sp(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function _p(e,t){for(let o in t){let i=t[o],s=e[o];if(typeof i=="string"){if(i!==s)return!1}else if(!kt(s)||s.length!==i.length||i.some((r,a)=>r.valueOf()!==s[a].valueOf()))return!1}return!0}function Wa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}var Ka=(e,t,o)=>e??t??o,Np=uo({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:o}){let i=dt(ss),s=nt(()=>e.route||i.value),r=dt(di,0),a=nt(()=>{let g=Wt(r),{matched:y}=s.value,b;for(;(b=y[g])&&!b.components;)g++;return g}),c=nt(()=>s.value.matched[a.value]);un(di,nt(()=>a.value+1)),un(Ua,c),un(ss,s);let f=et();return He(()=>[f.value,c.value,e.name],([g,y,b],[h,E,_])=>{y&&(y.instances[b]=g,E&&E!==y&&g&&g===h&&(y.leaveGuards.size||(y.leaveGuards=E.leaveGuards),y.updateGuards.size||(y.updateGuards=E.updateGuards))),g&&y&&(!E||!fn(y,E)||!h)&&(y.enterCallbacks[b]||[]).forEach(m=>m(g))},{flush:"post"}),()=>{let g=s.value,y=e.name,b=c.value,h=b&&b.components[y];if(!h)return Ya(o.default,{Component:h,route:g});let E=b.props[y],_=E?E===!0?g.params:typeof E=="function"?E(g):E:null,C=be(h,Ae({},_,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(b.instances[y]=null)},ref:f}));return Ya(o.default,{Component:C,route:g})||C}}});function Ya(e,t){if(!e)return null;let o=e(t);return o.length===1?o[0]:o}var ui=Np;function xa(e){let t=vp(e.routes,e),o=e.parseQuery||qa,i=e.stringifyQuery||li,s=e.history,r=In(),a=In(),c=In(),f=Po(Xt),g=Xt;mn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");let y=Zo.bind(null,H=>""+H),b=Zo.bind(null,Na),h=Zo.bind(null,On);function E(H,ee){let Q,oe;return ai(H)?(Q=t.getRecordMatcher(H),oe=ee):oe=H,t.addRoute(oe,Q)}function _(H){let ee=t.getRecordMatcher(H);ee&&t.removeRoute(ee)}function m(){return t.getRoutes().map(H=>H.record)}function C(H){return!!t.getRecordMatcher(H)}function N(H,ee){if(ee=Ae({},ee||f.value),typeof H=="string"){let S=xo(o,H,ee.path),M=t.resolve({path:S.path},ee),j=s.createHref(S.fullPath);return Ae(S,M,{params:h(M.params),hash:On(S.hash),redirectedFrom:void 0,href:j})}let Q;if(H.path!=null)Q=Ae({},H,{path:xo(o,H.path,ee.path).path});else{let S=Ae({},H.params);for(let M in S)S[M]==null&&delete S[M];Q=Ae({},H,{params:b(S)}),ee.params=b(ee.params)}let oe=t.resolve(Q,ee),ve=H.hash||"";oe.params=y(h(oe.params));let Ce=Ra(i,Ae({},H,{hash:_a(ve),path:oe.path})),k=s.createHref(Ce);return Ae({fullPath:Ce,hash:ve,query:i===li?Ma(H.query):H.query||{}},oe,{redirectedFrom:void 0,href:k})}function O(H){return typeof H=="string"?xo(o,H,f.value.path):Ae({},H)}function q(H,ee){if(g!==H)return hn(ze.NAVIGATION_CANCELLED,{from:ee,to:H})}function L(H){return ne(H)}function U(H){return L(Ae(O(H),{replace:!0}))}function z(H,ee){let Q=H.matched[H.matched.length-1];if(Q&&Q.redirect){let{redirect:oe}=Q,ve=typeof oe=="function"?oe(H,ee):oe;return typeof ve=="string"&&(ve=ve.includes("?")||ve.includes("#")?ve=O(ve):{path:ve},ve.params={}),Ae({query:H.query,hash:H.hash,params:ve.path!=null?{}:H.params},ve)}}function ne(H,ee){let Q=g=N(H),oe=f.value,ve=H.state,Ce=H.force,k=H.replace===!0,S=z(Q,oe);if(S)return ne(Ae(O(S),{state:typeof S=="object"?Ae({},ve,S.state):ve,force:Ce,replace:k}),ee||Q);let M=Q;M.redirectedFrom=ee;let j;return!Ce&&Da(i,oe,Q)&&(j=hn(ze.NAVIGATION_DUPLICATED,{to:M,from:oe}),$e(oe,oe,!0,!1)),(j?Promise.resolve(j):V(M,oe)).catch(w=>Ht(w)?Ht(w,ze.NAVIGATION_GUARD_REDIRECT)?w:Ve(w):le(w,M,oe)).then(w=>{if(w){if(Ht(w,ze.NAVIGATION_GUARD_REDIRECT))return ne(Ae({replace:k},O(w.to),{state:typeof w.to=="object"?Ae({},ve,w.to.state):ve,force:Ce}),ee||M)}else w=X(M,oe,!0,k,ve);return Y(M,oe,w),w})}function x(H,ee){let Q=q(H,ee);return Q?Promise.reject(Q):Promise.resolve()}function R(H){let ee=Be.values().next().value;return ee&&typeof ee.runWithContext=="function"?ee.runWithContext(H):H()}function V(H,ee){let Q,[oe,ve,Ce]=$a(H,ee);Q=is(oe.reverse(),"beforeRouteLeave",H,ee);for(let S of oe)S.leaveGuards.forEach(M=>{Q.push(Qt(M,H,ee))});let k=x.bind(null,H,ee);return Q.push(k),ke(Q).then(()=>{Q=[];for(let S of r.list())Q.push(Qt(S,H,ee));return Q.push(k),ke(Q)}).then(()=>{Q=is(ve,"beforeRouteUpdate",H,ee);for(let S of ve)S.updateGuards.forEach(M=>{Q.push(Qt(M,H,ee))});return Q.push(k),ke(Q)}).then(()=>{Q=[];for(let S of Ce)if(S.beforeEnter)if(kt(S.beforeEnter))for(let M of S.beforeEnter)Q.push(Qt(M,H,ee));else Q.push(Qt(S.beforeEnter,H,ee));return Q.push(k),ke(Q)}).then(()=>(H.matched.forEach(S=>S.enterCallbacks={}),Q=is(Ce,"beforeRouteEnter",H,ee,R),Q.push(k),ke(Q))).then(()=>{Q=[];for(let S of a.list())Q.push(Qt(S,H,ee));return Q.push(k),ke(Q)}).catch(S=>Ht(S,ze.NAVIGATION_CANCELLED)?S:Promise.reject(S))}function Y(H,ee,Q){c.list().forEach(oe=>R(()=>oe(H,ee,Q)))}function X(H,ee,Q,oe,ve){let Ce=q(H,ee);if(Ce)return Ce;let k=ee===Xt,S=mn?history.state:{};Q&&(oe||k?s.replace(H.fullPath,Ae({scroll:k&&S&&S.scroll},ve)):s.push(H.fullPath,ve)),f.value=H,$e(H,ee,Q,k),Ve()}let G;function J(){G||(G=s.listen((H,ee,Q)=>{if(!Me.listening)return;let oe=N(H),ve=z(oe,Me.currentRoute.value);if(ve){ne(Ae(ve,{replace:!0,force:!0}),oe).catch(Pn);return}g=oe;let Ce=f.value;mn&&Pa(ri(Ce.fullPath,Q.delta),vo()),V(oe,Ce).catch(k=>Ht(k,ze.NAVIGATION_ABORTED|ze.NAVIGATION_CANCELLED)?k:Ht(k,ze.NAVIGATION_GUARD_REDIRECT)?(ne(Ae(O(k.to),{force:!0}),oe).then(S=>{Ht(S,ze.NAVIGATION_ABORTED|ze.NAVIGATION_DUPLICATED)&&!Q.delta&&Q.type===es.pop&&s.go(-1,!1)}).catch(Pn),Promise.reject()):(Q.delta&&s.go(-Q.delta,!1),le(k,oe,Ce))).then(k=>{k=k||X(oe,Ce,!1),k&&(Q.delta&&!Ht(k,ze.NAVIGATION_CANCELLED)?s.go(-Q.delta,!1):Q.type===es.pop&&Ht(k,ze.NAVIGATION_ABORTED|ze.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),Y(oe,Ce,k)}).catch(Pn)}))}let ie=In(),ue=In(),de;function le(H,ee,Q){Ve(H);let oe=ue.list();return oe.length?oe.forEach(ve=>ve(H,ee,Q)):console.error(H),Promise.reject(H)}function _e(){return de&&f.value!==Xt?Promise.resolve():new Promise((H,ee)=>{ie.add([H,ee])})}function Ve(H){return de||(de=!H,J(),ie.list().forEach(([ee,Q])=>H?Q(H):ee()),ie.reset()),H}function $e(H,ee,Q,oe){let{scrollBehavior:ve}=e;if(!mn||!ve)return Promise.resolve();let Ce=!Q&&Ia(ri(H.fullPath,0))||(oe||!Q)&&history.state&&history.state.scroll||null;return Ke().then(()=>ve(H,ee,Ce)).then(k=>k&&Oa(k)).catch(k=>le(k,H,ee))}let De=H=>s.go(H),Ne,Be=new Set,Me={currentRoute:f,listening:!0,addRoute:E,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:m,resolve:N,options:e,push:L,replace:U,go:De,back:()=>De(-1),forward:()=>De(1),beforeEach:r.add,beforeResolve:a.add,afterEach:c.add,onError:ue.add,isReady:_e,install(H){H.component("RouterLink",Cp),H.component("RouterView",ui),H.config.globalProperties.$router=Me,Object.defineProperty(H.config.globalProperties,"$route",{enumerable:!0,get:()=>Wt(f)}),mn&&!Ne&&f.value===Xt&&(Ne=!0,L(s.location).catch(oe=>{}));let ee={};for(let oe in Xt)Object.defineProperty(ee,oe,{get:()=>f.value[oe],enumerable:!0});H.provide(ns,Me),H.provide(os,Yn(ee)),H.provide(ss,f);let Q=H.unmount;Be.add(H),H.unmount=function(){Be.delete(H),Be.size<1&&(g=Xt,G&&G(),G=null,f.value=Xt,Ne=!1,de=!1),Q()}}};function ke(H){return H.reduce((ee,Q)=>ee.then(()=>R(Q)),Promise.resolve())}return Me}function el(e){return dt(os)}var rs=new WeakMap;function ci(e){if(!rs.has(e)){let t=e.get("/api/billing/").finally(()=>rs.delete(e));rs.set(e,t)}return rs.get(e)}function as(e,t,o=()=>{},i={}){let s=new URLSearchParams(window.location.search).get("billing");e.billing=null,e.billingLoading=!0,e.billingBusy=!1,e.billingError="",e.billingNotice="",e.billingPending=s==="success"||s==="portal",e.billingRepository="";let r={billing_invalid_draft:"This draft could not be saved. Your form is unchanged. Try again.",billing_draft_not_found:"This checkout draft is unavailable or expired. Your local form is unchanged.",billing_recovery_required:"Your earlier payment needs verification. Please contact support before paying again.",billing_checkout_disabled:"New purchases are temporarily unavailable. You can still manage existing billing.",billing_unavailable:"Payments are not available yet. Please try again later.",billing_subscription_exists:"You already have a subscription. Use Manage billing to change or cancel it.",billing_checkout_in_progress:"You have another checkout open. Complete it or wait for it to expire before choosing a different plan.",billing_busy:"Another billing request is processing. Please try again shortly.",billing_already_paid:"This repository or conference already has an active paid package.",billing_invalid_review_window:"Conference packages cover up to 180 days. Check the review dates.",billing_invalid_conference:"Only a conference owner can pay for a conference awaiting payment.",repo_not_found:"Enter the ID of an existing repository that you own."};e.billingPrice=f=>f.amount==null?"Price shown at checkout":new Intl.NumberFormat(void 0,{style:"currency",currency:f.currency}).format(f.amount/100)+(f.interval?` / ${f.intervalCount>1?f.intervalCount+" ":""}${f.interval}`:" once"),e.billingBytes=f=>{let g=Number(f)||0;if(g<1024)return`${g} B`;let y=Math.min(4,Math.floor(Math.log2(g)/10));return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(g/1024**y)} ${["B","KiB","MiB","GiB","TiB"][y]}`},e.billingDate=f=>f?new Date(f).toLocaleDateString():"",e.loadBilling=()=>(e.billingError="",e.billingLoading=!0,ci(t).then(f=>{e.billing=f.data,e.emit?.("billing:updated",f.data)}).catch(()=>{e.billingError="Billing could not be loaded. Try again."}).finally(()=>{e.billingLoading=!1}));async function a(f,g,y=!0){if(!(e.billingBusy||!e.billing?.csrf)){e.billingBusy=!0,e.billingError="";try{let b=await t.post(`/api/billing/${f}`,g,{headers:{"x-csrf-token":e.billing.csrf}});if(y)window.location.assign(b.data.url);else return await e.loadBilling(),await o(),e.billingPending=!!b.data.pending,e.emit?.("billing:pending",e.billingPending),e.billingNotice=b.data.pending?"Your payment is still pending. Please do not pay again.":i.confirmedMessage||"Billing status refreshed. Your confirmed access appears below.",b.data}catch(b){e.billingError=r[b.data?.error]||"The billing request failed. Please try again."}finally{e.billingBusy=!1}}}e.checkout=(f,g="",y={})=>a("checkout",{planId:f,target:g,...y}),e.billingPortal=()=>a("portal",{}),e.refreshBilling=()=>a("refresh",{},!1);async function c(){for(let f=0;f<5;f++){let g=await e.refreshBilling();if(!g||!g.pending)return;await new Promise(y=>window.setTimeout(y,3e3))}e.billingNotice="Confirmation is taking longer than usual. You can refresh payment status later. Please do not pay again."}e.loadBilling().then(()=>{s==="success"||s==="portal"?(e.billingNotice="Checking your payment. Paid access starts after confirmation.",c()):s==="cancelled"&&(e.billingNotice="Checkout was closed. No new paid access has been activated.")})}function tl(e,t){return t?.split(".").reduce((o,i)=>o?.[i],e)}function pi(e=null,t=new Map){let o=Fe({}),i=[],s=!1,r=new Proxy(o,{get(a,c){return typeof c=="string"&&c.startsWith("__v_")||Reflect.has(a,c)?Reflect.get(a,c):e?.[c]}});return Object.defineProperty(o,"parent",{value:e,configurable:!0}),Object.defineProperty(o,"viewState",{get:()=>r}),r.watch=(a,c,f=!1,g=!0)=>{let y=typeof a=="function"?()=>a(r):()=>tl(r,a),b=He(y,c,{deep:f,flush:"post"});return i.push(b),g&&Ke(()=>{s||c(y(),y())}),b},r.watchGroup=(a,c,f=!0)=>r.watch(()=>a.map(g=>tl(r,g)),c,!0,f),r.on=(a,c)=>{if(a==="dispose")return i.push(c),()=>{};t.has(a)||t.set(a,new Set),t.get(a).add(c);let f=()=>t.get(a)?.delete(c);return i.push(f),f},r.emit=(a,...c)=>{for(let f of[...t.get(a)||[]])f({},...c)},r.dispose=()=>{s=!0,i.splice(0).reverse().forEach(a=>a())},Wn(r.dispose),r}function ut(){let e=new Set,t=new Set,o=!1,i=(r,a=0)=>{if(o)return;let c=setTimeout(()=>{e.delete(c),r()},a);return e.add(c),c};i.cancel=r=>{clearTimeout(r),e.delete(r)};let s=(r,a)=>{if(o)return;let c=setInterval(r,a);return t.add(c),c};return s.cancel=r=>{clearInterval(r),t.delete(r)},Wn(()=>{o=!0,e.forEach(clearTimeout),t.forEach(clearInterval)}),{timeout:i,interval:s}}function Zt(){let e=new Set;return Wn(()=>{e.forEach(t=>t()),e.clear()}),(t,o,i,s)=>{t.addEventListener(o,i,s);let r=()=>{t.removeEventListener(o,i,s),e.delete(r)};return e.add(r),r}}function fi(e,t,o){let i,s=!1,r="form-draft:"+o,a=()=>Object.fromEntries(t.map(h=>[h,e[h]])),c=()=>JSON.stringify(a()),f=h=>{for(let E of t)Object.prototype.hasOwnProperty.call(h,E)&&(e[E]=h[E]);e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate))},g=()=>{try{window.sessionStorage.removeItem(r)}catch{}},y=(h=!1)=>{if(i!==void 0){if(h&&document.querySelectorAll("input, select, textarea").forEach(E=>{E._field?.binding.state===e&&E._field.timer&&E._field.commit()}),e.unsavedChanges=c()!==i,e.draftSaved=!1,!e.unsavedChanges){g();return}try{window.sessionStorage.setItem(r,JSON.stringify({account:e.user?.username||null,savedAt:Date.now(),values:a()})),e.draftSaved=!0}catch{}}},b=()=>y(!0);return e.on("routeLeave",b),window.addEventListener("beforeunload",b),e.on("dispose",()=>window.removeEventListener("beforeunload",b)),{restore(){i=c();let h;try{h=JSON.parse(window.sessionStorage.getItem(r)||"null")}catch{}let E=h&&h.account===(e.user?.username||null)&&Date.now()-h.savedAt<30*6e4&&h.values;return E&&(f(h.values),e.draftRestored=!0),s||(s=!0,e.watch(()=>a(),()=>y(),!0)),e.unsavedChanges=c()!==i,!!E},checkpoint(){return document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state===e&&h._field.timer&&h._field.commit()}),JSON.parse(c())},accept(h){i=JSON.stringify(h),e.draftRestored=!1,y()},discard(){document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state!==e||!h._field.timer||(clearTimeout(h._field.timer),h._field.timer=null,h.value=h._field.binding.value??"")}),i!==void 0&&f(JSON.parse(i)),e.draftRestored=!1,y()},clear(){i=c(),e.unsavedChanges=!1,e.draftRestored=!1,e.draftSaved=!1,g()}}}var go={VIEWER_ERRORS:{title:"Content could not be loaded",access_title:"GitHub access needs attention",reader_help:"Reading this repository? You do not need to sign in. Try again after the owner restores access, or let them know this anonymous link is unavailable.",owner_help:"Own this repository? If your GitHub account was suspended or recently recovered, sign in to Anonymous GitHub again and check the GitHub connection and repository permissions in your dashboard. Then retry this page. Keep the existing anonymous URL; do not delete the repository to restore access.",retry:"Try again",dashboard:"Open owner dashboard"},ERRORS:{cache_busy:"Downloads are busy. Please try again shortly.",invalid_sort:"The selected sort order is invalid.",invalid_cursor:"This project page is no longer valid. Reload the list.",repository_changed:"The repository changed while processing. Please retry.",repository_job_cancelled:"The repository changed or was removed while processing.",storage_delete_failed:"Unable to remove cached files. Please try again later.",unknown_error:"We could not load this content. Try again. If it still fails, contact support with the anonymous URL and the time of the error.",unreachable:"The service could not complete this request. Wait a moment and try again.",request_error:"The connection was interrupted. Check your internet connection and try again.",not_found:"The requested resource could not be found.",not_connected:"You must be logged in to perform this action.",not_authorized:"You do not have permission to perform this action.",unable_to_connect_user:"Unable to connect your account. Please try again later.",user_not_found:"The requested user could not be found.",user_banned:"Your account has been banned. Contact the admin for more information.",repo_access_limited:"GitHub blocked access because the repository's organization restricts third-party OAuth apps. Ask an org owner to approve Anonymous GitHub under Settings \u2192 Third-party Access \u2192 OAuth app policy, or anonymize a personal fork instead.",repo_saml_enforcement:"The repository's organization enforces SAML single sign-on. Authorize your token for that organization (GitHub \u2192 Settings \u2192 Applications, or re-run the org's SSO sign-in), then retry. Alternatively, anonymize a personal fork.",repo_not_found:"Anonymous GitHub cannot access the source repository on GitHub. It may be private, unavailable, or require the owner to reconnect GitHub.",repo_empty:"The selected branch has no commits on GitHub. Push at least one commit, or pick a different branch, then retry.",repo_not_accessible:"Anonymous GitHub cannot access this repository. Verify the repository exists and that Anonymous GitHub has been authorized for the owning organization.",repository_archived:"This repository has been archived and its files are no longer available.",repository_expired:"The repository is expired.",invalid_status:"This action cannot be performed while the resource is in its current state.",repository_not_ready:"Anonymous GitHub is still processing the repository, it can take several minutes.",repository_not_accessible:"This repository is currently not accessible.",repo_is_updating:"Anonymous GitHub is still processing the repository, it can take several minutes.",invalid_repo:"The provided repository is not valid.",invalid_source_repository:"The repository source name is invalid; expected the form 'owner/name'.",repoId_not_defined:"A repository ID must be provided.",repoUrl_not_defined:"The repository URL needs to be defined.",source_not_provided:"A repository source must be provided.",github_rate_limit_exceeded:"GitHub temporarily blocked the request because we hit its API rate limit. Wait a few minutes and try again. If the problem persists and you contact GitHub Support, include the request ID and timestamp shown in GitHub's response (the 'X-GitHub-Request-Id' header).",rate_limited:"GitHub API rate limit reached. The repository will be available shortly \u2014 please wait a moment and refresh.",repoId_already_used:"The repository ID is already used.",invalid_repoId:"The format of the repository ID is invalid.",unsupported_source:"The repository source type is not supported.",branch_not_specified:"The branch is not specified.",branch_not_found:"The branch of the repository cannot be found.",commit_not_specified:"A commit must be specified.",commit_not_found:"The configured commit no longer exists in the source repository. It may have been force-pushed, rebased, or removed.",repo_renamed:"The source repository appears to have been renamed or moved on GitHub. Please refresh and try again \u2014 the cached name has been updated.",invalid_commit_format:"The commit hash format is invalid. It must be a hexadecimal string.",pull_request_not_found:"The requested pull request could not be found.",pull_request_expired:"This pull request has expired and is no longer available.",pull_request_not_ready:"This pull request is still being prepared. Please try again shortly.",pull_request_not_available:"This pull request is currently not available.",invalid_pullRequestId:"The pull request ID is invalid.",pullRequestId_already_used:"This pull request ID is already in use. Please choose a different one.",repository_not_specified:"A repository must be specified for this pull request.",pullRequestId_not_specified:"A pull request ID must be specified.",pullRequestId_is_not_a_number:"The source pull request ID must be a number.",options_not_provided:"Anonymization options are mandatory.",terms_not_specified:"Anonymization terms must be specified.",invalid_terms_format:"Terms are in an invalid format.",missing_content:"No content was provided to the anonymization preview.",unable_to_anonymize:"An error happened during the anonymization process. Please try later or report the issue.",non_supported_mode:"The selected anonymization mode is invalid, only download and stream are supported.",invalid_path:"The provided path is invalid or missing.",path_not_specified:"A file path must be specified.",path_not_defined:"The file path has not been resolved yet.",invalid_file_path:"The requested file path is not valid.",invalid_request:"The request is missing required fields or is malformed.",invalid_project_name:"Use a project name of up to 100 characters without line breaks or control characters.",no_file_selected:"Please select a file.",submodule_not_available:"This public submodule file is no longer available at its recorded commit.",file_not_found:"The requested file is not found.",file_not_accessible:"The requested file is not accessible.",file_not_supported:"The file type is not supported. Anonymous GitHub cannot handle it.",file_too_big:"The file size exceeds the limit of Anonymous GitHub.",is_folder:"The path points to a folder.",folder_not_supported:"The path points to a folder. Please select a file.",unable_to_write_file:"Unable to write file on disk.",download_not_enabled:"Repository downloads are not enabled on this server.",unable_to_download:"The repository could not be downloaded. Please try again later.",s3_config_not_provided:"Object storage has not been configured on this server.",stats_unsupported:"Statistics are only supported in download mode.",branches_not_found:"The requested branch is not found.",readme_not_available:"No README for the repository is found.",page_not_supported_on_different_branch:"GitHub Pages is served from a different branch than the one selected. Pick the branch that GitHub Pages is configured to use.",page_not_activated:"GitHub Pages is not enabled on this repository. Enable it in the repository settings on GitHub before anonymizing.",is_removed:"This resource has been removed and is no longer available.",conf_name_missing:"A conference name is required.",conf_id_missing:"A conference ID is required.",conf_id_used:"This conference ID is already in use. Please choose a different one.",conf_start_date_missing:"A start date is required for the conference.",conf_end_date_missing:"An end date is required for the conference.",conf_start_date_invalid:"The start date must be before the end date.",conf_end_date_invalid:"The end date must be in the future.",invalid_plan:"The selected plan is not valid.",conference_not_found:"The requested conference could not be found.",conf_not_found:"The requested conference could not be found.",conf_not_activated:"The conference is not activated.",billing_missing:"Billing information is required for this plan.",billing_name_missing:"A billing name is required.",billing_email_missing:"A billing email is required.",billing_address_missing:"A billing address is required.",billing_city_missing:"A billing city is required.",billing_zip_missing:"A billing ZIP/postal code is required.",billing_country_missing:"A billing country is required.",queue_not_found:"The specified queue could not be found.",job_not_found:"The specified job could not be found in the queue.",error_retrying_job:"An error occurred while retrying the job.",gist_expired:"The gist is expired.",gist_not_ready:"Anonymous GitHub is still processing the gist, it can take several minutes.",gist_not_found:"The requested gist could not be found.",gist_not_available:"This gist is currently not available.",invalid_gistId:"The format of the gist ID is invalid.",gistId_not_specified:"A gist ID must be provided.",gistId_already_used:"The gist ID is already used.",missing_token:"An authentication token is required.",token_attempts_rate_limited:"Too many token authentication attempts. Wait before trying again.",refresh_rate_limited:"A refresh was already requested for this repository. Wait one minute before trying again.",session_required:"Sign in through your browser to manage maintenance tokens.",invalid_token_options:"Provide a token name, 1 to 20 repository IDs, and an expiration of 1 to 90 days.",token_limit_reached:"You have reached the limit of 50 API tokens. Revoke an unused token before creating another.",invalid_token_id:"The token ID is invalid.",invalid_settings:"Provide supported settings with boolean values, or a list of anonymization terms.",token_scope_forbidden:"This token does not allow this operation or repository.",authentication_unavailable:"Authentication is temporarily unavailable. Try again later.",invalid_token:"The provided authentication token is invalid.",login_failed:"Login failed. Please try again.",server_error:"An unexpected server error occurred. Please try again later.",username_not_defined:"A username must be provided.",github_user_not_found:"The specified GitHub user could not be found.",cannot_coauthor_self:"You cannot add yourself as a co-author.",storage_write_size_mismatch:"The downloaded file was smaller than expected. The upstream source may have returned an incomplete response \u2014 please try again.",storage_read_error:"An error occurred while reading the file from storage \u2014 please try again.",upstream_error:"A temporary error occurred while fetching from GitHub \u2014 please try again.",token_expired:"The repository owner needs to renew their GitHub connection before this content can be loaded.",job_is_active:"This job is currently running \u2014 wait for it to finish or remove it first.",github_app_access_required:"Allow this repository on GitHub using the read-only access button, then retry. Organization access may require administrator approval.",github_app_reconnect_required:"Reconnect your GitHub App account to restore read-only access.",github_app_disabled:"New GitHub App connections are currently unavailable.",github_oauth_required:"Connect legacy GitHub OAuth to use this feature.",github_identity_mismatch:"Use the same GitHub account that you are signed in with here.",github_app_permissions_invalid:"The GitHub App must be configured with read-only permissions.",github_unavailable:"GitHub is temporarily unavailable. Please retry.",connection_changed:"The repository connection changed. Reload and try again.",repository_busy:"Wait for the repository operation to finish before changing its connection.",invalid_connection:"Select a supported GitHub connection.",github_oauth_disabled:"Legacy OAuth sign-in is currently disabled.",invalid_auth_state:"The authorization session expired. Please start again from Anonymous GitHub.",invalid_webhook_signature:"The webhook signature is invalid.",webhook_processing_failed:"Webhook processing failed. Retry the delivery.",github_app_authorization_cancelled:"GitHub authorization was cancelled.",github_account_link_required:"Verify your existing account with your previous GitHub connection. Future sign-ins will use the GitHub App.",github_app_refresh_busy:"GitHub credentials are being renewed. Please retry shortly.",github_grant_revocation_failed:"Unable to revoke the GitHub grant. Please retry.",another_login_required:"Connect and verify another sign-in method before disconnecting OAuth.",oauth_resources_remaining:"Some resources still require OAuth. Migrate or remove them before disconnecting.",invalid_github_path:"The GitHub repository path is invalid.",repository_tree_incomplete:"The repository file tree is incomplete. Reduce its size and refresh before downloading.",billing_environment_mismatch:"The payment event does not match this billing environment.",billing_unavailable:"Payments are not available. Please try again later.",invalid_billing_signature:"The payment notification could not be verified.",billing_webhook_failed:"The payment notification could not be processed.",billing_customer_not_found:"No billing account was found.",subscription_required_for_never_expiration:"Never-expiring repositories require the owner\u2019s active monthly or annual author subscription. Choose a dated expiration or upgrade in Plans and billing.",invalid_billing_expiration:"Choose an expiration date within the next year, or select Never expire with an author subscription.",pending_payment:"Awaiting payment"},WARNINGS:{page_not_enabled_on_repo:"GitHub Pages is not enabled on this repository. Enable it in the repository's Settings \u2192 Pages on GitHub, then refresh.",page_branch_mismatch:"GitHub Pages on this repository is served from the '{{pageBranch}}' branch, but you selected '{{selectedBranch}}'. Switch the branch above to '{{pageBranch}}' to anonymize the Pages site.",folder_truncated:"This folder has more than 10,000 entries; only a partial listing is shown.",repo_truncated:"Some folders in this repository have too many files to be fully listed. Affected folders are marked with a warning icon.",submodules_not_included:"Some submodule contents could not be included. Only direct public GitHub submodules within the size limits are supported. Private, external, nested, or unavailable submodules appear as empty folders."}};function hi(e){let t=e?.data;if(typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return typeof t?.error=="string"&&Object.prototype.hasOwnProperty.call(go.ERRORS,t.error)?t.error:e?.status===-1||e?.status===0?"request_error":[502,503,504].includes(e?.status)?"unreachable":"unknown_error"}var ls="XXXX",Dp=e=>{ls=e||"XXXX"},nl=(e=ls)=>{if(!e)return null;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(t+"(?:-\\d+)?","g")},ol=(e,t=ls)=>{let o=nl(t);if(!o||!e||!e.textContent.includes(t))return;let i=e.ownerDocument,s=i.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[];for(;s.nextNode();)r.push(s.currentNode);for(let a of r){let c=a.nodeValue,f=a.parentElement;if(!c.includes(t)||!f||f.closest("script, style, mark.redaction, .mermaid"))continue;let g=f.closest('code[class*="language-"]');if(g&&!g.contains(e))continue;let y=i.createDocumentFragment(),b=0;for(let h of c.matchAll(o)){y.append(c.slice(b,h.index));let E=i.createElement("mark");E.className="redaction",E.title="Redacted by Anonymous GitHub",E.textContent=h[0],y.append(E),b=h.index+h[0].length}y.append(c.slice(b)),a.replaceWith(y)}},sl=(e,t=ls)=>{if(!e||!t||!e.includes(t))return e;let o=new DOMParser().parseFromString(""+e+"","text/html");return ol(o.body,t),o.body.innerHTML};async function il(e){if(window.navigator.clipboard?.writeText){await window.navigator.clipboard.writeText(e);return}let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0";let o=document.activeElement;document.body.appendChild(t);try{if(t.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{t.remove(),o?.focus()}}function Tp(e){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key))return;let t=[...e.currentTarget.closest('[role="tablist"]').querySelectorAll('[role="tab"]')],o=t.indexOf(e.currentTarget),i=e.key==="Home"?0:e.key==="End"?t.length-1:(o+(e.key==="ArrowRight"?1:-1)+t.length)%t.length;e.preventDefault(),t[i]?.focus(),t[i]?.click()}var rl=function(e,t,o,i){e.previewTabKeydown=Tp,e.headerCanUpgrade=!1,e.headerBillingPending=["success","portal"].includes(new URLSearchParams(window.location.search).get("billing"));let s=b=>{let h=(b?.grants||[]).some(E=>["author_monthly","author_annual"].includes(E.planId)&&["active","paid","past_due"].includes(E.status)&&new Date(E.until).getTime()>Date.now());e.headerCanUpgrade=!!b?.enabled&&b.checkoutEnabled!==!1&&!h&&(b.plans||[]).some(E=>["author_monthly","author_annual"].includes(E.id))};e.on("billing:updated",(b,h)=>s(h)),e.on("billing:pending",(b,h)=>{e.headerBillingPending=h}),e.openHeaderUpgrade=()=>{o.path()==="/profile"?e.emit("settings:upgrade"):o.url("/profile?upgrade=1")},e.title="Main",e.user={status:"connection"},e.site_options,e.toasts=[],e.removeToast=function(b){let h=e.toasts.indexOf(b);h!==-1&&e.toasts.splice(h,1)},e.addToast=function(b){return e.toasts.push(b),i(function(){e.removeToast(b)},8e3),b};let r=/^\/(r|repository|pr|gist)\//;e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path()),e.darkMode=function(b){localStorage.setItem("darkMode",b),e.isDarkMode=b;let h="/css/prism-okaidia.css",E="/css/prism.css";if(b){$("body").addClass("dark-mode");let m=document.createElement("link");m.href=h,m.rel="stylesheet",document.head.append(m),$(`link[href='${E}']`).remove()}else{$("body").removeClass("dark-mode");let m=document.createElement("link");m.href=E,m.rel="stylesheet",document.head.append(m),$(`link[href='${h}']`).remove()}let _=document.querySelector("[class*='floatingchat-container-wrap'] [class*='floating-chat-kofi-text-container-wrap']");_&&(_.style.backgroundColor=b?"#34312C":"#1A1815",_.style.color="#FAF9F6"),e.emit("dark-mode",b)},e.darkMode(localStorage.getItem("darkMode")=="true"),e.emailPromptOpen=!1,e.emailPromptAddress="",e.emailPromptBusy=!1,e.emailPromptError="";let a;e.respondToEmailPrompt=async b=>{if(!e.emailPromptBusy){e.emailPromptBusy=!0,e.emailPromptError="";try{let h=await t.post("/github/connections/email",{action:b,email:e.emailPromptAddress},{headers:{"X-CSRF-Token":e.user.emailPromptCSRF}});b==="save"&&(e.user.notificationEmail=h.data.notificationEmail),e.emailPromptOpen=!1,e.user.showEmailPrompt=!1,a?.focus()}catch(h){e.emailPromptError=h.data?.error||"Unable to save your preference. Please try again."}finally{e.emailPromptBusy=!1}}};function c(){t.get("/api/user").then(b=>{b&&(e.user=b.data),e.user?.username&&ci(t).then(h=>s(h.data)).catch(()=>{}),e.user?.emailNotificationsEnabled&&e.user.showEmailPrompt&&!e.user.notificationEmail&&(a=document.activeElement,e.emailPromptOpen=!0,i(()=>{let h=document.getElementById("email-prompt");h?.showModal?h.showModal():h?.setAttribute("open",""),document.getElementById("email-prompt-address")?.focus()},0))},()=>{e.user=null})}c();function f(){t.get("/api/options").then(b=>{b&&(e.site_options=b.data),Dp(b?.data?.ANONYMIZATION_MASK),e.emit("site-options")},()=>{e.site_options=null})}f();function g(){t.get("/api/message").then(b=>{b&&(e.generalMessage=b.data)},()=>{e.generalMessage=null})}g();function y(b,h){h&&(e.title=h.title),e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path())}e.on("routeChange",y),e.on("routeUpdate",y)},al=function(e,t){let o=Zt(),i=ut(),s=()=>{let r=window.location.hash.slice(1),a=document.getElementById(r);if(!a?.classList.contains("panel-collapse"))return;$(a).collapse("show");let c=document.getElementById(a.getAttribute("aria-labelledby"));c?.setAttribute("tabindex","-1"),c?.focus({preventScroll:!0}),c?.scrollIntoView?.({block:"start"})};e.on("routeUpdate",()=>i.timeout(s,0)),o(window,"hashchange",s),i.timeout(s,0)},ll=function(e,t,o,i,s){e.settingsTab=/(?:billing|upgrade)=/.test(window.location.search)?"billing":"defaults",e.confirmDeleteAccount=!1,e.deleteUsername="",e.profilePastSubscription=()=>!e.profileAuthorGrant()&&(e.billing?.grants||[]).some(g=>["author_monthly","author_annual"].includes(g.planId)),e.showAuthorPlans=new URLSearchParams(window.location.search).get("upgrade")==="1",e.showRepositoryPass=!1,e.profilePlan="author_monthly",e.openProfileUpgrade=()=>{e.settingsTab="billing",e.showAuthorPlans=!0,Ke(()=>document.getElementById("settings-plan-comparison")?.focus())},e.on("settings:upgrade",()=>e.openProfileUpgrade()),e.profileAuthorPlans=()=>(e.billing?.plans||[]).filter(g=>["author_monthly","author_annual"].includes(g.id)),e.profileSelectedPlan=()=>e.profileAuthorPlans().find(g=>g.id===e.profilePlan)||e.profileAuthorPlans()[0],e.profilePassPlan=()=>(e.billing?.plans||[]).find(g=>g.id==="author_pass"),e.profileAuthorGrant=()=>(e.billing?.grants||[]).find(g=>["author_monthly","author_annual"].includes(g.planId)&&["active","paid","past_due"].includes(g.status)&&new Date(g.until).getTime()>Date.now()),e.profileGrantName=g=>({author_monthly:"Author monthly",author_annual:"Author annual",author_pass:"Repository pass",conference:"Conference hosting"})[g.planId]||g.planId,as(e,t,()=>s.load().then(g=>{e.quota=g},console.error)),e.terms="",e.options={expirationMode:"remove",update:!1,image:!0,pdf:!0,notebook:!0,loc:!0,link:!0},e.saving=!1,e.message=null,e.error=null,e.accountEmail="",e.emailLoading=!0,e.emailCSRFReady=!1,e.emailSaving=!1,e.emailSaved=!1,e.emailError="";let r="";e.loadAccountEmail=async()=>{e.emailLoading=!0,e.emailError="";try{let g=await t.get("/github/connections/email");e.accountEmail=g.data.notificationEmail||"",r=g.data.csrf,e.emailCSRFReady=!!r}catch{e.emailError="Unable to load your email address. Please try again."}finally{e.emailLoading=!1}},e.saveAccountEmail=async()=>{if(!(e.emailSaving||e.emailLoading||!r)){e.emailSaving=!0,e.emailSaved=!1,e.emailError="";try{let g=await t.post("/github/connections/email",{email:e.accountEmail},{headers:{"X-CSRF-Token":r}});e.accountEmail=g.data.notificationEmail,e.user&&(e.user.notificationEmail=g.data.notificationEmail),e.emailSaved=!0}catch{e.emailError="Unable to save your email address. Check the address and try again."}finally{e.emailSaving=!1}}},e.loadAccountEmail(),s.load().then(g=>{e.quota=g},console.error);let a=fi(e,["terms","options"],"profile");e.discardDraft=()=>a.discard();function c(){t.get("/api/user/default").then(g=>{let y=g.data||{};y.terms&&(e.terms=y.terms.join(` +`+JSON.stringify(t):""}`},[He.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${op(t)}" via a navigation guard.`},[He.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[He.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[He.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function hn(e,t){return Oe(new Error,{type:e,[Va]:!0},t)}function Ht(e,t){return e instanceof Error&&Va in e&&(t==null||!!(e.type&t))}var np=["params","query","hash"];function op(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let o of np)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function qa(e){let t={};if(e===""||e==="?")return t;let o=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;is&&ei(s)):[i&&ei(i)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+o,s!=null&&(t+="="+s))})}return t}function Ma(e){let t={};for(let o in e){let i=e[o];i!==void 0&&(t[o]=kt(i)?i.map(s=>s==null?null:""+s):i==null?i:""+i)}return t}var Ua=Symbol(""),di=Symbol(""),ns=Symbol(""),os=Symbol(""),ss=Symbol("");function In(){let e=[];function t(i){return e.push(i),()=>{let s=e.indexOf(i);s>-1&&e.splice(s,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function Qt(e,t,o,i,s,r=a=>a()){let a=i&&(i.enterCallbacks[s]=i.enterCallbacks[s]||[]);return()=>new Promise((c,f)=>{let g=h=>{h===!1?f(hn(He.NAVIGATION_ABORTED,{from:o,to:t})):h instanceof Error?f(h):tp(h)?f(hn(He.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(a&&i.enterCallbacks[s]===a&&typeof h=="function"&&a.push(h),c())},y=r(()=>e.call(i&&i.instances[s],t,o,g)),b=Promise.resolve(y);e.length<3&&(b=b.then(g)),b.catch(h=>f(h))})}function is(e,t,o,i,s=r=>r()){let r=[];for(let a of e)for(let c in a.components){let f=a.components[c];if(!(t!=="beforeRouteEnter"&&!a.instances[c]))if(ba(f)){let g=(f.__vccOpts||f)[t];g&&r.push(Qt(g,o,i,a,c,s))}else{let g=f();r.push(()=>g.then(y=>{if(!y)throw new Error(`Couldn't resolve component "${c}" at "${a.path}"`);let b=Uc(y)?y.default:y;a.mods[c]=y,a.components[c]=b;let h=(b.__vccOpts||b)[t];return h&&Qt(h,o,i,a,c,s)()}))}}return r}function $a(e,t){let o=[],i=[],s=[],r=Math.max(t.matched.length,e.matched.length);for(let a=0;afn(g,c))?i.push(c):o.push(c));let f=e.matched[a];f&&(t.matched.find(g=>fn(g,f))||s.push(f))}return[o,i,s]}var sp=()=>location.protocol+"//"+location.host;function Ja(e,t){let{pathname:o,search:i,hash:s}=t,r=e.indexOf("#");if(r>-1){let a=s.includes(e.slice(r))?e.slice(r).length:1,c=s.slice(a);return c[0]!=="/"&&(c="/"+c),si(c,"")}return si(o,e)+i+s}function ip(e,t,o,i){let s=[],r=[],a=null,c=({state:h})=>{let E=Ja(e,location),_=o.value,m=t.value,C=0;if(h){if(o.value=E,t.value=h,a&&a===_){a=null;return}C=m?h.position-m.position:0}else i(E);s.forEach(N=>{N(o.value,_,{delta:C,type:es.pop,direction:C?C>0?ts.forward:ts.back:ts.unknown})})};function f(){a=o.value}function g(h){s.push(h);let E=()=>{let _=s.indexOf(h);_>-1&&s.splice(_,1)};return r.push(E),E}function y(){if(document.visibilityState==="hidden"){let{history:h}=window;if(!h.state)return;h.replaceState(Oe({},h.state,{scroll:vo()}),"")}}function b(){for(let h of r)h();r=[],window.removeEventListener("popstate",c),window.removeEventListener("pagehide",y),document.removeEventListener("visibilitychange",y)}return window.addEventListener("popstate",c),window.addEventListener("pagehide",y),document.addEventListener("visibilitychange",y),{pauseListeners:f,listen:g,destroy:b}}function La(e,t,o,i=!1,s=!1){return{back:e,current:t,forward:o,replaced:i,position:window.history.length,scroll:s?vo():null}}function rp(e){let{history:t,location:o}=window,i={value:Ja(e,o)},s={value:t.state};s.value||r(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(f,g,y){let b=e.indexOf("#"),h=b>-1?(o.host&&document.querySelector("base")?e:e.slice(b))+f:sp()+e+f;try{t[y?"replaceState":"pushState"](g,"",h),s.value=g}catch(E){console.error(E),o[y?"replace":"assign"](h)}}function a(f,g){r(f,Oe({},t.state,La(s.value.back,f,s.value.forward,!0),g,{position:s.value.position}),!0),i.value=f}function c(f,g){let y=Oe({},s.value,t.state,{forward:f,scroll:vo()});r(y.current,y,!0),r(f,Oe({},La(i.value,f,null),{position:y.position+1},g),!1),i.value=f}return{location:i,state:s,push:c,replace:a}}function Qa(e){e=Ta(e);let t=rp(e),o=ip(e,t.state,t.location,t.replace);function i(r,a=!0){a||o.pauseListeners(),history.go(r)}let s=Oe({location:"",base:e,go:i,createHref:Aa.bind(null,e)},t,o);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}var vn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({}),Xe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Xe||{}),ap={type:vn.Static,value:""},lp=/[a-zA-Z0-9_]/;function dp(e){if(!e)return[[]];if(e==="/")return[[ap]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(E){throw new Error(`ERR (${o})/"${g}": ${E}`)}let o=Xe.Static,i=o,s=[],r;function a(){r&&s.push(r),r=[]}let c=0,f,g="",y="";function b(){g&&(o===Xe.Static?r.push({type:vn.Static,value:g}):o===Xe.Param||o===Xe.ParamRegExp||o===Xe.ParamRegExpEnd?(r.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${g}) must be alone in its segment. eg: '/:ids+.`),r.push({type:vn.Param,value:g,regexp:y,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),g="")}function h(){g+=f}for(;ct.length?t.length===1&&t[0]===it.Static+it.Segment?1:-1:0}function Xa(e,t){let o=0,i=e.score,s=t.score;for(;o0&&t[t.length-1]<0}var hp={strict:!1,end:!0,sensitive:!1};function mp(e,t,o){let i=pp(dp(e.path),o),s=Oe(i,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function vp(e,t){let o=[],i=new Map;t=ni(hp,t);function s(b){return i.get(b)}function r(b,h,E){let _=!E,m=za(b);m.aliasOf=E&&E.record;let C=ni(t,b),N=[m];if("alias"in b){let U=typeof b.alias=="string"?[b.alias]:b.alias;for(let q of U)N.push(za(Oe({},m,{components:E?E.record.components:m.components,path:q,aliasOf:E?E.record:m})))}let A,M;for(let U of N){let{path:q}=U;if(h&&q[0]!=="/"){let B=h.record.path,oe=B[B.length-1]==="/"?"":"/";U.path=h.record.path+(q&&oe+q)}if(A=mp(U,h,C),E?E.alias.push(A):(M=M||A,M!==A&&M.alias.push(A),_&&b.name&&!ja(A)&&a(b.name)),Za(A)&&f(A),m.children){let B=m.children;for(let oe=0;oe{a(M)}:Pn}function a(b){if(ai(b)){let h=i.get(b);h&&(i.delete(b),o.splice(o.indexOf(h),1),h.children.forEach(a),h.alias.forEach(a))}else{let h=o.indexOf(b);h>-1&&(o.splice(h,1),b.record.name&&i.delete(b.record.name),b.children.forEach(a),b.alias.forEach(a))}}function c(){return o}function f(b){let h=bp(b,o);o.splice(h,0,b),b.record.name&&!ja(b)&&i.set(b.record.name,b)}function g(b,h){let E,_={},m,C;if("name"in b&&b.name){if(E=i.get(b.name),!E)throw hn(He.MATCHER_NOT_FOUND,{location:b});C=E.record.name,_=Oe(Ha(h.params,E.keys.filter(M=>!M.optional).concat(E.parent?E.parent.keys.filter(M=>M.optional):[]).map(M=>M.name)),b.params&&Ha(b.params,E.keys.map(M=>M.name))),m=E.stringify(_)}else if(b.path!=null)m=b.path,E=o.find(M=>M.re.test(m)),E&&(_=E.parse(m),C=E.record.name);else{if(E=h.name?i.get(h.name):o.find(M=>M.re.test(h.path)),!E)throw hn(He.MATCHER_NOT_FOUND,{location:b,currentLocation:h});C=E.record.name,_=Oe({},h.params,b.params),m=E.stringify(_)}let N=[],A=E;for(;A;)N.unshift(A.record),A=A.parent;return{name:C,path:m,params:_,matched:N,meta:yp(N)}}e.forEach(b=>r(b));function y(){o.length=0,i.clear()}return{addRoute:r,resolve:g,removeRoute:a,clearRoutes:y,getRoutes:c,getRecordMatcher:s}}function Ha(e,t){let o={};for(let i of t)i in e&&(o[i]=e[i]);return o}function za(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:gp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function gp(e){let t={},o=e.props||!1;if("component"in e)t.default=o;else for(let i in e.components)t[i]=typeof o=="object"?o[i]:o;return t}function ja(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function yp(e){return e.reduce((t,o)=>Oe(t,o.meta),{})}function bp(e,t){let o=0,i=t.length;for(;o!==i;){let r=o+i>>1;Xa(e,t[r])<0?i=r:o=r+1}let s=wp(e);return s&&(i=t.lastIndexOf(s,i-1)),i}function wp(e){let t=e;for(;t=t.parent;)if(Za(t)&&Xa(e,t)===0)return t}function Za({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ga(e){let t=dt(ns),o=dt(os),i=!1,s=null,r=nt(()=>{let y=Wt(e.to);return t.resolve(y)}),a=nt(()=>{let{matched:y}=r.value,{length:b}=y,h=y[b-1],E=o.matched;if(!h||!E.length)return-1;let _=E.findIndex(fn.bind(null,h));if(_>-1)return _;let m=Wa(y[b-2]);return b>1&&Wa(h)===m&&E[E.length-1].path!==m?E.findIndex(fn.bind(null,y[b-2])):_}),c=nt(()=>a.value>-1&&_p(o.params,r.value.params)),f=nt(()=>a.value>-1&&a.value===o.matched.length-1&&ii(o.params,r.value.params));function g(y={}){if(Sp(y)){let b=t[Wt(e.replace)?"replace":"push"](Wt(e.to)).catch(Pn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>b),b}return Promise.resolve()}return{route:r,href:nt(()=>r.value.href),isActive:c,isExactActive:f,navigate:g}}function kp(e){return e.length===1?e[0]:e}var Ep=uo({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Ga,setup(e,{slots:t}){let o=Fe(Ga(e)),{options:i}=dt(ns),s=nt(()=>({[Ka(e.activeClass,i.linkActiveClass,"router-link-active")]:o.isActive,[Ka(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{let r=t.default&&kp(t.default(o));return e.custom?r:we("a",{"aria-current":o.isExactActive?e.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:s.value},r)}}}),Cp=Ep;function Sp(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function _p(e,t){for(let o in t){let i=t[o],s=e[o];if(typeof i=="string"){if(i!==s)return!1}else if(!kt(s)||s.length!==i.length||i.some((r,a)=>r.valueOf()!==s[a].valueOf()))return!1}return!0}function Wa(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}var Ka=(e,t,o)=>e??t??o,Np=uo({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:o}){let i=dt(ss),s=nt(()=>e.route||i.value),r=dt(di,0),a=nt(()=>{let g=Wt(r),{matched:y}=s.value,b;for(;(b=y[g])&&!b.components;)g++;return g}),c=nt(()=>s.value.matched[a.value]);un(di,nt(()=>a.value+1)),un(Ua,c),un(ss,s);let f=et();return Be(()=>[f.value,c.value,e.name],([g,y,b],[h,E,_])=>{y&&(y.instances[b]=g,E&&E!==y&&g&&g===h&&(y.leaveGuards.size||(y.leaveGuards=E.leaveGuards),y.updateGuards.size||(y.updateGuards=E.updateGuards))),g&&y&&(!E||!fn(y,E)||!h)&&(y.enterCallbacks[b]||[]).forEach(m=>m(g))},{flush:"post"}),()=>{let g=s.value,y=e.name,b=c.value,h=b&&b.components[y];if(!h)return Ya(o.default,{Component:h,route:g});let E=b.props[y],_=E?E===!0?g.params:typeof E=="function"?E(g):E:null,C=we(h,Oe({},_,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(b.instances[y]=null)},ref:f}));return Ya(o.default,{Component:C,route:g})||C}}});function Ya(e,t){if(!e)return null;let o=e(t);return o.length===1?o[0]:o}var ui=Np;function xa(e){let t=vp(e.routes,e),o=e.parseQuery||qa,i=e.stringifyQuery||li,s=e.history,r=In(),a=In(),c=In(),f=Po(Xt),g=Xt;mn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");let y=Zo.bind(null,H=>""+H),b=Zo.bind(null,Na),h=Zo.bind(null,On);function E(H,se){let Y,Z;return ai(H)?(Y=t.getRecordMatcher(H),Z=se):Z=H,t.addRoute(Z,Y)}function _(H){let se=t.getRecordMatcher(H);se&&t.removeRoute(se)}function m(){return t.getRoutes().map(H=>H.record)}function C(H){return!!t.getRecordMatcher(H)}function N(H,se){if(se=Oe({},se||f.value),typeof H=="string"){let S=xo(o,H,se.path),V=t.resolve({path:S.path},se),G=s.createHref(S.fullPath);return Oe(S,V,{params:h(V.params),hash:On(S.hash),redirectedFrom:void 0,href:G})}let Y;if(H.path!=null)Y=Oe({},H,{path:xo(o,H.path,se.path).path});else{let S=Oe({},H.params);for(let V in S)S[V]==null&&delete S[V];Y=Oe({},H,{params:b(S)}),se.params=b(se.params)}let Z=t.resolve(Y,se),ue=H.hash||"";Z.params=y(h(Z.params));let be=Ra(i,Oe({},H,{hash:_a(ue),path:Z.path})),k=s.createHref(be);return Oe({fullPath:be,hash:ue,query:i===li?Ma(H.query):H.query||{}},Z,{redirectedFrom:void 0,href:k})}function A(H){return typeof H=="string"?xo(o,H,f.value.path):Oe({},H)}function M(H,se){if(g!==H)return hn(He.NAVIGATION_CANCELLED,{from:se,to:H})}function U(H){return oe(H)}function q(H){return U(Oe(A(H),{replace:!0}))}function B(H,se){let Y=H.matched[H.matched.length-1];if(Y&&Y.redirect){let{redirect:Z}=Y,ue=typeof Z=="function"?Z(H,se):Z;return typeof ue=="string"&&(ue=ue.includes("?")||ue.includes("#")?ue=A(ue):{path:ue},ue.params={}),Oe({query:H.query,hash:H.hash,params:ue.path!=null?{}:H.params},ue)}}function oe(H,se){let Y=g=N(H),Z=f.value,ue=H.state,be=H.force,k=H.replace===!0,S=B(Y,Z);if(S)return oe(Oe(A(S),{state:typeof S=="object"?Oe({},ue,S.state):ue,force:be,replace:k}),se||Y);let V=Y;V.redirectedFrom=se;let G;return!be&&Da(i,Z,Y)&&(G=hn(He.NAVIGATION_DUPLICATED,{to:V,from:Z}),Ae(Z,Z,!0,!1)),(G?Promise.resolve(G):j(V,Z)).catch(w=>Ht(w)?Ht(w,He.NAVIGATION_GUARD_REDIRECT)?w:Te(w):re(w,V,Z)).then(w=>{if(w){if(Ht(w,He.NAVIGATION_GUARD_REDIRECT))return oe(Oe({replace:k},A(w.to),{state:typeof w.to=="object"?Oe({},ue,w.to.state):ue,force:be}),se||V)}else w=ve(V,Z,!0,k,ue);return ie(V,Z,w),w})}function ee(H,se){let Y=M(H,se);return Y?Promise.reject(Y):Promise.resolve()}function R(H){let se=ze.values().next().value;return se&&typeof se.runWithContext=="function"?se.runWithContext(H):H()}function j(H,se){let Y,[Z,ue,be]=$a(H,se);Y=is(Z.reverse(),"beforeRouteLeave",H,se);for(let S of Z)S.leaveGuards.forEach(V=>{Y.push(Qt(V,H,se))});let k=ee.bind(null,H,se);return Y.push(k),Ie(Y).then(()=>{Y=[];for(let S of r.list())Y.push(Qt(S,H,se));return Y.push(k),Ie(Y)}).then(()=>{Y=is(ue,"beforeRouteUpdate",H,se);for(let S of ue)S.updateGuards.forEach(V=>{Y.push(Qt(V,H,se))});return Y.push(k),Ie(Y)}).then(()=>{Y=[];for(let S of be)if(S.beforeEnter)if(kt(S.beforeEnter))for(let V of S.beforeEnter)Y.push(Qt(V,H,se));else Y.push(Qt(S.beforeEnter,H,se));return Y.push(k),Ie(Y)}).then(()=>(H.matched.forEach(S=>S.enterCallbacks={}),Y=is(be,"beforeRouteEnter",H,se,R),Y.push(k),Ie(Y))).then(()=>{Y=[];for(let S of a.list())Y.push(Qt(S,H,se));return Y.push(k),Ie(Y)}).catch(S=>Ht(S,He.NAVIGATION_CANCELLED)?S:Promise.reject(S))}function ie(H,se,Y){c.list().forEach(Z=>R(()=>Z(H,se,Y)))}function ve(H,se,Y,Z,ue){let be=M(H,se);if(be)return be;let k=se===Xt,S=mn?history.state:{};Y&&(Z||k?s.replace(H.fullPath,Oe({scroll:k&&S&&S.scroll},ue)):s.push(H.fullPath,ue)),f.value=H,Ae(H,se,Y,k),Te()}let z;function J(){z||(z=s.listen((H,se,Y)=>{if(!Ue.listening)return;let Z=N(H),ue=B(Z,Ue.currentRoute.value);if(ue){oe(Oe(ue,{replace:!0,force:!0}),Z).catch(Pn);return}g=Z;let be=f.value;mn&&Pa(ri(be.fullPath,Y.delta),vo()),j(Z,be).catch(k=>Ht(k,He.NAVIGATION_ABORTED|He.NAVIGATION_CANCELLED)?k:Ht(k,He.NAVIGATION_GUARD_REDIRECT)?(oe(Oe(A(k.to),{force:!0}),Z).then(S=>{Ht(S,He.NAVIGATION_ABORTED|He.NAVIGATION_DUPLICATED)&&!Y.delta&&Y.type===es.pop&&s.go(-1,!1)}).catch(Pn),Promise.reject()):(Y.delta&&s.go(-Y.delta,!1),re(k,Z,be))).then(k=>{k=k||ve(Z,be,!1),k&&(Y.delta&&!Ht(k,He.NAVIGATION_CANCELLED)?s.go(-Y.delta,!1):Y.type===es.pop&&Ht(k,He.NAVIGATION_ABORTED|He.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),ie(Z,be,k)}).catch(Pn)}))}let Q=In(),te=In(),X;function re(H,se,Y){Te(H);let Z=te.list();return Z.length?Z.forEach(ue=>ue(H,se,Y)):console.error(H),Promise.reject(H)}function Ee(){return X&&f.value!==Xt?Promise.resolve():new Promise((H,se)=>{Q.add([H,se])})}function Te(H){return X||(X=!H,J(),Q.list().forEach(([se,Y])=>H?Y(H):se()),Q.reset()),H}function Ae(H,se,Y,Z){let{scrollBehavior:ue}=e;if(!mn||!ue)return Promise.resolve();let be=!Y&&Ia(ri(H.fullPath,0))||(Z||!Y)&&history.state&&history.state.scroll||null;return Ke().then(()=>ue(H,se,be)).then(k=>k&&Oa(k)).catch(k=>re(k,H,se))}let Se=H=>s.go(H),_e,ze=new Set,Ue={currentRoute:f,listening:!0,addRoute:E,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:C,getRoutes:m,resolve:N,options:e,push:U,replace:q,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:r.add,beforeResolve:a.add,afterEach:c.add,onError:te.add,isReady:Ee,install(H){H.component("RouterLink",Cp),H.component("RouterView",ui),H.config.globalProperties.$router=Ue,Object.defineProperty(H.config.globalProperties,"$route",{enumerable:!0,get:()=>Wt(f)}),mn&&!_e&&f.value===Xt&&(_e=!0,U(s.location).catch(Z=>{}));let se={};for(let Z in Xt)Object.defineProperty(se,Z,{get:()=>f.value[Z],enumerable:!0});H.provide(ns,Ue),H.provide(os,Yn(se)),H.provide(ss,f);let Y=H.unmount;ze.add(H),H.unmount=function(){ze.delete(H),ze.size<1&&(g=Xt,z&&z(),z=null,f.value=Xt,_e=!1,X=!1),Y()}}};function Ie(H){return H.reduce((se,Y)=>se.then(()=>R(Y)),Promise.resolve())}return Ue}function el(e){return dt(os)}var rs=new WeakMap;function ci(e){if(!rs.has(e)){let t=e.get("/api/billing/").finally(()=>rs.delete(e));rs.set(e,t)}return rs.get(e)}function as(e,t,o=()=>{},i={}){let s=new URLSearchParams(window.location.search).get("billing");e.billing=null,e.billingLoading=!0,e.billingBusy=!1,e.billingError="",e.billingNotice="",e.billingPending=s==="success"||s==="portal",e.billingRepository="";let r={billing_invalid_draft:"This draft could not be saved. Your form is unchanged. Try again.",billing_draft_not_found:"This checkout draft is unavailable or expired. Your local form is unchanged.",billing_recovery_required:"Your earlier payment needs verification. Please contact support before paying again.",billing_checkout_disabled:"New purchases are temporarily unavailable. You can still manage existing billing.",billing_unavailable:"Payments are not available yet. Please try again later.",billing_subscription_exists:"You already have a subscription. Use Manage billing to change or cancel it.",billing_checkout_in_progress:"You have another checkout open. Complete it or wait for it to expire before choosing a different plan.",billing_busy:"Another billing request is processing. Please try again shortly.",billing_already_paid:"This repository or conference already has an active paid package.",billing_invalid_review_window:"Conference packages cover up to 180 days. Check the review dates.",billing_invalid_conference:"Only a conference owner can pay for a conference awaiting payment.",repo_not_found:"Enter the ID of an existing repository that you own."};e.billingPrice=f=>f.amount==null?"Price shown at checkout":new Intl.NumberFormat(void 0,{style:"currency",currency:f.currency}).format(f.amount/100)+(f.interval?` / ${f.intervalCount>1?f.intervalCount+" ":""}${f.interval}`:" once"),e.billingBytes=f=>{let g=Number(f)||0;if(g<1024)return`${g} B`;let y=Math.min(4,Math.floor(Math.log2(g)/10));return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(g/1024**y)} ${["B","KiB","MiB","GiB","TiB"][y]}`},e.billingDate=f=>f?new Date(f).toLocaleDateString():"",e.loadBilling=()=>(e.billingError="",e.billingLoading=!0,ci(t).then(f=>{e.billing=f.data,e.emit?.("billing:updated",f.data)}).catch(()=>{e.billingError="Billing could not be loaded. Try again."}).finally(()=>{e.billingLoading=!1}));async function a(f,g,y=!0){if(!(e.billingBusy||!e.billing?.csrf)){e.billingBusy=!0,e.billingError="";try{let b=await t.post(`/api/billing/${f}`,g,{headers:{"x-csrf-token":e.billing.csrf}});if(y)window.location.assign(b.data.url);else return await e.loadBilling(),await o(),e.billingPending=!!b.data.pending,e.emit?.("billing:pending",e.billingPending),e.billingNotice=b.data.pending?"Your payment is still pending. Please do not pay again.":i.confirmedMessage||"Billing status refreshed. Your confirmed access appears below.",b.data}catch(b){e.billingError=r[b.data?.error]||"The billing request failed. Please try again."}finally{e.billingBusy=!1}}}e.checkout=(f,g="",y={})=>a("checkout",{planId:f,target:g,...y}),e.billingPortal=()=>a("portal",{}),e.refreshBilling=()=>a("refresh",{},!1);async function c(){for(let f=0;f<5;f++){let g=await e.refreshBilling();if(!g||!g.pending)return;await new Promise(y=>window.setTimeout(y,3e3))}e.billingNotice="Confirmation is taking longer than usual. You can refresh payment status later. Please do not pay again."}e.loadBilling().then(()=>{s==="success"||s==="portal"?(e.billingNotice="Checking your payment. Paid access starts after confirmation.",c()):s==="cancelled"&&(e.billingNotice="Checkout was closed. No new paid access has been activated.")})}function tl(e,t){return t?.split(".").reduce((o,i)=>o?.[i],e)}function pi(e=null,t=new Map){let o=Fe({}),i=[],s=!1,r=new Proxy(o,{get(a,c){return typeof c=="string"&&c.startsWith("__v_")||Reflect.has(a,c)?Reflect.get(a,c):e?.[c]}});return Object.defineProperty(o,"parent",{value:e,configurable:!0}),Object.defineProperty(o,"viewState",{get:()=>r}),r.watch=(a,c,f=!1,g=!0)=>{let y=typeof a=="function"?()=>a(r):()=>tl(r,a),b=Be(y,c,{deep:f,flush:"post"});return i.push(b),g&&Ke(()=>{s||c(y(),y())}),b},r.watchGroup=(a,c,f=!0)=>r.watch(()=>a.map(g=>tl(r,g)),c,!0,f),r.on=(a,c)=>{if(a==="dispose")return i.push(c),()=>{};t.has(a)||t.set(a,new Set),t.get(a).add(c);let f=()=>t.get(a)?.delete(c);return i.push(f),f},r.emit=(a,...c)=>{for(let f of[...t.get(a)||[]])f({},...c)},r.dispose=()=>{s=!0,i.splice(0).reverse().forEach(a=>a())},Wn(r.dispose),r}function ut(){let e=new Set,t=new Set,o=!1,i=(r,a=0)=>{if(o)return;let c=setTimeout(()=>{e.delete(c),r()},a);return e.add(c),c};i.cancel=r=>{clearTimeout(r),e.delete(r)};let s=(r,a)=>{if(o)return;let c=setInterval(r,a);return t.add(c),c};return s.cancel=r=>{clearInterval(r),t.delete(r)},Wn(()=>{o=!0,e.forEach(clearTimeout),t.forEach(clearInterval)}),{timeout:i,interval:s}}function Zt(){let e=new Set;return Wn(()=>{e.forEach(t=>t()),e.clear()}),(t,o,i,s)=>{t.addEventListener(o,i,s);let r=()=>{t.removeEventListener(o,i,s),e.delete(r)};return e.add(r),r}}function fi(e,t,o){let i,s=!1,r="form-draft:"+o,a=()=>Object.fromEntries(t.map(h=>[h,e[h]])),c=()=>JSON.stringify(a()),f=h=>{for(let E of t)Object.prototype.hasOwnProperty.call(h,E)&&(e[E]=h[E]);e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate))},g=()=>{try{window.sessionStorage.removeItem(r)}catch{}},y=(h=!1)=>{if(i!==void 0){if(h&&document.querySelectorAll("input, select, textarea").forEach(E=>{E._field?.binding.state===e&&E._field.timer&&E._field.commit()}),e.unsavedChanges=c()!==i,e.draftSaved=!1,!e.unsavedChanges){g();return}try{window.sessionStorage.setItem(r,JSON.stringify({account:e.user?.username||null,savedAt:Date.now(),values:a()})),e.draftSaved=!0}catch{}}},b=()=>y(!0);return e.on("routeLeave",b),window.addEventListener("beforeunload",b),e.on("dispose",()=>window.removeEventListener("beforeunload",b)),{restore(){i=c();let h;try{h=JSON.parse(window.sessionStorage.getItem(r)||"null")}catch{}let E=h&&h.account===(e.user?.username||null)&&Date.now()-h.savedAt<30*6e4&&h.values;return E&&(f(h.values),e.draftRestored=!0),s||(s=!0,e.watch(()=>a(),()=>y(),!0)),e.unsavedChanges=c()!==i,!!E},checkpoint(){return document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state===e&&h._field.timer&&h._field.commit()}),JSON.parse(c())},accept(h){i=JSON.stringify(h),e.draftRestored=!1,y()},discard(){document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state!==e||!h._field.timer||(clearTimeout(h._field.timer),h._field.timer=null,h.value=h._field.binding.value??"")}),i!==void 0&&f(JSON.parse(i)),e.draftRestored=!1,y()},clear(){i=c(),e.unsavedChanges=!1,e.draftRestored=!1,e.draftSaved=!1,g()}}}var go={VIEWER_ERRORS:{title:"Content could not be loaded",access_title:"GitHub access needs attention",reader_help:"Reading this repository? You do not need to sign in. Try again after the owner restores access, or let them know this anonymous link is unavailable.",owner_help:"Own this repository? If your GitHub account was suspended or recently recovered, sign in to Anonymous GitHub again and check the GitHub connection and repository permissions in your dashboard. Then retry this page. Keep the existing anonymous URL; do not delete the repository to restore access.",retry:"Try again",dashboard:"Open owner dashboard"},ERRORS:{cache_busy:"Downloads are busy. Please try again shortly.",invalid_sort:"The selected sort order is invalid.",invalid_cursor:"This project page is no longer valid. Reload the list.",repository_changed:"The repository changed while processing. Please retry.",repository_job_cancelled:"The repository changed or was removed while processing.",storage_delete_failed:"Unable to remove cached files. Please try again later.",unknown_error:"We could not load this content. Try again. If it still fails, contact support with the anonymous URL and the time of the error.",unreachable:"The service could not complete this request. Wait a moment and try again.",request_error:"The connection was interrupted. Check your internet connection and try again.",not_found:"The requested resource could not be found.",not_connected:"You must be logged in to perform this action.",not_authorized:"You do not have permission to perform this action.",unable_to_connect_user:"Unable to connect your account. Please try again later.",user_not_found:"The requested user could not be found.",user_banned:"Your account has been banned. Contact the admin for more information.",repo_access_limited:"GitHub blocked access because the repository's organization restricts third-party OAuth apps. Ask an org owner to approve Anonymous GitHub under Settings \u2192 Third-party Access \u2192 OAuth app policy, or anonymize a personal fork instead.",repo_saml_enforcement:"The repository's organization enforces SAML single sign-on. Authorize your token for that organization (GitHub \u2192 Settings \u2192 Applications, or re-run the org's SSO sign-in), then retry. Alternatively, anonymize a personal fork.",repo_not_found:"Anonymous GitHub cannot access the source repository on GitHub. It may be private, unavailable, or require the owner to reconnect GitHub.",repo_empty:"The selected branch has no commits on GitHub. Push at least one commit, or pick a different branch, then retry.",repo_not_accessible:"Anonymous GitHub cannot access this repository. Verify the repository exists and that Anonymous GitHub has been authorized for the owning organization.",repository_archived:"This repository has been archived and its files are no longer available.",repository_expired:"The repository is expired.",invalid_status:"This action cannot be performed while the resource is in its current state.",repository_not_ready:"Anonymous GitHub is still processing the repository, it can take several minutes.",repository_not_accessible:"This repository is currently not accessible.",repo_is_updating:"Anonymous GitHub is still processing the repository, it can take several minutes.",invalid_repo:"The provided repository is not valid.",invalid_source_repository:"The repository source name is invalid; expected the form 'owner/name'.",repoId_not_defined:"A repository ID must be provided.",repoUrl_not_defined:"The repository URL needs to be defined.",source_not_provided:"A repository source must be provided.",github_rate_limit_exceeded:"GitHub temporarily blocked the request because we hit its API rate limit. Wait a few minutes and try again. If the problem persists and you contact GitHub Support, include the request ID and timestamp shown in GitHub's response (the 'X-GitHub-Request-Id' header).",rate_limited:"GitHub API rate limit reached. The repository will be available shortly \u2014 please wait a moment and refresh.",repoId_already_used:"The repository ID is already used.",invalid_repoId:"The format of the repository ID is invalid.",unsupported_source:"The repository source type is not supported.",branch_not_specified:"The branch is not specified.",branch_not_found:"The branch of the repository cannot be found.",commit_not_specified:"A commit must be specified.",commit_not_found:"The configured commit no longer exists in the source repository. It may have been force-pushed, rebased, or removed.",repo_renamed:"The source repository appears to have been renamed or moved on GitHub. Please refresh and try again \u2014 the cached name has been updated.",invalid_commit_format:"The commit hash format is invalid. It must be a hexadecimal string.",pull_request_not_found:"The requested pull request could not be found.",pull_request_expired:"This pull request has expired and is no longer available.",pull_request_not_ready:"This pull request is still being prepared. Please try again shortly.",pull_request_not_available:"This pull request is currently not available.",invalid_pullRequestId:"The pull request ID is invalid.",pullRequestId_already_used:"This pull request ID is already in use. Please choose a different one.",repository_not_specified:"A repository must be specified for this pull request.",pullRequestId_not_specified:"A pull request ID must be specified.",pullRequestId_is_not_a_number:"The source pull request ID must be a number.",options_not_provided:"Anonymization options are mandatory.",terms_not_specified:"Anonymization terms must be specified.",invalid_terms_format:"Terms are in an invalid format.",missing_content:"No content was provided to the anonymization preview.",unable_to_anonymize:"An error happened during the anonymization process. Please try later or report the issue.",non_supported_mode:"The selected anonymization mode is invalid, only download and stream are supported.",invalid_path:"The provided path is invalid or missing.",path_not_specified:"A file path must be specified.",path_not_defined:"The file path has not been resolved yet.",invalid_file_path:"The requested file path is not valid.",invalid_request:"The request is missing required fields or is malformed.",invalid_project_name:"Use a project name of up to 100 characters without line breaks or control characters.",no_file_selected:"Please select a file.",submodule_not_available:"This public submodule file is no longer available at its recorded commit.",file_not_found:"The requested file is not found.",file_not_accessible:"The requested file is not accessible.",file_not_supported:"The file type is not supported. Anonymous GitHub cannot handle it.",repository_tree_too_large:"The repository has too many pending folders to process safely. Share a smaller repository.",file_listing_too_large:"This folder has too many entries to list. Open a more specific folder or use file search.",file_too_big:"The file size exceeds the limit of Anonymous GitHub.",is_folder:"The path points to a folder.",folder_not_supported:"The path points to a folder. Please select a file.",unable_to_write_file:"Unable to write file on disk.",download_not_enabled:"Repository downloads are not enabled on this server.",unable_to_download:"The repository could not be downloaded. Please try again later.",s3_config_not_provided:"Object storage has not been configured on this server.",stats_unsupported:"Statistics are only supported in download mode.",branches_not_found:"The requested branch is not found.",readme_not_available:"No README for the repository is found.",page_not_supported_on_different_branch:"GitHub Pages is served from a different branch than the one selected. Pick the branch that GitHub Pages is configured to use.",page_not_activated:"GitHub Pages is not enabled on this repository. Enable it in the repository settings on GitHub before anonymizing.",is_removed:"This resource has been removed and is no longer available.",conf_name_missing:"A conference name is required.",conf_id_missing:"A conference ID is required.",conf_id_used:"This conference ID is already in use. Please choose a different one.",conf_start_date_missing:"A start date is required for the conference.",conf_end_date_missing:"An end date is required for the conference.",conf_start_date_invalid:"The start date must be before the end date.",conf_end_date_invalid:"The end date must be in the future.",invalid_plan:"The selected plan is not valid.",conference_not_found:"The requested conference could not be found.",conf_not_found:"The requested conference could not be found.",conf_not_activated:"The conference is not activated.",billing_missing:"Billing information is required for this plan.",billing_name_missing:"A billing name is required.",billing_email_missing:"A billing email is required.",billing_address_missing:"A billing address is required.",billing_city_missing:"A billing city is required.",billing_zip_missing:"A billing ZIP/postal code is required.",billing_country_missing:"A billing country is required.",queue_not_found:"The specified queue could not be found.",job_not_found:"The specified job could not be found in the queue.",error_retrying_job:"An error occurred while retrying the job.",gist_expired:"The gist is expired.",gist_not_ready:"Anonymous GitHub is still processing the gist, it can take several minutes.",gist_not_found:"The requested gist could not be found.",gist_not_available:"This gist is currently not available.",invalid_gistId:"The format of the gist ID is invalid.",gistId_not_specified:"A gist ID must be provided.",gistId_already_used:"The gist ID is already used.",missing_token:"An authentication token is required.",token_attempts_rate_limited:"Too many token authentication attempts. Wait before trying again.",refresh_rate_limited:"A refresh was already requested for this repository. Wait one minute before trying again.",session_required:"Sign in through your browser to manage maintenance tokens.",invalid_token_options:"Provide a token name, 1 to 20 repository IDs, and an expiration of 1 to 90 days.",token_limit_reached:"You have reached the limit of 50 API tokens. Revoke an unused token before creating another.",invalid_token_id:"The token ID is invalid.",invalid_settings:"Provide supported settings with boolean values, or a list of anonymization terms.",token_scope_forbidden:"This token does not allow this operation or repository.",authentication_unavailable:"Authentication is temporarily unavailable. Try again later.",invalid_token:"The provided authentication token is invalid.",login_failed:"Login failed. Please try again.",server_error:"An unexpected server error occurred. Please try again later.",username_not_defined:"A username must be provided.",github_user_not_found:"The specified GitHub user could not be found.",cannot_coauthor_self:"You cannot add yourself as a co-author.",storage_write_size_mismatch:"The downloaded file was smaller than expected. The upstream source may have returned an incomplete response \u2014 please try again.",storage_read_error:"An error occurred while reading the file from storage \u2014 please try again.",upstream_error:"A temporary error occurred while fetching from GitHub \u2014 please try again.",token_expired:"The repository owner needs to renew their GitHub connection before this content can be loaded.",job_is_active:"This job is currently running \u2014 wait for it to finish or remove it first.",github_app_access_required:"Allow this repository on GitHub using the read-only access button, then retry. Organization access may require administrator approval.",github_app_reconnect_required:"Reconnect your GitHub App account to restore read-only access.",github_app_disabled:"New GitHub App connections are currently unavailable.",github_oauth_required:"Connect legacy GitHub OAuth to use this feature.",github_identity_mismatch:"Use the same GitHub account that you are signed in with here.",github_app_permissions_invalid:"The GitHub App must be configured with read-only permissions.",github_unavailable:"GitHub is temporarily unavailable. Please retry.",connection_changed:"The repository connection changed. Reload and try again.",repository_busy:"Wait for the repository operation to finish before changing its connection.",invalid_connection:"Select a supported GitHub connection.",github_oauth_disabled:"Legacy OAuth sign-in is currently disabled.",invalid_auth_state:"The authorization session expired. Please start again from Anonymous GitHub.",invalid_webhook_signature:"The webhook signature is invalid.",webhook_processing_failed:"Webhook processing failed. Retry the delivery.",github_app_authorization_cancelled:"GitHub authorization was cancelled.",github_account_link_required:"Verify your existing account with your previous GitHub connection. Future sign-ins will use the GitHub App.",github_app_refresh_busy:"GitHub credentials are being renewed. Please retry shortly.",github_grant_revocation_failed:"Unable to revoke the GitHub grant. Please retry.",another_login_required:"Connect and verify another sign-in method before disconnecting OAuth.",oauth_resources_remaining:"Some resources still require OAuth. Migrate or remove them before disconnecting.",invalid_github_path:"The GitHub repository path is invalid.",repository_tree_incomplete:"The repository file tree is incomplete. Reduce its size and refresh before downloading.",billing_environment_mismatch:"The payment event does not match this billing environment.",billing_unavailable:"Payments are not available. Please try again later.",invalid_billing_signature:"The payment notification could not be verified.",billing_webhook_failed:"The payment notification could not be processed.",billing_customer_not_found:"No billing account was found.",subscription_required_for_never_expiration:"Never-expiring repositories require the owner\u2019s active monthly or annual author subscription. Choose a dated expiration or upgrade in Plans and billing.",invalid_billing_expiration:"Choose an expiration date within the next year, or select Never expire with an author subscription.",pending_payment:"Awaiting payment"},WARNINGS:{page_not_enabled_on_repo:"GitHub Pages is not enabled on this repository. Enable it in the repository's Settings \u2192 Pages on GitHub, then refresh.",page_branch_mismatch:"GitHub Pages on this repository is served from the '{{pageBranch}}' branch, but you selected '{{selectedBranch}}'. Switch the branch above to '{{pageBranch}}' to anonymize the Pages site.",folder_truncated:"This folder has more than 10,000 entries; only a partial listing is shown.",repo_truncated:"Some folders in this repository have too many files to be fully listed. Affected folders are marked with a warning icon.",submodules_not_included:"Some submodule contents could not be included. Only direct public GitHub submodules within the size limits are supported. Private, external, nested, or unavailable submodules appear as empty folders."}};function hi(e){let t=e?.data;if(typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return typeof t?.error=="string"&&Object.prototype.hasOwnProperty.call(go.ERRORS,t.error)?t.error:e?.status===-1||e?.status===0?"request_error":[502,503,504].includes(e?.status)?"unreachable":"unknown_error"}var ls="XXXX",Dp=e=>{ls=e||"XXXX"},nl=(e=ls)=>{if(!e)return null;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(t+"(?:-\\d+)?","g")},ol=(e,t=ls)=>{let o=nl(t);if(!o||!e||!e.textContent.includes(t))return;let i=e.ownerDocument,s=i.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[];for(;s.nextNode();)r.push(s.currentNode);for(let a of r){let c=a.nodeValue,f=a.parentElement;if(!c.includes(t)||!f||f.closest("script, style, mark.redaction, .mermaid"))continue;let g=f.closest('code[class*="language-"]');if(g&&!g.contains(e))continue;let y=i.createDocumentFragment(),b=0;for(let h of c.matchAll(o)){y.append(c.slice(b,h.index));let E=i.createElement("mark");E.className="redaction",E.title="Redacted by Anonymous GitHub",E.textContent=h[0],y.append(E),b=h.index+h[0].length}y.append(c.slice(b)),a.replaceWith(y)}},sl=(e,t=ls)=>{if(!e||!t||!e.includes(t))return e;let o=new DOMParser().parseFromString(""+e+"","text/html");return ol(o.body,t),o.body.innerHTML};async function il(e){if(window.navigator.clipboard?.writeText){await window.navigator.clipboard.writeText(e);return}let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0";let o=document.activeElement;document.body.appendChild(t);try{if(t.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{t.remove(),o?.focus()}}function Tp(e){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key))return;let t=[...e.currentTarget.closest('[role="tablist"]').querySelectorAll('[role="tab"]')],o=t.indexOf(e.currentTarget),i=e.key==="Home"?0:e.key==="End"?t.length-1:(o+(e.key==="ArrowRight"?1:-1)+t.length)%t.length;e.preventDefault(),t[i]?.focus(),t[i]?.click()}var rl=function(e,t,o,i){e.previewTabKeydown=Tp,e.headerCanUpgrade=!1,e.headerBillingPending=["success","portal"].includes(new URLSearchParams(window.location.search).get("billing"));let s=b=>{let h=(b?.grants||[]).some(E=>["author_monthly","author_annual"].includes(E.planId)&&["active","paid","past_due"].includes(E.status)&&new Date(E.until).getTime()>Date.now());e.headerCanUpgrade=!!b?.enabled&&b.checkoutEnabled!==!1&&!h&&(b.plans||[]).some(E=>["author_monthly","author_annual"].includes(E.id))};e.on("billing:updated",(b,h)=>s(h)),e.on("billing:pending",(b,h)=>{e.headerBillingPending=h}),e.openHeaderUpgrade=()=>{o.path()==="/profile"?e.emit("settings:upgrade"):o.url("/profile?upgrade=1")},e.title="Main",e.user={status:"connection"},e.site_options,e.toasts=[],e.removeToast=function(b){let h=e.toasts.indexOf(b);h!==-1&&e.toasts.splice(h,1)},e.addToast=function(b){return e.toasts.push(b),i(function(){e.removeToast(b)},8e3),b};let r=/^\/(r|repository|pr|gist)\//;e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path()),e.darkMode=function(b){localStorage.setItem("darkMode",b),e.isDarkMode=b;let h="/css/prism-okaidia.css",E="/css/prism.css";if(b){$("body").addClass("dark-mode");let m=document.createElement("link");m.href=h,m.rel="stylesheet",document.head.append(m),$(`link[href='${E}']`).remove()}else{$("body").removeClass("dark-mode");let m=document.createElement("link");m.href=E,m.rel="stylesheet",document.head.append(m),$(`link[href='${h}']`).remove()}let _=document.querySelector("[class*='floatingchat-container-wrap'] [class*='floating-chat-kofi-text-container-wrap']");_&&(_.style.backgroundColor=b?"#34312C":"#1A1815",_.style.color="#FAF9F6"),e.emit("dark-mode",b)},e.darkMode(localStorage.getItem("darkMode")=="true"),e.emailPromptOpen=!1,e.emailPromptAddress="",e.emailPromptBusy=!1,e.emailPromptError="";let a;e.respondToEmailPrompt=async b=>{if(!e.emailPromptBusy){e.emailPromptBusy=!0,e.emailPromptError="";try{let h=await t.post("/github/connections/email",{action:b,email:e.emailPromptAddress},{headers:{"X-CSRF-Token":e.user.emailPromptCSRF}});b==="save"&&(e.user.notificationEmail=h.data.notificationEmail),e.emailPromptOpen=!1,e.user.showEmailPrompt=!1,a?.focus()}catch(h){e.emailPromptError=h.data?.error||"Unable to save your preference. Please try again."}finally{e.emailPromptBusy=!1}}};function c(){t.get("/api/user").then(b=>{b&&(e.user=b.data),e.user?.username&&ci(t).then(h=>s(h.data)).catch(()=>{}),e.user?.emailNotificationsEnabled&&e.user.showEmailPrompt&&!e.user.notificationEmail&&(a=document.activeElement,e.emailPromptOpen=!0,i(()=>{let h=document.getElementById("email-prompt");h?.showModal?h.showModal():h?.setAttribute("open",""),document.getElementById("email-prompt-address")?.focus()},0))},()=>{e.user=null})}c();function f(){t.get("/api/options").then(b=>{b&&(e.site_options=b.data),Dp(b?.data?.ANONYMIZATION_MASK),e.emit("site-options")},()=>{e.site_options=null})}f();function g(){t.get("/api/message").then(b=>{b&&(e.generalMessage=b.data)},()=>{e.generalMessage=null})}g();function y(b,h){h&&(e.title=h.title),e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path())}e.on("routeChange",y),e.on("routeUpdate",y)},al=function(e,t){let o=Zt(),i=ut(),s=()=>{let r=window.location.hash.slice(1),a=document.getElementById(r);if(!a?.classList.contains("panel-collapse"))return;$(a).collapse("show");let c=document.getElementById(a.getAttribute("aria-labelledby"));c?.setAttribute("tabindex","-1"),c?.focus({preventScroll:!0}),c?.scrollIntoView?.({block:"start"})};e.on("routeUpdate",()=>i.timeout(s,0)),o(window,"hashchange",s),i.timeout(s,0)},ll=function(e,t,o,i,s){e.settingsTab=/(?:billing|upgrade)=/.test(window.location.search)?"billing":"defaults",e.confirmDeleteAccount=!1,e.deleteUsername="",e.profilePastSubscription=()=>!e.profileAuthorGrant()&&(e.billing?.grants||[]).some(g=>["author_monthly","author_annual"].includes(g.planId)),e.showAuthorPlans=new URLSearchParams(window.location.search).get("upgrade")==="1",e.showRepositoryPass=!1,e.profilePlan="author_monthly",e.openProfileUpgrade=()=>{e.settingsTab="billing",e.showAuthorPlans=!0,Ke(()=>document.getElementById("settings-plan-comparison")?.focus())},e.on("settings:upgrade",()=>e.openProfileUpgrade()),e.profileAuthorPlans=()=>(e.billing?.plans||[]).filter(g=>["author_monthly","author_annual"].includes(g.id)),e.profileSelectedPlan=()=>e.profileAuthorPlans().find(g=>g.id===e.profilePlan)||e.profileAuthorPlans()[0],e.profilePassPlan=()=>(e.billing?.plans||[]).find(g=>g.id==="author_pass"),e.profileAuthorGrant=()=>(e.billing?.grants||[]).find(g=>["author_monthly","author_annual"].includes(g.planId)&&["active","paid","past_due"].includes(g.status)&&new Date(g.until).getTime()>Date.now()),e.profileGrantName=g=>({author_monthly:"Author monthly",author_annual:"Author annual",author_pass:"Repository pass",conference:"Conference hosting"})[g.planId]||g.planId,as(e,t,()=>s.load().then(g=>{e.quota=g},console.error)),e.terms="",e.options={expirationMode:"remove",update:!1,image:!0,pdf:!0,notebook:!0,loc:!0,link:!0},e.saving=!1,e.message=null,e.error=null,e.accountEmail="",e.emailLoading=!0,e.emailCSRFReady=!1,e.emailSaving=!1,e.emailSaved=!1,e.emailError="";let r="";e.loadAccountEmail=async()=>{e.emailLoading=!0,e.emailError="";try{let g=await t.get("/github/connections/email");e.accountEmail=g.data.notificationEmail||"",r=g.data.csrf,e.emailCSRFReady=!!r}catch{e.emailError="Unable to load your email address. Please try again."}finally{e.emailLoading=!1}},e.saveAccountEmail=async()=>{if(!(e.emailSaving||e.emailLoading||!r)){e.emailSaving=!0,e.emailSaved=!1,e.emailError="";try{let g=await t.post("/github/connections/email",{email:e.accountEmail},{headers:{"X-CSRF-Token":r}});e.accountEmail=g.data.notificationEmail,e.user&&(e.user.notificationEmail=g.data.notificationEmail),e.emailSaved=!0}catch{e.emailError="Unable to save your email address. Check the address and try again."}finally{e.emailSaving=!1}}},e.loadAccountEmail(),s.load().then(g=>{e.quota=g},console.error);let a=fi(e,["terms","options"],"profile");e.discardDraft=()=>a.discard();function c(){t.get("/api/user/default").then(g=>{let y=g.data||{};y.terms&&(e.terms=y.terms.join(` `)),e.options=Object.assign({},e.options,y.options),a.restore()})}c();let f=null;e.saveDefault=g=>{if(g&&g.preventDefault&&g.preventDefault(),e.saving)return;let y=a.checkpoint(),b={terms:e.terms.split(` -`).map(h=>h.trim()).filter(h=>h.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",b).then(()=>{a.accept(y),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",f&&i.cancel(f),f=i(()=>{e.message=null},2500)},h=>{e.saving=!1;let E=h&&h.data&&h.data.error,_="Unable to save your defaults. Please try again.";Promise.all([o("ERRORS."+E),o("ERRORS.unknown_error")]).then(([m,C])=>{e.error=E&&m!==C?m:_},()=>{e.error=_})})},e.deleteAccount=()=>{e.deletingAccount||!e.confirmDeleteAccount||e.deleteUsername!==e.user?.username||(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},dl=function(e,t,o){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(i=>{o.url("/dashboard")},i=>{e.error=i.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},ul=function(e,t,o,i,s){e.user&&!e.user.status&&o.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&o.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(c){e.feature=c},e.featureHref=function(c){return c.needsUser&&!e.user?"/signin":c.href},e.featureTarget=function(c){return c.needsUser&&!e.user?"_self":c.target||void 0},e.featureKeydown=function(c,f){let g={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[c.key];if(g===void 0)return;c.preventDefault();let y=e.features.length,b=g==="first"?0:g==="last"?y-1:(f+g+y)%y;e.feature=e.features[b].key,s(()=>{let h=i.document.getElementById("feature-tab-"+e.feature);h&&h.focus()})},e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function r(){t.get("/api/stat/").then(c=>{e.stat=c.data,e.cards[0].total=c.data.nbRepositories,e.cards[1].total=c.data.nbUsers,e.cards[2].total=c.data.nbPageViews,e.cards[3].total=c.data.nbPullRequests})}r();function a(c){let f={series:c,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!c||c.length<2)return f;let g=new Array(c.length-1);for(let m=1;m=2){let m=g[y-2];m&&(f.pctChange=(f.deltaToday-m)/m*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(c=>{let f=c.data||[];e.history={repositories:a(f.map(g=>g.nbRepositories||0)),users:a(f.map(g=>g.nbUsers||0)),pageViews:a(f.map(g=>g.nbPageViews||0)),pullRequests:a(f.map(g=>g.nbPullRequests||0))}})},cl=function(e,t,o,i,s,r){let a=ut();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,Ke(()=>document.querySelector(".dashboard-quota > summary")?.focus())},Zt()(document,"click",R=>{e.quotaExpanded&&!R.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=R=>R.status==="error"||R._broken||f(R.status)==="progress"&&R._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=R=>{e.projectView=R,R==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=R=>"project-details-"+encodeURIComponent(R._type+":"+(R._id||R._source||"unknown")),e.showProjectDetails=async R=>{e.selectedProject=R,e.projectName=R.projectName||"",e.nameError="",e.nameMessage="",await Ke();let V=document.getElementById(e.projectDetailsId(R));V?.focus(),V?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=R=>{e.selectedProject=null,Ke(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(R._type+":"+R._id)}"]`)?.focus())},e.saveProjectName=async R=>{if(e.nameSaving||!R._id)return;let V=e.projectName.trim();if(V.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let Y=await t.post("/api/user/project-name",{type:R._type,id:R._id,name:V});R.projectName=Y.data.name,R._label=R.projectName||R._fallbackLabel,e.selectedProject===R&&(e.nameMessage=V?"Project name saved.":"Default project name restored."),O||(e.dashboardCursor=null,await L(),e.selectedProject===R&&(e.selectedProject=e.items.find(X=>X._type===R._type&&X._id===R._id)||null))}catch{e.selectedProject===R&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async R=>{if(!R._viewUrl||e.copyingId)return;let V=new URL(R._viewUrl,s.location.origin).href;e.copyingId=R._type+":"+R._id;try{await il(V),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:V})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let c=["queue","download","downloaded","preparing","anonymizing"];function f(R){return R==="ready"||R==="error"?R:R==="expired"||R==="expiring"?"expired":R==="removed"||R==="removing"?"removed":(c.indexOf(R)>-1,"progress")}let g=7200*1e3,y="dashboard.filterPrefs",b={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,expired:!0,removed:!1}},orderBy:"-anonymizeDate"},h=loadFilterPrefs(y)||{};e.typeFilter=h.typeFilter||b.typeFilter,e.filters={status:Object.assign({},b.filters.status,h.filters&&h.filters.status||{})},e.orderBy=h.orderBy||b.orderBy;let E={_name:{label:"Anonymous ID",defaultDesc:!1},_label:{label:"Project",defaultDesc:!1},anonymizeDate:{label:"Anonymize date",defaultDesc:!0},status:{label:"Status",defaultDesc:!1},lastView:{label:"Last view",defaultDesc:!0},pageView:{label:"Views",defaultDesc:!0},"options.expirationDate":{label:"Expiration",defaultDesc:!1}};e.sortFields=E,e.sortField=()=>e.orderBy.replace(/^-/,""),e.sortDesc=()=>e.orderBy.charAt(0)==="-",e.sortLabel=()=>{let R=E[e.sortField()];return R?R.label:"Custom"},e.isSortedBy=R=>e.sortField()===R,e.setSort=(R,V)=>{typeof V!="boolean"&&(V=e.isSortedBy(R)?!e.sortDesc():!!(E[R]&&E[R].defaultDesc)),e.orderBy=(V?"-":"")+R},e.toggleSortDirection=()=>{e.setSort(e.sortField(),!e.sortDesc())},e.watchGroup(["typeFilter","orderBy"],()=>{saveFilterPrefs(y,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(y,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})},!0),r.load().then(R=>{e.quota=R},console.error);function _(R,V,Y,X,G,J){R.pageView||(R.pageView=0),R.lastView||(R.lastView=""),R.options=R.options||{},R.options.terms=(R.options.terms||[]).filter(ue=>ue),R._id=V||"",R._source=X,R._broken=!V,R._name=V||X||"(unnamed)",R._fallbackLabel=R._type==="gist"?"Gist "+(V||X||"without an ID"):X||Y||R._name,R._label=R.projectName||R._fallbackLabel,R._editUrl=V?G:null,R._viewUrl=V?J:null,R._broken&&(R.status="error",R.statusMessage="incomplete_record"),R._statusKey=f(R.status);let ie=R.anonymizeDate||R.lastView;return R._stale=R._statusKey==="progress"&&!!ie&&Date.now()-new Date(ie).getTime()>g,R.status==="expired"||R.status==="expiring"?R._expiry={kind:"expired",date:R.options.expirationDate}:R.status!=="ready"?R._expiry={kind:"none"}:R.options.expirationMode==="never"||!R.options.expirationDate?R._expiry={kind:"never"}:R._expiry={kind:"date",date:R.options.expirationDate},R}function m(R){return t.get(R).then(V=>V.data||[],V=>(console.error(V),[]))}function C(){return e.loading=!0,i.all([m("/api/user/anonymized_repositories"),m("/api/user/anonymized_pull_requests"),m("/api/user/anonymized_gists")]).then(R=>{let V=R[0],Y=R[1],X=R[2],G=[];V.forEach(J=>{J._type="repo";let ie=J.source||{};G.push(_(J,J.repoId,J.repoId,ie.fullName,"/anonymize/"+J.repoId,"/r/"+J.repoId+"/"))}),Y.forEach(J=>{J._type="pr";let ie=J.source||{};G.push(_(J,J.pullRequestId,J.pullRequestId,ie.repositoryFullName?ie.repositoryFullName+"#"+ie.pullRequestId:void 0,"/pull-request-anonymize/"+J.pullRequestId,"/pr/"+J.pullRequestId+"/"))}),X.forEach(J=>{J._type="gist";let ie=J.source||{};G.push(_(J,J.gistId,J.gistId,ie.gistId,"/gist-anonymize/"+J.gistId,"/gist/"+J.gistId+"/"))}),e.items=G,e.loading=!1})}let N=0,O=!1;e.dashboardCursor=null,e.dashboardError="";function q(R){let V=R.source||{};return R._type==="repo"?_(R,R.repoId,R.repoId,V.fullName,"/anonymize/"+R.repoId,"/r/"+R.repoId+"/"):R._type==="pr"?_(R,R.pullRequestId,R.pullRequestId,V.repositoryFullName?V.repositoryFullName+"#"+V.pullRequestId:void 0,"/pull-request-anonymize/"+R.pullRequestId,"/pr/"+R.pullRequestId+"/"):_(R,R.gistId,R.gistId,V.gistId,"/gist-anonymize/"+R.gistId,"/gist/"+R.gistId+"/")}function L(R=!1){if(O)return C();let V=++N;return e.loading=!R,e.loadingMore=R,e.dashboardError="",t.get("/api/user/dashboard",{params:{q:e.search,type:e.typeFilter,sort:e.orderBy,statuses:Object.keys(e.filters.status).filter(Y=>e.filters.status[Y]!==!1).join(",")||"none",attention:String(e.projectView==="attention"),cursor:R?e.dashboardCursor:void 0}}).then(Y=>{if(V===N){if(!Array.isArray(Y.data?.items))return O=!0,C();e.items=(R?e.items:[]).concat(Y.data.items.map(q)),e.dashboardCursor=Y.data.cursor,e.dashboardTotals=Y.data}},Y=>{if(V===N){if(Y.status===404)return O=!0,C();e.dashboardError="Projects could not be loaded. Please try again."}}).finally(()=>{V===N&&(e.loading=!1,e.loadingMore=!1)})}e.loadMoreProjects=()=>L(!0);let U;e.watchGroup(["search","typeFilter","orderBy","projectView"],()=>{O||(U&&a.timeout.cancel(U),U=a.timeout(()=>L(),150))},!1),e.watch("filters",()=>{O||L()},!0,!1),e.on("dispose",()=>{N++}),L(),e.openItem=(R,V)=>{if(!R._viewUrl)return;let Y=V&&V.target;Y&&Y.closest&&Y.closest("a, button, .dropdown, input")||(s.location.href=R._viewUrl)},e.hiddenStatusCount=()=>Object.keys(e.filters.status).filter(R=>e.filters.status[R]===!1).length,e.hasHiddenStatus=()=>e.hiddenStatusCount()>0,e.hasActiveFilters=()=>e.projectView!=="all"||e.typeFilter!=="all"||e.search.trim().length>0||Object.keys(e.filters.status).some(R=>e.filters.status[R]===!1),e.showClearFilters=()=>e.search.trim().length>0||e.typeFilter!=="all"||e.hiddenStatusCount()>1,e.clearFilters=()=>{e.projectView="all",e.typeFilter="all",e.search="",Object.keys(e.filters.status).forEach(R=>{e.filters.status[R]=!0})};function z(R,V,Y,X){t.get("/api/repo/"+R).then(async G=>{let J=X!==void 0&&X!==G.data.status;for(let ie of e.items)if(ie._type==="repo"&&ie.repoId==R){J=J||ie.status!==G.data.status;let ue=e.needsAttention(ie);ie.status=G.data.status,ie.statusMessage=G.data.statusMessage,ie._statusKey=f(ie.status),ie._statusKey!=="progress"&&(ie._stale=!1);let de=e.needsAttention(ie);e.dashboardTotals&&ue!==de&&(e.dashboardTotals.attention=Math.max(0,e.dashboardTotals.attention+(de?1:-1)));break}if(J&&!O){e.dashboardCursor=null;let ie=e.selectedProject;await L(),ie&&e.selectedProject===ie&&(e.selectedProject=e.items.find(ue=>ue._type===ie._type&&ue._id===ie._id)||null)}if(G.data.status=="ready"||G.data.status=="error"||G.data.status=="removed"||G.data.status=="expired"){V(G.data);return}a.timeout(()=>z(R,V,Y,G.data.status),2500)},Y)}let ne=R=>R==="repo"?"repository":R==="gist"?"gist":"pull request",x=R=>R==="repo"?"/api/repo":R==="gist"?"/api/gist":"/api/pr";e.removeItem=R=>{let V=ne(R._type);if(confirm(`Are you sure that you want to remove the ${V} ${R._id}?`)){let Y=Fe({title:`Removing ${R._id}...`,date:new Date,body:`The ${V} ${R._id} is going to be removed.`});e.addToast(Y);let X=`${x(R._type)}/${R._id}`;t.delete(X).then(()=>{R._type==="repo"?z(R._id,()=>{Y.title=`${R._id} is removed.`,Y.body=`The ${V} ${R._id} is removed.`},void 0,R.status):(Y.title=`${R._id} is removed.`,Y.body=`The ${V} ${R._id} is removed.`,L())},G=>{Y.title=`Error during the removal of ${R._id}.`,Y.body=G.body,L()})}},e.refreshItem=R=>{let V=ne(R._type),Y=Fe({title:`Refreshing ${R._id}...`,date:new Date,body:`The ${V} ${R._id} is going to be refreshed.`});e.addToast(Y);let X=J=>{Y.title=`Error during the refresh of ${R._id}.`,Y.body=J.data?.error||J.body||"The refresh could not be completed. Please try again.",L()},G=`${x(R._type)}/${R._id}/refresh`;t.post(G).then(()=>{R._type==="repo"?z(R._id,J=>{if(J.status!=="ready"){X({body:J.statusMessage||`The repository is ${J.status}.`});return}Y.title=`${R._id} is refreshed.`,Y.body=`The ${V} ${R._id} is refreshed.`},X,R.status):(Y.title=`${R._id} is refreshed.`,Y.body=`The ${V} ${R._id} is refreshed.`,L())},X)},e.extendItem=R=>{let V=ne(R._type),Y=Fe({title:`Extending ${R._id}...`,date:new Date,body:`The expiration of ${V} ${R._id} is going to be extended by 6 months.`});e.addToast(Y);let X=`${x(R._type)}/${R._id}/extend`;t.post(X).then(()=>{R._type==="repo"?z(R._id,()=>{Y.title=`${R._id} is extended.`,Y.body=`The expiration of ${V} ${R._id} is extended by 6 months.`},void 0,R.status):(Y.title=`${R._id} is extended.`,Y.body=`The expiration of ${V} ${R._id} is extended by 6 months.`,L())},G=>{Y.title=`Error during the extension of ${R._id}.`,Y.body=G.data&&G.data.error||G.body,L()})},e.itemFilter=R=>{if(e.projectView==="attention"&&!e.needsAttention(R)||e.typeFilter!=="all"&&R._type!==e.typeFilter||e.filters.status[R._statusKey]===!1)return!1;let V=e.search.trim().toLowerCase();return!!(V.length==0||R._label&&String(R._label).toLowerCase().indexOf(V)>-1||R._source&&String(R._source).toLowerCase().indexOf(V)>-1||R._id&&String(R._id).toLowerCase().indexOf(V)>-1||R.conference&&String(R.conference).toLowerCase().indexOf(V)>-1)}};var pl=function(e,t,o){let i=ut();e.repoId=o.repoId,e.reviewUrl=window.location.origin+"/r/"+encodeURIComponent(o.repoId)+"/",e.repo=null,e.progress=0,e.rateLimitResetAt=0,e.rateLimitCountdown="",e.shareUrl=(window.location?.origin||"")+"/r/"+encodeURIComponent(e.repoId)+"/",e.copied=!1;let s=null;e.copyShareUrl=async()=>{try{await il(e.shareUrl),e.copied=!0,s&&i.timeout.cancel(s),s=i.timeout(()=>{e.copied=!1},2e3)}catch{e.addToast?.({title:"Copy this anonymous link",body:e.shareUrl})}};var r=null;let a=null,c=!1;function f(y){e.rateLimitResetAt=y,r&&i.interval.cancel(r);function b(){var h=Math.max(0,Math.ceil((y-Date.now())/1e3));if(h<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,i.interval.cancel(r),r=null;else{var E=Math.floor(h/60),_=h%60;e.rateLimitCountdown=E>0?E+"m "+_+"s":_+"s"}}b(),r=i.interval(b,1e3)}e.on("dispose",function(){c=!0,r&&i.interval.cancel(r),a&&i.timeout.cancel(a)});function g(y){if(!y)return y;var b=y.match(/^rate_limited:(\d+)$/);return b?(f(parseInt(b[1],10)),null):(e.rateLimitResetAt=0,y)}e.getStatus=()=>{c||t.get("/api/repo/"+e.repoId,{repoId:e.repoId,repoUrl:e.repoUrl}).then(y=>{if(!c){e.repo=y.data,y.data.rateLimitResetAt?f(y.data.rateLimitResetAt):e.repo.statusMessage=g(e.repo.statusMessage),e.repo.status=="ready"?e.progress=100:e.repo.status=="queue"?e.progress=10:e.repo.status=="downloaded"?e.progress=50:e.repo.status=="download"||e.repo.status=="preparing"?e.progress=25:e.repo.status=="anonymizing"&&(e.progress=75);var b=!["ready","removed","expired"].includes(e.repo.status);e.repo.status=="error"&&!e.rateLimitResetAt&&(b=!1),b&&(a=i.timeout(e.getStatus,2e3))}},y=>{e.error=y.data.error})},e.getStatus()},ds=function(e,t,o,i,s,r,a){e.sourceUrl="",e.workspaceOpen=!1,e.sourceUrlError="",e.previewStatus="idle",e.sourceLoading=!1,e.mobilePane="settings";let c=window.matchMedia?.("(max-width: 767px)");e.mobileWorkspace=!!c?.matches,c?.addEventListener&&Zt()(c,"change",w=>{e.mobileWorkspace=w.matches}),e.selectMobilePane=w=>{e.mobilePane=w};let f=0,g=!1,y=new Set,b=(w,T=!1)=>!g&&w.generation===f&&w.url===e.sourceUrl.trim()&&w.connection===e.githubConnection&&(!T||w.branch===e.source.branch),h=()=>{let w={generation:f,url:e.sourceUrl.trim(),connection:e.githubConnection,branch:e.source.branch};return y.add(w),e.sourceLoading=!0,w},E=w=>{y.delete(w),g||(e.sourceLoading=[...y].some(T=>b(T)))};e.on("dispose",()=>{g=!0,f++});let _=null,m=w=>w.gistId&&!w.repo?"gist:"+w.gistId.toLowerCase():(w.owner+"/"+w.repo).toLowerCase()+(w.pullRequestId?"/pull/"+w.pullRequestId:""),C=fi(e,["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"],"anonymize:"+(s.path?.()||"")),N=null,O=null,q=null;e.hostingReview=!1,e.previewExpanded=!1,e.taskValidationError="",e.editRepository=()=>{e.mobilePane="settings",e.previewExpanded=!1,Ke(()=>document.querySelector(".anonymize-fields .is-invalid")?.focus())},e.submitRepository=w=>{if(e.taskValidationError="",!(e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingPending)){if(M()||e.anonymize?.invalid||e.sourceUrlError){e.taskValidationError="Check the highlighted fields before continuing.",e.editRepository();return}return e.hostingNeedsPayment()?e.checkoutRepository():e.anonymizeRepo(w)}},e.hostingPayment=!1,e.hostingAlternatives=!1,e.hostingPrice=w=>w.amount==null?"Price shown at checkout":new Intl.NumberFormat(void 0,{style:"currency",currency:w.currency,minimumFractionDigits:0,maximumFractionDigits:2}).format(w.amount/100)+(w.interval==="year"?" billed annually":" billed monthly"),e.hostingPlan="author_monthly",e.hostingSaving=!1,e.selectedHostingPlan=()=>e.authorPlans().find(w=>w.id===e.hostingPlan)||e.authorPlans()[0];let L=()=>t.get("/api/user/quota").then(w=>{e.hostingQuota=w.data});as(e,t,async()=>{await L(),e.hostingQuotaBlocked=!1},{confirmedMessage:"Hosting status refreshed. Your draft is ready to continue."}),L().catch(()=>{}),e.authorPlans=()=>(e.billing?.plans||[]).filter(w=>["author_monthly","author_annual"].includes(w.id)),e.hasAuthorHosting=()=>["author_monthly","author_annual"].includes(e.billing?.allowance?.plan),e.hostingNeedsPayment=()=>!e.billing?.enabled||e.detectedType!=="repo"||e.hasAuthorHosting()||e.isUpdate&&e.role!=="owner"?!1:!!(e.options?.expirationMode==="never"&&!e._existingNever||!e.conference&&e.hostingQuotaBlocked),e.checkoutRepository=async(w=!1)=>{if(!(e.hostingSaving||e.billingBusy||!e.billing?.csrf||e.sourceLoading)){e.hostingSaving=!0,e.billingError="";try{let T=C.checkpoint(),A=JSON.stringify(T);(!O||A!==q)&&(O=(await t.post("/api/billing/draft",{path:s.path(),values:T},{headers:{"x-csrf-token":e.billing.csrf}})).data.id,q=A);let I=e.authorPlans().find(B=>B.id===e.hostingPlan)||e.authorPlans()[0];if(!w&&!I)throw new Error("No author plan available");await e.checkout(w?"author_pass":I.id,w?e.repoId:"",{draftId:O})}catch{e.billingError="Your draft could not be saved for checkout. Your form is unchanged. Please try again."}finally{e.hostingSaving=!1}}},e.useDatedHosting=()=>{e.options.expirationMode="remove"},e.discardDraft=async()=>{C.discard(),e.workspaceOpen=!!e.sourceUrl,e.error=null,e.sourceUrl?await e.urlSelected(!0):(f++,e.sourceLoading=!1,e.detectedType=null,e.details=null,e.sourceUrlError="",De.cancel(),H.cancel(),ve.cancel(),e.previewStatus="idle")},e.githubConnection=void 0,e.githubConnections=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1;let U=()=>{let w={};for(let T of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])w[T]=e[T];sessionStorage.setItem("github-access-draft",JSON.stringify({path:s.path(),savedAt:Date.now(),draft:w}))};e.connectGistApp=()=>{U(),window.location.href="/github/app/login?returnTo="+encodeURIComponent(s.path())},e.connectGistOAuth=()=>{U(),window.location.href="/github/login?returnTo="+encodeURIComponent(s.path())},e.grantGitHubAccess=()=>{U();let w=s.path(),T=J(e.sourceUrl)||"",A=e.githubConnections?.appConnected?"/github/app/install":"/github/app/login";window.location.href=A+"?returnTo="+encodeURIComponent(w)+"&repository="+encodeURIComponent(T)+"&install=1"},e.chooseGitHubConnection=async w=>{e.githubConnection=w,e.readme="",e.sourceUrl&&await ue()},e.detectedType=null,e.repoId="",e.pullRequestId="",e.gistId="",e.terms="",e.defaultTerms="",e.branches=[],e.source={branch:"",commit:""},e.options={expirationMode:"remove",expirationDate:new Date,update:!1,image:!0,pdf:!0,notebook:!0,link:!0,body:!0,title:!0,origin:!1,diff:!0,content:!0,comments:!0,username:!0,date:!0};function z(){let w=new Date;return w.setMonth(w.getMonth()+6),w}e.options.expirationDate=z();function ne(w){let T=w.getFullYear(),A=String(w.getMonth()+1).padStart(2,"0"),I=String(w.getDate()).padStart(2,"0");return`${T}-${A}-${I}`}e.minExpirationDate=ne(new Date);let x=new Date;x.setFullYear(x.getFullYear()+1),e.maxExpirationDate=ne(x),e.anonymize_readme="",e.readme="",e.html_readme="",e.isUpdate=!1,e.previousConfigurations=[],e.previousConfigurationId="";let R,V=w=>String(w||"").replace(/\/$/,"").replace(/\.git$/i,"").toLowerCase();async function Y(){if(e.isUpdate||i.repoId||i.pullRequestId||i.gistId)return;let w={generation:f,url:e.sourceUrl.trim(),connection:e.githubConnection};try{R||(R=t.get("/api/user/anonymized_repositories").then(I=>I.data));let T=await R;if(!b(w))return;let A=V(J(w.url));e.previousConfigurations=T.filter(I=>I.repoId&&I.options&&V(I.source?.fullName)===A).sort((I,B)=>(Date.parse(B.anonymizeDate)||0)-(Date.parse(I.anonymizeDate)||0)),e.previousConfigurationId=e.previousConfigurations[0]?.repoId||""}catch{R=void 0}}e.existingConfigurationUrl=()=>{let w=e.previousConfigurations.find(T=>T.repoId===e.previousConfigurationId);return w?"/anonymize/"+encodeURIComponent(w.repoId):null};function X(w){t.get("/api/user/default").then(T=>{let A=T.data;A.terms&&(e.defaultTerms=A.terms.join(` -`)),e.options=Object.assign({},e.options,A.options),e.options.expirationDate=A.options&&A.options.expirationDate?new Date(A.options.expirationDate):z(),!i.repoId&&!i.pullRequestId&&!i.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),w&&w()})}function G(w,T,A){e.anonymize&&e.anonymize[w]&&e.anonymize[w].setValidity(T,A)}function J(w){try{let T=parseGithubUrl(w);if(T&&T.owner&&T.repo)return T.owner+"/"+T.repo}catch{}return null}e.accessRepairAllowed=!1,e.repairingGitHubAccess=!1,e.accessRepairMessage="",e.repairGitHubAccess=async()=>{if(!e.accessRepairAllowed||e.repairingGitHubAccess||!e.githubConnections?.appEnabled||!i.repoId||e.role!=="owner"||e.githubConnection!=="github-app"||J(e.sourceUrl)!==e._originalFullName)return;e.repairingGitHubAccess=!0,e.accessRepairMessage="";let w=h();try{let T=await t.get("/github/connections");if(e.githubConnections=T.data,!T.data.appEnabled)return;let A=await t.post("/github/connections/migrate",{type:"repository",id:i.repoId,connection:"github-app"},{headers:{"X-CSRF-Token":T.data.csrf}});if(!b(w))return;e.error=null,A.data.fullName&&(e._originalFullName=A.data.fullName,e.source.fullName=A.data.fullName,e.sourceUrl="https://github.com/"+A.data.fullName),e.accessRepairMessage="GitHub access repaired. Your anonymous URL and published commit are unchanged.",await e.urlSelected(!0)}catch{b(w)&&(e.accessRepairMessage="Unable to repair GitHub access. Check the App's repository permissions in Manage access, then retry. Your published snapshot has not been replaced.")}finally{e.repairingGitHubAccess=!1,E(w)}},e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await le()}catch{}}};function ie(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:J(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function ue(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function de(){let w=new URLSearchParams(window.location.search).get("billingDraft");if(w){C.restore();try{let A=(await t.get("/api/billing/draft/"+encodeURIComponent(w))).data;if(A.path!==s.path())throw new Error("Wrong task");N=A.values.conference||null;for(let I of["sourceUrl","terms","repoId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(A.values,I)&&(e[I]=A.values[I]);return e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),O=A.id,q=JSON.stringify(C.checkpoint()),e.draftRestored=!0,e.hostingReview=!0,e.sourceUrl&&await ue(),s.replace?.(s.path()),!0}catch{e.billingError="The checkout draft could not be restored. Retry by reloading this page; any local draft is still available."}}let T;try{T=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!T||T.path!==s.path()||Date.now()-T.savedAt>=30*6e4)return C.restore()?(e.sourceUrl&&await ue(),!0):!1;C.restore();for(let A of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(T.draft,A)&&(e[A]=T.draft[A]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await ue(),sessionStorage.removeItem("github-access-draft"),!0}X(()=>{!i.repoId&&!i.pullRequestId&&!i.gistId&&a(de,0),i.repoId&&i.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=i.repoId,t.get("/api/repo/"+e.repoId).then(async w=>{e.accessRepairAllowed=!["removed","archived","preparing","queue","download","removing","expiring"].includes(w.data.status),e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.fullName,e._originalFullName=w.data.source.fullName,e.terms=w.data.options.terms.filter(T=>T).join(` -`),e.source=w.data.source,e.role=w.data.role||"owner",e._existingNever=w.data.options.expirationMode==="never",e.coauthors=w.data.coauthors||[],e._originalBranch=w.data.source.branch,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,e.repositoryID=w.data.source.repositoryID,e._originalRepositoryID=w.data.source.repositoryID,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),_=m(parseGithubUrl(e.sourceUrl)),!await de()&&(await Promise.all([le(),_e()]),Ne())},()=>{s.url("/404")})),i.pullRequestId&&i.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=i.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async w=>{if(e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.repositoryFullName+"/pull/"+w.data.source.pullRequestId,e.terms=w.data.options.terms.filter(T=>T).join(` -`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),_=m(parseGithubUrl(e.sourceUrl)),!await de())try{await Be()}catch{}},()=>{s.url("/404")})),i.gistId&&i.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=i.gistId,t.get("/api/gist/"+e.gistId).then(async w=>{e.sourceUrl="https://gist.github.com/"+w.data.source.gistId,e.terms=w.data.options.terms.filter(T=>T).join(` -`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),_=m(parseGithubUrl(e.sourceUrl)),!await de()&&await ee()},()=>{s.url("/404")}))}),t.get("/github/connections").then(w=>{e.githubConnections=w.data,!i.repoId&&!i.pullRequestId&&!i.gistId&&e.githubConnection===void 0&&w.data.appEnabled&&w.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&ue())}).catch(()=>{}),e.urlSelected=async(w=!1)=>{let T=++f;e.previousConfigurations=[],e.previousConfigurationId="";let A;try{A=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,De.cancel(),H.cancel(),ve.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",G("sourceUrl","github",!1);return}let I=m(A),B=w||_===I;_=I,e.sourceUrlError="",G("sourceUrl","github",!0);let F=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,F&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!B&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],B||(e.source={type:"GitHubStream",branch:"",commit:""}),De.cancel(),H.cancel(),ve.cancel(),Me.clear(),Q.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=B;try{A.gistId&&!A.repo?(e.detectedType="gist",e.source={gistId:A.gistId},await ee()):A.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:A.owner+"/"+A.repo,pullRequestId:A.pullRequestId},await Be()):(e.detectedType="repo",Y(),await Promise.all([le(),_e()]),Ne())}catch{}finally{T===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let w=e.branches.filter(A=>A.name==e.source.branch)[0];if(!w)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=w.commit),e.readme=w.readme,await _e(),Ne()}),e.getBranches=async w=>{let T=parseGithubUrl(e.sourceUrl),A=h();try{let I=await t.get(`/api/repo/${T.owner}/${T.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&J(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0||e.reconnectingSource?"1":"0",repositoryID:ie()}});if(!b(A))return;e.branches=I.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let B=e.branches.filter(F=>F.name==e.source.branch);B.length>0&&(!(!e.reconnectingSource&&!w&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=B[0].commit),e.readme=B[0].readme,await _e(w))}catch(I){if(!b(A))return;e.branches=[],e.sourceUnreachable=I&&(I.status===404||I.data&&I.data.error==="repo_not_found");let B=I&&I.data&&I.data.error||(I&&I.status===404?"repo_not_found":"unknown_error");r("ERRORS."+B).then(F=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:F}),e.error=F},console.error),typeof G=="function"&&G("sourceUrl","missing",!1)}finally{E(A)}};async function le(){let w=parseGithubUrl(e.sourceUrl),T=h();try{S();let A=await t.get(`/api/repo/${w.owner}/${w.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&J(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,repositoryID:ie(),force:"1"}});if(!b(T))return;e.details=A.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(A){if(!b(T))return;throw A.data&&(r("ERRORS."+A.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(A.data.error)),G("sourceUrl","missing",!1),A}finally{E(T)}}async function _e(w){if(e.readme&&!w)return e.readme;let T=parseGithubUrl(e.sourceUrl),A=h();try{let I=await t.get(`/api/repo/${T.owner}/${T.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&J(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0?"1":"0",branch:e.source.branch,repositoryID:ie()}});b(A,!0)&&(e.readme=I.data)}catch{b(A,!0)&&(e.readme="")}finally{E(A)}}function Ve(){let w={terms:e.terms?e.terms.split(` -`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(w.branchName=e.source.branch);try{let T=parseGithubUrl(e.sourceUrl);w.repoName=`${T.owner}/${T.repo}`}catch{}return w}function $e(w,T,A){let I=null,B=0,F=()=>{if(e.detectedType!==w)return;I&&a.cancel(I);let se=++B;e.previewStatus="loading",I=a(()=>{I=null;let Z=T();if(!Z){e.previewStatus="idle";return}t.post("/api/anonymize-preview",Z).then(re=>{se===B&&(A(re.data,Z),e.previewStatus="ready")}).catch(()=>{se===B&&(e.previewStatus="error")})},200)};return F.cancel=()=>{B++,I&&a.cancel(I),I=null},e.on("dispose",F.cancel),F}e.retryPreview=()=>{e.detectedType==="repo"&&De(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ve()};let De=$e("repo",()=>e.readme?{content:e.readme,options:Ve()}:null,w=>{if(typeof w?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=w.content;let T="";try{let I=parseGithubUrl(e.sourceUrl),B=e.source.branch||e.details&&e.details.defaultBranch||"main";T=`https://github.com/${I.owner}/${I.repo}/raw/${B}/`}catch{}let A=renderMD(e.anonymize_readme,T);e.html_readme=A,a(Prism.highlightAll,150)});function Ne(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),De())}async function Be(){let w=parseGithubUrl(e.sourceUrl),T=h();try{S();let A=await t.get(`/api/pr/${w.owner}/${w.repo}/${w.pullRequestId}`,{params:{connection:e.githubConnection}});if(!b(T))return;e.details=A.data,e.pullRequestId||(e.pullRequestId=w.repo+"-PR"+w.pullRequestId+"-"+generateRandomId(4))}catch(A){if(!b(T))return;throw A.data&&(r("ERRORS."+A.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(A.data.error)),G("sourceUrl","missing",!1),A}finally{E(T)}}let Me=Fe(new Map);function ke(){let w=new Set,T=e.details&&e.details.pullRequest;if(!T)return w;typeof T.title=="string"&&w.add(T.title),typeof T.body=="string"&&w.add(T.body),typeof T.diff=="string"&&w.add(T.diff);let A=T.comments||[];for(let I of A)typeof I.author=="string"&&w.add(I.author),typeof I.body=="string"&&w.add(I.body);return w}let H=$e("pr",()=>{let w=ke(),T=Array.from(w);return T.length===0?null:{contents:T,options:Ve()}},(w,T)=>{if(!Array.isArray(w?.contents)||w.contents.length!==T.contents.length||w.contents.some(B=>typeof B!="string"))throw Error("Invalid preview response");let A=T.contents,I=new Map;for(let B=0;BMe.set(F,B))});e.anonymizePrContent=function(w){return w&&(Me.has(w)?Me.get(w):"")};async function ee(){let w=parseGithubUrl(e.sourceUrl),T=h();try{S(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let A=await t.get(`/api/gist/source/${w.gistId}`);if(!b(T))return;e.details=A.data,e.gistId||(e.gistId="gist-"+w.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(A){if(!b(T))return;if(A.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,G("sourceUrl","missing",!1);return}if(A.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,G("sourceUrl","missing",!1);return}throw A.data&&(r("ERRORS."+A.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),j(A.data.error)),G("sourceUrl","missing",!1),A}finally{E(T)}}let Q=Fe(new Map);function oe(){let w=new Set,T=e.details&&e.details.gist;if(!T)return w;typeof T.description=="string"&&w.add(T.description),typeof T.ownerLogin=="string"&&w.add(T.ownerLogin);let A=T.files||[];for(let B of A)typeof B.filename=="string"&&w.add(B.filename),typeof B.content=="string"&&w.add(B.content);let I=T.comments||[];for(let B of I)typeof B.author=="string"&&w.add(B.author),typeof B.body=="string"&&w.add(B.body);return w}let ve=$e("gist",()=>{let w=oe(),T=Array.from(w);return T.length===0?null:{contents:T,options:Ve()}},(w,T)=>{if(!Array.isArray(w?.contents)||w.contents.length!==T.contents.length||w.contents.some(B=>typeof B!="string"))throw Error("Invalid preview response");let A=T.contents,I=new Map;for(let B=0;BQ.set(F,B)),Ce()});e.anonymizeGistContent=function(w){return w&&(Q.has(w)?Q.get(w):"")},e.previewGistFiles=[];function Ce(){let w=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=w.map(T=>({filename:e.anonymizeGistContent(T.filename),content:e.anonymizeGistContent(T.content),language:T.language}))}e.watch("details.gist.files",Ce,!0),e.watch("terms",Ce);function k(){let w=e.conference;if(e.conference_data=null,!w)return;let T=w===N||e.isUpdate&&w===e._originalConference;w!==N&&(N=null),t.get("/api/conferences/"+w).then(A=>{e.conference===w&&(e.conference_data=A.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!T&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conference_data.options.image,e.options.pdf=e.conference_data.options.pdf,e.options.notebook=e.conference_data.options.notebook,e.options.link=e.conference_data.options.link))},()=>{e.conference===w&&(e.conference_data=null)})}function S(){G("repoId","used",!0),G("repoId","format",!0),G("pullRequestId","used",!0),G("pullRequestId","format",!0),G("gistId","used",!0),G("gistId","format",!0),G("sourceUrl","used",!0),G("sourceUrl","missing",!0),G("sourceUrl","access",!0),G("sourceUrl","github",!0),G("commit","exists",!0),G("conference","activated",!0),G("terms","format",!0),e.termsRegexWarning=!1}function M(){if(e.detectedType==="repo"&&e.options.expirationMode==="never")return!1;let w=e.anonymize&&e.anonymize.expirationDate;return!e.options.expirationDate||w&&w.invalid?(w&&w.setDirty&&w.setDirty(),e.error="Please choose a valid expiration date.",!0):!1}function j(w){let T=e.detectedType==="pr"?"pullRequestId":e.detectedType==="gist"?"gistId":"repoId";switch(w){case"repoId_already_used":G(T,"used",!1);break;case"invalid_repoId":G(T,"format",!1);break;case"options_not_provided":G(T,"format",!1);break;case"repo_already_anonymized":G("sourceUrl","used",!1);break;case"invalid_terms_format":G("terms","format",!1);break;case"repo_not_found":G("sourceUrl","missing",!1);break;case"repo_not_accessible":G("sourceUrl","access",!1);break;case"commit_not_found":G("commit","exists",!1);break;case"conf_not_activated":G("conference","activated",!1);break}}e.coauthors=e.coauthors||[],e.coauthorResults=[],e.coauthorError="",e.searchCoauthors=()=>{let w=(e.coauthorSearch||"").trim();if(e.coauthorError="",w.length<2){e.coauthorResults=[];return}t.get("/api/user/search/github-users",{params:{q:w}}).then(T=>{let A=new Set((e.coauthors||[]).map(I=>(I.username||"").toLowerCase()));e.coauthorResults=(T.data||[]).filter(I=>!A.has((I.username||"").toLowerCase()))},()=>{e.coauthorResults=[]})},e.addCoauthor=(w,T)=>{T&&T.preventDefault(),!(!w||!w.username)&&t.post("/api/repo/"+e.repoId+"/coauthors",{username:w.username}).then(A=>{e.coauthors=A.data||[],e.coauthorResults=[],e.coauthorSearch="",e.coauthorError=""},A=>{let I=A&&A.data&&A.data.error||"unknown_error";e.coauthorError=I})},e.removeCoauthor=w=>{!w||!w.username||confirm("Remove co-author "+w.username+"?")&&t.delete("/api/repo/"+e.repoId+"/coauthors/"+encodeURIComponent(w.username)).then(T=>{e.coauthors=T.data||[]},T=>{let A=T&&T.data&&T.data.error||"unknown_error";e.coauthorError=A})},e.anonymizeRepo=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(e.reconnectingSource&&!e.reconnectRepositoryId)return;if(M()){e.editRepository();return}if(e.anonymize?.invalid||e.sourceUrlError){e.editRepository(),e.error="Please correct the highlighted fields before saving.";return}if(e.hostingNeedsPayment()&&e.options.expirationMode==="never"){e.hostingReview=!0,Ke(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}));return}let T=w.currentTarget||w.target.closest?.("button")||w.target;T.disabled=!0;let A=parseGithubUrl(e.sourceUrl),I={repoId:e.repoId,terms:e.terms.trim().split(` -`).filter(F=>F),connection:e.githubConnection,fullName:`${A.owner}/${A.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(I.options.pageSource=e.details.pageSource),S();let B=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(B,I,{headers:{"Content-Type":"application/json"}}).then(()=>{C.clear(),window.location.href="/status/"+e.repoId},F=>{F.data&&(r("ERRORS."+F.data.error).then(se=>{e.error=se},console.error),j(F.data.error),["quota_exceeded","subscription_required_for_never_expiration"].includes(F.data.error)&&(F.data.error==="subscription_required_for_never_expiration"&&(e._existingNever=!1),e.hostingQuotaBlocked=!0,e.hostingReview=!0,Ke(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}))))}).finally(()=>{T.disabled=!1})},e.anonymizeGist=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(M())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let T=w.currentTarget||w.target.closest?.("button")||w.target;T.disabled=!0;let A=parseGithubUrl(e.sourceUrl),I={gistId:e.gistId,terms:e.terms.trim().split(` -`).filter(F=>F),source:{gistId:A.gistId},options:e.options,conference:e.conference};S();let B=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(B,I,{headers:{"Content-Type":"application/json"}}).then(()=>{C.clear(),window.location.href="/gist/"+e.gistId},F=>{F.data&&(r("ERRORS."+F.data.error).then(se=>{e.error=se},console.error),j(F.data.error))}).finally(()=>{T.disabled=!1})},e.anonymizePullRequest=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(M())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let T=w.currentTarget||w.target.closest?.("button")||w.target;T.disabled=!0;let A=parseGithubUrl(e.sourceUrl),I={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(` -`).filter(F=>F),source:{repositoryFullName:`${A.owner}/${A.repo}`,pullRequestId:A.pullRequestId},options:e.options,conference:e.conference};S();let B=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(B,I,{headers:{"Content-Type":"application/json"}}).then(()=>{C.clear(),window.location.href="/pr/"+e.pullRequestId},F=>{F.data&&(r("ERRORS."+F.data.error).then(se=>{e.error=se},console.error),j(F.data.error))}).finally(()=>{T.disabled=!1})},e.watch("conference",()=>{k()}),e.watch("terms",()=>{e.detectedType==="repo"&&Ne(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ve()}),e.watch("options.image",()=>{e.detectedType==="repo"&&Ne(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ve()}),e.watch("options.link",()=>{e.detectedType==="repo"&&Ne(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ve()}),e.watch("details",()=>{e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ve()},!0)},mi=function(e,t,o,i,s,r){let a=ut();window.Prism?.hooks&&!window.Prism.redactionHook&&(window.Prism.hooks.add("complete",V=>ol(V.element)),window.Prism.redactionHook=!0);let c=Zt();e.on("dark-mode",(V,Y)=>{e.aceOption&&(Y?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,g=!1;e.on("dispose",()=>{g=!0,f++,y&&y.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,c(document,"keydown",function(V){if((V.metaKey||V.ctrlKey)&&V.key==="k"){V.preventDefault();var Y=document.querySelector(".tree-search-input");Y&&(Y.focus(),Y.select())}});var y=null;e.onFileSearchChange=function(){y&&(y.resolve(),y=null);let V=e.fileSearchQuery;if(!V||V.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let Y=r.defer();y=Y,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(V)}`,{timeout:Y.promise}).then(function(X){if(!(g||y!==Y)){y=null,e.fileSearchLoading=!1;var G={};e.files.forEach(function(H){G[(H.path||"")+"/"+H.name]=!0});for(var J=[],ie={},ue=0;ue0&&e.files.push.apply(e.files,J);for(var Ne=[],Be=0;Be0&&e.files.push.apply(e.files,Ne),e.fileSearchResults=X.data}},function(){!g&&y===Y&&(y=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let b={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},h=["license","txt"],E=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],_=["wav","mp3","ogg","wma","flac","aac","m4a"],m=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(V,Y){if(e.repoId!=i.repoId)return R();if((i.path||"")!=e.filePath){e.filePath=i.path||"",e.paths=e.filePath.split("/").filter(X=>X&&X.trim().length>0),x();for(let X=0;X0?e.paths.slice(0,X).join("/"):"";e.files.some(ie=>ie.path===G)||e.getFiles(G)}}});function C(){if(e.paths[0]!="")return;let V=["readme.md","readme.txt","readme.org","readme.1st","readme"],Y={};for(let G of e.files)G.name.toLowerCase().indexOf("readme")>-1&&(Y[G.name.toLowerCase()]=G.name);let X=null;for(let G of V)if(Y[G]){X=G;break}if(!X&&Object.keys(Y).length>0&&(X=Object.keys(Y)[0]),X){let G=o.url();G[G.length-1]!="/"&&(G+="/"),o.url(G+encodePathForUrl(Y[X]))}}e.fileCounts=null,e.getFiles=function(V){let Y=e.repoId;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(V)}&v=${e.options.lastUpdateDate}`).then(function(X){if(g||Y!==e.repoId)return[];let G=V||"";return e.files=e.files.filter(J=>J.path!==G),e.files.push(...X.data),X.data},function(X){if(g||Y!==e.repoId)return[];e.type="error",e.content=hi(X),e.files=[]})};function N(){let V=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts`).then(function(Y){g||V!==e.repoId||(e.fileCounts=Y.data)},function(){e.fileCounts={}})}function O(){return e.files.filter(V=>V.name==e.paths[e.paths.length-1]&&V.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var q=null;e.on("dispose",function(){q&&a.interval.cancel(q)});function L(V){if(g)return;let Y=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(X=>{if(!(g||Y!==e.repoId)){if(e.options=X.data,e.options.url){window.location=e.options.url;return}V&&V(X.data)}},X=>{if(!(g||Y!==e.repoId)){var G=X.data||{};if(G.error==="rate_limited"&&G.resetAt){let ie=function(){var ue=Math.max(0,Math.ceil((e.rateLimitResetAt-Date.now())/1e3));if(ue<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,q&&(a.interval.cancel(q),q=null),L(V);else{var de=Math.floor(ue/60),le=ue%60;e.rateLimitCountdown=de>0?de+"m "+le+"s":le+"s"}};var J=ie;e.type="rate_limited",e.rateLimitResetAt=G.resetAt,q&&a.interval.cancel(q),ie(),q=a.interval(ie,1e3)}else G.error==="repository_not_ready"?(e.type="loading",a.timeout(function(){L(V)},3e3)):(e.type="error",e.content=hi(X))}})}e.toggleSource=function(){e.showSource=!e.showSource},e.toggleAllowScripts=function(){e.allowScripts=!e.allowScripts};function U(V){return b[V]?b[V]:V}function z(V){return V=="pdf"?"pdf":V=="html"||V=="htm"?"html-doc":V=="md"?"md":V=="org"?"org":V=="ipynb"?"IPython":h.indexOf(V)>-1?"text":E.indexOf(V)>-1?"image":m.indexOf(V)>-1?"media":_.indexOf(V)>-1?"audio":"code"}function ne(V,Y){let X=f;if(!V){e.type="error",e.content="no_file_selected";return}let G=e.type;e.type="loading",e.content="loading";let J=Y&&Y.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(V)}?v=`+J,{transformResponse:ie=>ie}).then(ie=>{if(!(g||X!==f)){if(e.type=G,e.content=ie.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(ie.data,o.url()+"/../"),e.type="html"),e.type=="org"){let de=contentAbs2Relative(ie.data);var ue=new Org.Parser().parse(de).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(ue.toString()),e.type="html"}e.type=="code"&&ie.headers("content-type")=="application/octet-stream"&&(e.type="binary",e.content="binary"),a.timeout(()=>{Prism.highlightAll()},50)}},ie=>{g||X!==f||(e.type="error",e.content=hi(ie))})}function x(){f++,e.content="",e.file=O();let V="0";e.file&&e.file.sha&&(V=e.file.sha),e.url=`/api/repo/${e.repoId}/file/${encodePathForUrl(e.filePath)}?v=${V}`;let Y=e.filePath.substring(0,e.filePath.lastIndexOf("/")+1);e.fileBaseUrl=`/api/repo/${e.repoId}/file/${Y?encodePathForUrl(Y):""}`,e.showSource=!1,e.allowScripts=!1;let X=e.filePath.toLowerCase(),G=X.lastIndexOf(".");if(G>-1&&(X=X.substring(G+1)),e.aceOption={readOnly:!0,useWrapMode:!0,showGutter:!0,theme:"chrome",useSoftTab:!0,tabSize:2,fontSize:13,keyBinding:"vscode",fullLineSelection:!0,highlightActiveLine:!1,highlightGutterLine:!1,cursor:"hide",showInvisibles:!1,showIndentGuides:!0,showPrintMargin:!1,highlightSelectedWord:!1,enableBehaviours:!0,fadeFoldWidgets:!1,mode:U(X),onLoad:function(J){let ie=ace.require("ace/range").Range,ue=null;function de(ke,H){ue!==null&&(J.session.removeMarker(ue),ue=null),ke!=null&&(ue=J.session.addMarker(new ie(ke,0,H,1),"highlighted-line","fullLine"))}function le(ke){let H=window.location.hash.match(/^#L(\d+)(?:-L(\d+))?/);if(!H){de(null);return}let ee=parseInt(H[1])-1,Q=H[2]?parseInt(H[2])-1:ee;de(ee,Q),ke&&a.timeout(()=>{J.scrollToLine(ee,!0,!0,function(){})},100)}le(!0);let _e=null;J.on("guttermousedown",function(ke){let H=ke.getDocumentPosition().row,ee=ke.domEvent&&ke.domEvent.shiftKey,Q=H,oe=H;ee&&_e!==null?(Q=Math.min(_e,H),oe=Math.max(_e,H)):_e=H;let ve=Q===oe?`#L${Q+1}`:`#L${Q+1}-L${oe+1}`,Ce=window.location.pathname+window.location.search+ve;window.history.replaceState(null,"",Ce),de(Q,oe),ke.stop()});let Ve=c(window,"hashchange",()=>le(!1));J.setFontSize(e.aceOption.fontSize),J.setReadOnly(e.aceOption.readOnly),J.setKeyboardHandler(e.aceOption.keyBinding),J.setSelectionStyle(e.aceOption.fullLineSelection?"line":"text"),J.setOption("displayIndentGuides",!0),J.setHighlightActiveLine(e.aceOption.highlightActiveLine),e.aceOption.cursor=="hide"&&(J.renderer.$cursorLayer.element.style.display="none"),J.setHighlightGutterLine(e.aceOption.highlightGutterLine),J.setShowInvisibles(e.aceOption.showInvisibles),J.setDisplayIndentGuides(e.aceOption.showIndentGuides),J.renderer.setShowPrintMargin(e.aceOption.showPrintMargin),J.setHighlightSelectedWord(e.aceOption.highlightSelectedWord),J.session.setUseSoftTabs(e.aceOption.useSoftTab),J.session.setTabSize(e.aceOption.tabSize);let $e=window.matchMedia("(max-width: 991px)"),De=()=>J.session.setUseWrapMode(e.aceOption.useWrapMode&&$e.matches);De(),$e.addEventListener?.("change",De),J.setBehavioursEnabled(e.aceOption.enableBehaviours),J.setFadeFoldWidgets(e.aceOption.fadeFoldWidgets);let Ne=[],Be=()=>{Ne.forEach(ee=>J.session.removeMarker(ee)),Ne=[];let ke=nl();if(!ke)return;J.session.getDocument().getAllLines().forEach((ee,Q)=>{for(let oe of ee.matchAll(ke))Ne.push(J.session.addMarker(new ie(Q,oe.index,Q,oe.index+oe[0].length),"ace_redaction","text"))})};Be(),J.session.on("change",()=>a.timeout(Be,0));let Me=e.on("site-options",Be);return()=>{Ve(),Me(),$e.removeEventListener?.("change",De)}}},e.isDarkMode&&(e.aceOption.theme="nord_dark"),e.type=z(X),e.type=="pdf"){e.content="pdf";return}ne(e.filePath,e.file)}e.isSourceAccessError=()=>["repo_not_found","token_expired","github_app_access_required","github_app_reconnect_required","repo_saml_enforcement","repo_access_limited"].includes(e.content),e.retryContent=()=>R();function R(){f++,e.files=[],e.content=null,e.fileCounts=null,e.fileSearchQuery="",e.onFileSearchChange(),e.repoId=i.repoId,e.type="loading",e.filePath=i.path||"",e.paths=e.filePath.split("/");let V=e.repoId;L(function(Y){N();var X=r.resolve();for(let G=0;G0?e.paths.slice(0,G).join("/"):"";X=X.then(function(){return e.getFiles(J)}).then(function(){if(e.type==="error")return r.reject("error")})}X.then(function(){g||V!==e.repoId||(e.files.length==1&&e.files[0].name==""?(e.files=[],e.type="empty"):(C(),x()))})})}R()},fl=function(e,t,o,i,s){async function r(f){t.get(`/api/pr/${e.pullRequestId}/options`).then(g=>{if(e.options=g.data,e.options.url){window.location=e.options.url;return}f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}async function a(f){t.get(`/api/pr/${e.pullRequestId}/content`).then(g=>{e.details=g.data,e.tabState={active:g.data.diff?"diff":"comments"},f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}function c(){e.pullRequestId=i.pullRequestId,e.type="loading",r(f=>{a()})}c()},hl=function(e,t,o,i,s){async function r(f){t.get(`/api/gist/${e.gistId}/options`).then(g=>{if(e.options=g.data,e.options.url){window.location=e.options.url;return}f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}async function a(f){t.get(`/api/gist/${e.gistId}/content`).then(g=>{e.details=g.data;let y=g.data&&g.data.files&&g.data.files.length;e.tabState={active:y?"files":"comments"},f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}function c(){e.gistId=i.gistId,e.type="loading",r(()=>{a()})}c()},ml=function(e,t,o){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.loading=!0,e.error="",e.search="";let i="conferences.filterPrefs",s={filters:{status:{ready:!0,expired:!1,removed:!1}},orderBy:"name"},r=loadFilterPrefs(i)||{};e.filters={status:Object.assign({},s.filters.status,r.filters&&r.filters.status||{})},e.orderBy=r.orderBy||s.orderBy,e.watch("orderBy",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})},!0),e.removeConference=function(a){if(!a.removing&&confirm(`Are you sure that you want to remove the conference ${a.name}? All the repositories linked to this conference will expire.`)){a.removing=!0;let c=Fe({title:`Removing ${a.name}...`,date:new Date,body:`The conference ${a.name} is going to be removed.`});e.addToast(c),t.delete(`/api/conferences/${a.conferenceID}`).then(()=>{c.title=`${a.name} is removed.`,c.body=`The conference ${a.name} is removed.`,e.loadConferences()}).catch(()=>{c.title="Unable to remove conference",c.body="Please try again. The conference has not been removed."}).finally(()=>{a.removing=!1})}},e.loadConferences=()=>(e.loading=!0,e.error="",t.get("/api/conferences/").then(a=>{e.conferences=a.data||[]},a=>{e.error="Unable to load your conferences. Please try again."}).finally(()=>{e.loading=!1})),e.loadConferences(),e.conferenceFilter=a=>{if(e.filters.status[a.status]==!1)return!1;let c=e.search.trim().toLowerCase();return!!(!c||(a.name||"").toLowerCase().includes(c)||(a.conferenceID||"").toLowerCase().includes(c))}},vi=function(e,t,o,i){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.plans=[],e.editionMode=!1,e.saving=!1,e.error="";function s(){return t.get("/api/conferences/"+i.conferenceId).then(y=>{e.options={...e.options,...y.data,billing:y.data.billing||{}},e.options.startDate=new Date(e.options.startDate),e.options.endDate=new Date(e.options.endDate)})}i.conferenceId&&(e.editionMode=!0,s());function r(){t.get("/api/conferences/plans").then(y=>{e.plans=y.data,e.plan=e.plans.filter(b=>b.id==e.options.plan.planID)[0]})}r();let a=new Date;a.setDate(1),a.setMonth(a.getMonth()+1);let c=new Date(a);c.setTime(a.getTime()+179*864e5),e.options={billing:{},startDate:a,endDate:c,plan:{planID:"free_conference"},options:{link:!0,image:!0,pdf:!0,notebook:!0,update:!0,page:!0}},e.plan=null,e.watch("options.plan.planID",()=>{e.plan=e.plans.filter(y=>y.id==e.options.plan.planID)[0]});function f(){e.conference.name.setValidity("required",!0),e.conference.conferenceID.setValidity("pattern",!0),e.conference.conferenceID.setValidity("required",!0),e.conference.conferenceID.setValidity("used",!0),e.conference.startDate.setValidity("required",!0),e.conference.startDate.setValidity("invalid",!0),e.conference.endDate.setValidity("required",!0),e.conference.endDate.setValidity("invalid",!0),e.conference.setValidity("error",!0)}function g(y){switch(y){case"conf_name_missing":e.conference.name.setValidity("required",!1);break;case"conf_id_missing":e.conference.conferenceID.setValidity("required",!1);break;case"conf_id_format":e.conference.conferenceID.setValidity("pattern",!1);break;case"conf_id_used":e.conference.conferenceID.setValidity("used",!1);break;case"conf_start_date_missing":e.conference.startDate.setValidity("required",!1);break;case"conf_end_date_missing":e.conference.endDate.setValidity("required",!1);break;case"conf_start_date_invalid":e.conference.startDate.setValidity("invalid",!1);break;case"conf_end_date_invalid":e.conference.endDate.setValidity("invalid",!1);break;default:e.conference.setValidity("error",!1);break}}e.submit=function(){if(e.saving)return;e.saving=!0,e.error="";let y=JSON.parse(JSON.stringify(e.options)),b=Fe({title:`Creating ${y.name}...`,date:new Date,body:`The conference ${y.conferenceID} is in creation.`});e.editionMode&&(b.title=`Updating ${y.name}...`,b.body=`The conference '${y.conferenceID}' is updating.`),e.addToast(b),f(),t.post("/api/conferences/"+(e.editionMode?y.conferenceID:""),y).then(()=>{e.editionMode?(b.title=`${y.name} updated`,b.body=`The conference '${y.conferenceID}' is updated.`):(b.title=`${y.name} created`,b.body=`The conference '${y.conferenceID}' is created.`),o.url("/conference/"+y.conferenceID)},h=>{g(h.data?.error),e.error="Unable to save the conference. Please correct any highlighted fields and try again.",e.removeToast(b)}).finally(()=>{e.saving=!1})}},vl=function(e,t,o,i){as(e,t,()=>s(),{confirmedMessage:"Payment status checked. Your conference is ready for submissions once payment is confirmed."}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conference=null,e.search="",e.filters={status:{ready:!0,expired:!1,removed:!1}},e.orderBy="-anonymizeDate",e.repoFiler=r=>{if(e.filters.status[r.status]==!1)return!1;let a=e.search.trim().toLowerCase();return!!(!a||(r.source?.fullName||"").toLowerCase().includes(a)||(r.repoId||"").toLowerCase().includes(a))};function s(){t.get("/api/conferences/"+i.conferenceId).then(r=>{e.conference=r.data})}s()},gl=function(e,t){e.notificationEmail="",e.emailSaved=!1,e.saveNotificationEmail=async()=>{e.busy=!0,e.emailSaved=!1,e.connectionError="";try{let o=await t.post("/github/connections/email",{email:e.notificationEmail},{headers:{"X-CSRF-Token":e.connections.csrf}});e.notificationEmail=o.data.notificationEmail,e.user&&(e.user.notificationEmail=o.data.notificationEmail),e.emailSaved=!0}catch(o){e.connectionError=o.data?.error||"Unable to save email address."}finally{e.busy=!1}},e.connections=null,e.connectionError="",e.busy=!1,e.loadConnections=()=>t.get("/github/connections").then(o=>{e.connections=o.data,e.notificationEmail=o.data.notificationEmail||""}).catch(o=>{e.connectionError=o.data?.error||"Unable to load connections."}),e.changeConnection=async(o,i,s)=>{e.busy=!0,e.connectionError="";try{let r=await t.post("/github/connections/migrate",{type:o.type,id:o.id,connection:i,preview:s},{headers:{"X-CSRF-Token":e.connections.csrf}});s?o.eligible=r.data.eligible:await e.loadConnections()}catch(r){e.connectionError=r.data?.error||"Unable to change connection."}finally{e.busy=!1}},e.disconnectOAuth=async()=>{e.busy=!0;try{await t.post("/github/connections/disconnect-oauth",{},{headers:{"X-CSRF-Token":e.connections.csrf}}),await e.loadConnections()}catch(o){e.connectionError=o.data?.error||"Unable to disconnect OAuth."}finally{e.busy=!1}},e.loadConnections()},yl=function(e,t){e.accountRecovery=!1,t.get("/github/account-recovery").then(o=>{e.accountRecovery=o.data.required}).catch(()=>{})};var bl=function(e,t,o){let i=ut(),s=Zt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.repositories=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.totalSize=0,e.selected={},e.allSelected=!1;let r=_=>{if(_.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){_.preventDefault();let m=document.querySelector('.admin-filter-toolbar input[type="search"]');m&&m.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=_=>{_==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[_]="",e.query.page=1},e.chips=[];let a=()=>{let _=[];e.query.owner&&_.push({key:"owner",label:"Owner",value:e.query.owner}),e.query.conference&&_.push({key:"conference",label:"Conference",value:e.query.conference}),e.chips=_};e.showStatusMessage=_=>{let m=_.statusMessage||"(no message)";window.prompt(`Status message for ${_.repoId} (${_.status}):`,m)},e.fetchGithubInfo=_=>{let m=window.open("","_blank");m&&m.document.write("
Loading GitHub info for "+_.repoId+"...
"),t.get("/api/admin/repos/"+_.repoId+"/github").then(C=>{m&&(m.document.open(),m.document.write('
'+JSON.stringify(C.data,null,2).replace(/[<>]/g,N=>N==="<"?"<":">")+"
"),m.document.close())},C=>{let N=C&&C.data?JSON.stringify(C.data,null,2):String(C);m&&(m.document.body.innerHTML='
'+N+"
")})},e.statusCountFor=_=>{let m=(e.statusCounts||[]).find(C=>C._id===_);return m?m.count:0},e.statusStorageFor=_=>{let m=(e.statusCounts||[]).find(C=>C._id===_);return m?m.storage:0},e.isErrorsOnly=()=>e.query&&e.query.error&&!e.query.ready&&!e.query.preparing&&!e.query.expired&&!e.query.removed,e.toggleErrorsOnly=()=>{e.isErrorsOnly()?Object.assign(e.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(e.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),e.query.page=1},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=_=>{e.query.sort===_?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=_,e.query.direction="desc"),e.query.page=1},e.sortIcon=_=>e.query.sort===_?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.repos.filterPrefs",f={page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""});let y=o.search();y.owner&&(e.query.owner=y.owner),y.conference&&(e.query.conference=y.conference),y.search&&(e.query.search=y.search);let b="admin.repos.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let _=window.prompt("Preset name:");if(!_)return;let m=Object.assign({},e.query);delete m.page,e.presets=(e.presets||[]).filter(C=>C.name!==_),e.presets.push({name:_,query:m}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=_=>{Object.assign(e.query,_.query,{page:1})},e.deletePreset=_=>{e.presets=(e.presets||[]).filter(m=>m.name!==_.name),localStorage.setItem(b,JSON.stringify(e.presets))},e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.repositories.forEach(_=>{e.selected[_.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(_=>e.selected[_.repoId]),e.bulkRefresh=()=>{let _=e.selectedRepos();_.length&&confirm(`Force refresh ${_.length} repositories?`)&&_.forEach(m=>e.updateRepository(m))},e.bulkRemoveCache=()=>{let _=e.selectedRepos();_.length&&confirm(`Purge cache for ${_.length} repositories?`)&&_.forEach(m=>e.removeCache(m))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let _=new URLSearchParams(Object.entries(e.query).filter(([,m])=>m!==""&&m!==!1&&m!=null));_.set("format","csv"),_.set("limit","10000"),window.open("/api/admin/repos?"+_.toString(),"_blank")},e.removeCache=_=>{confirm("Remove cached files for "+_.repoId+"?")&&t.delete("/api/admin/repos/"+_.repoId).then(()=>h(),m=>console.error(m))},e.removeRepository=_=>{confirm("Remove repository "+_.repoId+"?")&&t.delete("/api/repo/"+_.repoId+"/").then(()=>h(),m=>console.error(m))},e.updateRepository=_=>{let m=Fe({title:`Refreshing ${_.repoId}...`,date:new Date,body:`The repository ${_.repoId} is going to be refreshed.`});e.toasts.push(m),t.post(`/api/repo/${_.repoId}/refresh`).then(C=>{C.data.status=="ready"?m.title=`${_.repoId} is refreshed.`:m.title=`Refreshing of ${_.repoId}.`},C=>{m.title=`Error during the refresh of ${_.repoId}.`,m.body=C.body})},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/repos",{params:e.query}).then(_=>{e.total=_.data.total,e.totalPage=Math.ceil(_.data.total/e.query.limit),e.repositories=_.data.results,e.statusCounts=_.data.statusCounts||[],e.totalSize=_.data.totalSize||0,e.allSelected=!1},_=>{e.fetchError=_&&_.data&&_.data.error||"Failed to load repositories",console.error(_)})}h();let E=null;e.watch("query",()=>{i.timeout.cancel(E),E=i.timeout(h,500);let{page:_,search:m,...C}=e.query;saveFilterPrefs(c,C),a()},!0),a()},wl=function(e,t,o){let i=ut(),s=Zt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.users=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.selected={},e.allSelected=!1;let r=h=>{if(h.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){h.preventDefault();let E=document.querySelector('.admin-filter-toolbar input[type="search"]');E&&E.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=h=>{h==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[h]="",e.query.page=1},e.chips=[];let a=()=>{let h=[];e.query.role&&h.push({key:"role",label:"Role",value:e.query.role}),e.chips=h};e.statusCountFor=h=>{let E=(e.statusCounts||[]).find(_=>_._id===h);return E?E.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.query.page=1},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.users.filterPrefs",f={page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""}),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.users.forEach(h=>{e.selected[h.username]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedUsers=()=>e.users.filter(h=>e.selected[h.username]),e.banUser=h=>{confirm(`Ban user ${h.username}?`)&&t.post(`/api/admin/users/${h.username}/ban`).then(y,E=>console.error(E))},e.activateUser=h=>{t.post(`/api/admin/users/${h.username}/activate`).then(y,E=>console.error(E))},e.bulkBan=()=>{let h=e.selectedUsers();h.length&&confirm(`Ban ${h.length} users?`)&&h.forEach(E=>e.banUser(E))},e.exportCsv=()=>{let h=new URLSearchParams(Object.entries(e.query).filter(([,E])=>E!==""&&E!==!1&&E!=null));h.set("format","csv"),h.set("limit","10000"),window.open("/api/admin/users?"+h.toString(),"_blank")},e.fetchError=null;function y(){e.fetchError=null,t.get("/api/admin/users",{params:e.query}).then(h=>{e.total=h.data.total,e.totalPage=Math.ceil(h.data.total/e.query.limit),e.users=h.data.results,e.statusCounts=h.data.statusCounts||[],e.allSelected=!1},h=>{e.fetchError=h&&h.data&&h.data.error||"Failed to load users",console.error(h)})}y();let b=null;e.watch("query",()=>{i.timeout.cancel(b),b=i.timeout(y,500);let{page:h,search:E,..._}=e.query;saveFilterPrefs(c,_),a()},!0),a()},kl=function(e,t,o,i){let s=ut();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.userInfo,e.repositories=[],e.search="",e.selected={},e.allSelected=!1;let r="admin.user.filterPrefs",a={filters:{status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},sort:"anonymizeDate",direction:"desc"},c=loadFilterPrefs(r)||{};e.filters={status:Object.assign({},a.filters.status,c.filters&&c.filters.status||{})},e.query={sort:c.sort||a.sort,direction:c.direction||a.direction},e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort,e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"",e.watch("query",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.watch("filters",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.statusCountFor=h=>(e.repositories||[]).filter(E=>E.status===h).length,e.repoFiler=h=>e.filters.status[h.status]==!1?!1:!!(e.search.trim().length==0||h.source.fullName.indexOf(e.search)>-1||h.repoId.indexOf(e.search)>-1||h.statusMessage&&h.statusMessage.indexOf(e.search)>-1||h.conference&&h.conference.indexOf(e.search)>-1),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,(e.filteredRepositories||e.repositories).forEach(h=>{e.selected[h.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(h=>e.selected[h.repoId]),e.bulkRefresh=()=>{let h=e.selectedRepos();h.length&&confirm(`Force refresh ${h.length} repositories?`)&&h.forEach(E=>e.updateRepository(E))},e.bulkRemoveCache=()=>{let h=e.selectedRepos();h.length&&confirm(`Purge cache for ${h.length} repositories?`)&&h.forEach(E=>e.removeCache(E))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let h=e.filteredRepositories||e.repositories,_=["repoId","status","statusMessage","pageView","anonymizeDate","source.fullName","conference","size.storage"].join(","),m=h.map(O=>[O.repoId,O.status,O.statusMessage||"",O.pageView||0,O.anonymizeDate||"",O.source&&O.source.fullName||"",O.conference||"",O.size&&O.size.storage||0].map(q=>{let L=String(q??"");return/[",\n\r]/.test(L)?'"'+L.replace(/"/g,'""')+'"':L}).join(",")),C=new Blob([_+` +`).map(h=>h.trim()).filter(h=>h.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",b).then(()=>{a.accept(y),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",f&&i.cancel(f),f=i(()=>{e.message=null},2500)},h=>{e.saving=!1;let E=h&&h.data&&h.data.error,_="Unable to save your defaults. Please try again.";Promise.all([o("ERRORS."+E),o("ERRORS.unknown_error")]).then(([m,C])=>{e.error=E&&m!==C?m:_},()=>{e.error=_})})},e.deleteAccount=()=>{e.deletingAccount||!e.confirmDeleteAccount||e.deleteUsername!==e.user?.username||(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},dl=function(e,t,o){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(i=>{o.url("/dashboard")},i=>{e.error=i.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},ul=function(e,t,o,i,s){e.user&&!e.user.status&&o.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&o.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(c){e.feature=c},e.featureHref=function(c){return c.needsUser&&!e.user?"/signin":c.href},e.featureTarget=function(c){return c.needsUser&&!e.user?"_self":c.target||void 0},e.featureKeydown=function(c,f){let g={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[c.key];if(g===void 0)return;c.preventDefault();let y=e.features.length,b=g==="first"?0:g==="last"?y-1:(f+g+y)%y;e.feature=e.features[b].key,s(()=>{let h=i.document.getElementById("feature-tab-"+e.feature);h&&h.focus()})},e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function r(){t.get("/api/stat/").then(c=>{e.stat=c.data,e.cards[0].total=c.data.nbRepositories,e.cards[1].total=c.data.nbUsers,e.cards[2].total=c.data.nbPageViews,e.cards[3].total=c.data.nbPullRequests})}r();function a(c){let f={series:c,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!c||c.length<2)return f;let g=new Array(c.length-1);for(let m=1;m=2){let m=g[y-2];m&&(f.pctChange=(f.deltaToday-m)/m*100)}return f.pctAbs=Math.round(Math.abs(f.pctChange)),f.isUp=f.pctChange>=0,f}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(c=>{let f=c.data||[];e.history={repositories:a(f.map(g=>g.nbRepositories||0)),users:a(f.map(g=>g.nbUsers||0)),pageViews:a(f.map(g=>g.nbPageViews||0)),pullRequests:a(f.map(g=>g.nbPullRequests||0))}})},cl=function(e,t,o,i,s,r){let a=ut();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,Ke(()=>document.querySelector(".dashboard-quota > summary")?.focus())},Zt()(document,"click",R=>{e.quotaExpanded&&!R.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=R=>R.status==="error"||R._broken||f(R.status)==="progress"&&R._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=R=>{e.projectView=R,R==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=R=>"project-details-"+encodeURIComponent(R._type+":"+(R._id||R._source||"unknown")),e.showProjectDetails=async R=>{e.selectedProject=R,e.projectName=R.projectName||"",e.nameError="",e.nameMessage="",await Ke();let j=document.getElementById(e.projectDetailsId(R));j?.focus(),j?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=R=>{e.selectedProject=null,Ke(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(R._type+":"+R._id)}"]`)?.focus())},e.saveProjectName=async R=>{if(e.nameSaving||!R._id)return;let j=e.projectName.trim();if(j.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let ie=await t.post("/api/user/project-name",{type:R._type,id:R._id,name:j});R.projectName=ie.data.name,R._label=R.projectName||R._fallbackLabel,e.selectedProject===R&&(e.nameMessage=j?"Project name saved.":"Default project name restored."),A||(e.dashboardCursor=null,await U(),e.selectedProject===R&&(e.selectedProject=e.items.find(ve=>ve._type===R._type&&ve._id===R._id)||null))}catch{e.selectedProject===R&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async R=>{if(!R._viewUrl||e.copyingId)return;let j=new URL(R._viewUrl,s.location.origin).href;e.copyingId=R._type+":"+R._id;try{await il(j),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:j})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let c=["queue","download","downloaded","preparing","anonymizing"];function f(R){return R==="ready"||R==="error"?R:R==="expired"||R==="expiring"?"expired":R==="removed"||R==="removing"?"removed":(c.indexOf(R)>-1,"progress")}let g=7200*1e3,y="dashboard.filterPrefs",b={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,expired:!0,removed:!1}},orderBy:"-anonymizeDate"},h=loadFilterPrefs(y)||{};e.typeFilter=h.typeFilter||b.typeFilter,e.filters={status:Object.assign({},b.filters.status,h.filters&&h.filters.status||{})},e.orderBy=h.orderBy||b.orderBy;let E={_name:{label:"Anonymous ID",defaultDesc:!1},_label:{label:"Project",defaultDesc:!1},anonymizeDate:{label:"Anonymize date",defaultDesc:!0},status:{label:"Status",defaultDesc:!1},lastView:{label:"Last view",defaultDesc:!0},pageView:{label:"Views",defaultDesc:!0},"options.expirationDate":{label:"Expiration",defaultDesc:!1}};e.sortFields=E,e.sortField=()=>e.orderBy.replace(/^-/,""),e.sortDesc=()=>e.orderBy.charAt(0)==="-",e.sortLabel=()=>{let R=E[e.sortField()];return R?R.label:"Custom"},e.isSortedBy=R=>e.sortField()===R,e.setSort=(R,j)=>{typeof j!="boolean"&&(j=e.isSortedBy(R)?!e.sortDesc():!!(E[R]&&E[R].defaultDesc)),e.orderBy=(j?"-":"")+R},e.toggleSortDirection=()=>{e.setSort(e.sortField(),!e.sortDesc())},e.watchGroup(["typeFilter","orderBy"],()=>{saveFilterPrefs(y,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(y,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})},!0),r.load().then(R=>{e.quota=R},console.error);function _(R,j,ie,ve,z,J){R.pageView||(R.pageView=0),R.lastView||(R.lastView=""),R.options=R.options||{},R.options.terms=(R.options.terms||[]).filter(te=>te),R._id=j||"",R._source=ve,R._broken=!j,R._name=j||ve||"(unnamed)",R._fallbackLabel=R._type==="gist"?"Gist "+(j||ve||"without an ID"):ve||ie||R._name,R._label=R.projectName||R._fallbackLabel,R._editUrl=j?z:null,R._viewUrl=j?J:null,R._broken&&(R.status="error",R.statusMessage="incomplete_record"),R._statusKey=f(R.status);let Q=R.anonymizeDate||R.lastView;return R._stale=R._statusKey==="progress"&&!!Q&&Date.now()-new Date(Q).getTime()>g,R.status==="expired"||R.status==="expiring"?R._expiry={kind:"expired",date:R.options.expirationDate}:R.status!=="ready"?R._expiry={kind:"none"}:R.options.expirationMode==="never"||!R.options.expirationDate?R._expiry={kind:"never"}:R._expiry={kind:"date",date:R.options.expirationDate},R}function m(R){return t.get(R).then(j=>j.data||[],j=>(console.error(j),[]))}function C(){return e.loading=!0,i.all([m("/api/user/anonymized_repositories"),m("/api/user/anonymized_pull_requests"),m("/api/user/anonymized_gists")]).then(R=>{let j=R[0],ie=R[1],ve=R[2],z=[];j.forEach(J=>{J._type="repo";let Q=J.source||{};z.push(_(J,J.repoId,J.repoId,Q.fullName,"/anonymize/"+J.repoId,"/r/"+J.repoId+"/"))}),ie.forEach(J=>{J._type="pr";let Q=J.source||{};z.push(_(J,J.pullRequestId,J.pullRequestId,Q.repositoryFullName?Q.repositoryFullName+"#"+Q.pullRequestId:void 0,"/pull-request-anonymize/"+J.pullRequestId,"/pr/"+J.pullRequestId+"/"))}),ve.forEach(J=>{J._type="gist";let Q=J.source||{};z.push(_(J,J.gistId,J.gistId,Q.gistId,"/gist-anonymize/"+J.gistId,"/gist/"+J.gistId+"/"))}),e.items=z,e.loading=!1})}let N=0,A=!1;e.dashboardCursor=null,e.dashboardError="";function M(R){let j=R.source||{};return R._type==="repo"?_(R,R.repoId,R.repoId,j.fullName,"/anonymize/"+R.repoId,"/r/"+R.repoId+"/"):R._type==="pr"?_(R,R.pullRequestId,R.pullRequestId,j.repositoryFullName?j.repositoryFullName+"#"+j.pullRequestId:void 0,"/pull-request-anonymize/"+R.pullRequestId,"/pr/"+R.pullRequestId+"/"):_(R,R.gistId,R.gistId,j.gistId,"/gist-anonymize/"+R.gistId,"/gist/"+R.gistId+"/")}function U(R=!1){if(A)return C();let j=++N;return e.loading=!R,e.loadingMore=R,e.dashboardError="",t.get("/api/user/dashboard",{params:{q:e.search,type:e.typeFilter,sort:e.orderBy,statuses:Object.keys(e.filters.status).filter(ie=>e.filters.status[ie]!==!1).join(",")||"none",attention:String(e.projectView==="attention"),cursor:R?e.dashboardCursor:void 0}}).then(ie=>{if(j===N){if(!Array.isArray(ie.data?.items))return A=!0,C();e.items=(R?e.items:[]).concat(ie.data.items.map(M)),e.dashboardCursor=ie.data.cursor,e.dashboardTotals=ie.data}},ie=>{if(j===N){if(ie.status===404)return A=!0,C();e.dashboardError="Projects could not be loaded. Please try again."}}).finally(()=>{j===N&&(e.loading=!1,e.loadingMore=!1)})}e.loadMoreProjects=()=>U(!0);let q;e.watchGroup(["search","typeFilter","orderBy","projectView"],()=>{A||(q&&a.timeout.cancel(q),q=a.timeout(()=>U(),150))},!1),e.watch("filters",()=>{A||U()},!0,!1),e.on("dispose",()=>{N++}),U(),e.openItem=(R,j)=>{if(!R._viewUrl)return;let ie=j&&j.target;ie&&ie.closest&&ie.closest("a, button, .dropdown, input")||(s.location.href=R._viewUrl)},e.hiddenStatusCount=()=>Object.keys(e.filters.status).filter(R=>e.filters.status[R]===!1).length,e.hasHiddenStatus=()=>e.hiddenStatusCount()>0,e.hasActiveFilters=()=>e.projectView!=="all"||e.typeFilter!=="all"||e.search.trim().length>0||Object.keys(e.filters.status).some(R=>e.filters.status[R]===!1),e.showClearFilters=()=>e.search.trim().length>0||e.typeFilter!=="all"||e.hiddenStatusCount()>1,e.clearFilters=()=>{e.projectView="all",e.typeFilter="all",e.search="",Object.keys(e.filters.status).forEach(R=>{e.filters.status[R]=!0})};function B(R,j,ie,ve){t.get("/api/repo/"+R).then(async z=>{let J=ve!==void 0&&ve!==z.data.status;for(let Q of e.items)if(Q._type==="repo"&&Q.repoId==R){J=J||Q.status!==z.data.status;let te=e.needsAttention(Q);Q.status=z.data.status,Q.statusMessage=z.data.statusMessage,Q._statusKey=f(Q.status),Q._statusKey!=="progress"&&(Q._stale=!1);let X=e.needsAttention(Q);e.dashboardTotals&&te!==X&&(e.dashboardTotals.attention=Math.max(0,e.dashboardTotals.attention+(X?1:-1)));break}if(J&&!A){e.dashboardCursor=null;let Q=e.selectedProject;await U(),Q&&e.selectedProject===Q&&(e.selectedProject=e.items.find(te=>te._type===Q._type&&te._id===Q._id)||null)}if(z.data.status=="ready"||z.data.status=="error"||z.data.status=="removed"||z.data.status=="expired"){j(z.data);return}a.timeout(()=>B(R,j,ie,z.data.status),2500)},ie)}let oe=R=>R==="repo"?"repository":R==="gist"?"gist":"pull request",ee=R=>R==="repo"?"/api/repo":R==="gist"?"/api/gist":"/api/pr";e.removeItem=R=>{let j=oe(R._type);if(confirm(`Are you sure that you want to remove the ${j} ${R._id}?`)){let ie=Fe({title:`Removing ${R._id}...`,date:new Date,body:`The ${j} ${R._id} is going to be removed.`});e.addToast(ie);let ve=`${ee(R._type)}/${R._id}`;t.delete(ve).then(()=>{R._type==="repo"?B(R._id,()=>{ie.title=`${R._id} is removed.`,ie.body=`The ${j} ${R._id} is removed.`},void 0,R.status):(ie.title=`${R._id} is removed.`,ie.body=`The ${j} ${R._id} is removed.`,U())},z=>{ie.title=`Error during the removal of ${R._id}.`,ie.body=z.body,U()})}},e.refreshItem=R=>{let j=oe(R._type),ie=Fe({title:`Refreshing ${R._id}...`,date:new Date,body:`The ${j} ${R._id} is going to be refreshed.`});e.addToast(ie);let ve=J=>{ie.title=`Error during the refresh of ${R._id}.`,ie.body=J.data?.error||J.body||"The refresh could not be completed. Please try again.",U()},z=`${ee(R._type)}/${R._id}/refresh`;t.post(z).then(()=>{R._type==="repo"?B(R._id,J=>{if(J.status!=="ready"){ve({body:J.statusMessage||`The repository is ${J.status}.`});return}ie.title=`${R._id} is refreshed.`,ie.body=`The ${j} ${R._id} is refreshed.`},ve,R.status):(ie.title=`${R._id} is refreshed.`,ie.body=`The ${j} ${R._id} is refreshed.`,U())},ve)},e.extendItem=R=>{let j=oe(R._type),ie=Fe({title:`Extending ${R._id}...`,date:new Date,body:`The expiration of ${j} ${R._id} is going to be extended by 6 months.`});e.addToast(ie);let ve=`${ee(R._type)}/${R._id}/extend`;t.post(ve).then(()=>{R._type==="repo"?B(R._id,()=>{ie.title=`${R._id} is extended.`,ie.body=`The expiration of ${j} ${R._id} is extended by 6 months.`},void 0,R.status):(ie.title=`${R._id} is extended.`,ie.body=`The expiration of ${j} ${R._id} is extended by 6 months.`,U())},z=>{ie.title=`Error during the extension of ${R._id}.`,ie.body=z.data&&z.data.error||z.body,U()})},e.itemFilter=R=>{if(e.projectView==="attention"&&!e.needsAttention(R)||e.typeFilter!=="all"&&R._type!==e.typeFilter||e.filters.status[R._statusKey]===!1)return!1;let j=e.search.trim().toLowerCase();return!!(j.length==0||R._label&&String(R._label).toLowerCase().indexOf(j)>-1||R._source&&String(R._source).toLowerCase().indexOf(j)>-1||R._id&&String(R._id).toLowerCase().indexOf(j)>-1||R.conference&&String(R.conference).toLowerCase().indexOf(j)>-1)}};var pl=function(e,t,o){let i=ut();e.repoId=o.repoId,e.reviewUrl=window.location.origin+"/r/"+encodeURIComponent(o.repoId)+"/",e.repo=null,e.progress=0,e.rateLimitResetAt=0,e.rateLimitCountdown="",e.shareUrl=(window.location?.origin||"")+"/r/"+encodeURIComponent(e.repoId)+"/",e.copied=!1;let s=null;e.copyShareUrl=async()=>{try{await il(e.shareUrl),e.copied=!0,s&&i.timeout.cancel(s),s=i.timeout(()=>{e.copied=!1},2e3)}catch{e.addToast?.({title:"Copy this anonymous link",body:e.shareUrl})}};var r=null;let a=null,c=!1;function f(y){e.rateLimitResetAt=y,r&&i.interval.cancel(r);function b(){var h=Math.max(0,Math.ceil((y-Date.now())/1e3));if(h<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,i.interval.cancel(r),r=null;else{var E=Math.floor(h/60),_=h%60;e.rateLimitCountdown=E>0?E+"m "+_+"s":_+"s"}}b(),r=i.interval(b,1e3)}e.on("dispose",function(){c=!0,r&&i.interval.cancel(r),a&&i.timeout.cancel(a)});function g(y){if(!y)return y;var b=y.match(/^rate_limited:(\d+)$/);return b?(f(parseInt(b[1],10)),null):(e.rateLimitResetAt=0,y)}e.getStatus=()=>{c||t.get("/api/repo/"+e.repoId,{repoId:e.repoId,repoUrl:e.repoUrl}).then(y=>{if(!c){e.repo=y.data,y.data.rateLimitResetAt?f(y.data.rateLimitResetAt):e.repo.statusMessage=g(e.repo.statusMessage),e.repo.status=="ready"?e.progress=100:e.repo.status=="queue"?e.progress=10:e.repo.status=="downloaded"?e.progress=50:e.repo.status=="download"||e.repo.status=="preparing"?e.progress=25:e.repo.status=="anonymizing"&&(e.progress=75);var b=!["ready","removed","expired"].includes(e.repo.status);e.repo.status=="error"&&!e.rateLimitResetAt&&(b=!1),b&&(a=i.timeout(e.getStatus,2e3))}},y=>{e.error=y.data.error})},e.getStatus()},ds=function(e,t,o,i,s,r,a){e.sourceUrl="",e.workspaceOpen=!1,e.sourceUrlError="",e.previewStatus="idle",e.sourceLoading=!1,e.mobilePane="settings";let c=window.matchMedia?.("(max-width: 767px)");e.mobileWorkspace=!!c?.matches,c?.addEventListener&&Zt()(c,"change",w=>{e.mobileWorkspace=w.matches}),e.selectMobilePane=w=>{e.mobilePane=w};let f=0,g=!1,y=new Set,b=(w,T=!1)=>!g&&w.generation===f&&w.url===e.sourceUrl.trim()&&w.connection===e.githubConnection&&(!T||w.branch===e.source.branch),h=()=>{let w={generation:f,url:e.sourceUrl.trim(),connection:e.githubConnection,branch:e.source.branch};return y.add(w),e.sourceLoading=!0,w},E=w=>{y.delete(w),g||(e.sourceLoading=[...y].some(T=>b(T)))};e.on("dispose",()=>{g=!0,f++});let _=null,m=w=>w.gistId&&!w.repo?"gist:"+w.gistId.toLowerCase():(w.owner+"/"+w.repo).toLowerCase()+(w.pullRequestId?"/pull/"+w.pullRequestId:""),C=fi(e,["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"],"anonymize:"+(s.path?.()||"")),N=null,A=null,M=null;e.hostingReview=!1,e.previewExpanded=!1,e.taskValidationError="",e.editRepository=()=>{e.mobilePane="settings",e.previewExpanded=!1,Ke(()=>document.querySelector(".anonymize-fields .is-invalid")?.focus())},e.submitRepository=w=>{if(e.taskValidationError="",!(e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingPending)){if(V()||e.anonymize?.invalid||e.sourceUrlError){e.taskValidationError="Check the highlighted fields before continuing.",e.editRepository();return}return e.hostingNeedsPayment()?e.checkoutRepository():e.anonymizeRepo(w)}},e.hostingPayment=!1,e.hostingAlternatives=!1,e.hostingPrice=w=>w.amount==null?"Price shown at checkout":new Intl.NumberFormat(void 0,{style:"currency",currency:w.currency,minimumFractionDigits:0,maximumFractionDigits:2}).format(w.amount/100)+(w.interval==="year"?" billed annually":" billed monthly"),e.hostingPlan="author_monthly",e.hostingSaving=!1,e.selectedHostingPlan=()=>e.authorPlans().find(w=>w.id===e.hostingPlan)||e.authorPlans()[0];let U=()=>t.get("/api/user/quota").then(w=>{e.hostingQuota=w.data});as(e,t,async()=>{await U(),e.hostingQuotaBlocked=!1},{confirmedMessage:"Hosting status refreshed. Your draft is ready to continue."}),U().catch(()=>{}),e.authorPlans=()=>(e.billing?.plans||[]).filter(w=>["author_monthly","author_annual"].includes(w.id)),e.hasAuthorHosting=()=>["author_monthly","author_annual"].includes(e.billing?.allowance?.plan),e.hostingNeedsPayment=()=>!e.billing?.enabled||e.detectedType!=="repo"||e.hasAuthorHosting()||e.isUpdate&&e.role!=="owner"?!1:!!(e.options?.expirationMode==="never"&&!e._existingNever||!e.conference&&e.hostingQuotaBlocked),e.checkoutRepository=async(w=!1)=>{if(!(e.hostingSaving||e.billingBusy||!e.billing?.csrf||e.sourceLoading)){e.hostingSaving=!0,e.billingError="";try{let T=C.checkpoint(),O=JSON.stringify(T);(!A||O!==M)&&(A=(await t.post("/api/billing/draft",{path:s.path(),values:T},{headers:{"x-csrf-token":e.billing.csrf}})).data.id,M=O);let I=e.authorPlans().find(F=>F.id===e.hostingPlan)||e.authorPlans()[0];if(!w&&!I)throw new Error("No author plan available");await e.checkout(w?"author_pass":I.id,w?e.repoId:"",{draftId:A})}catch{e.billingError="Your draft could not be saved for checkout. Your form is unchanged. Please try again."}finally{e.hostingSaving=!1}}},e.useDatedHosting=()=>{e.options.expirationMode="remove"},e.discardDraft=async()=>{C.discard(),e.workspaceOpen=!!e.sourceUrl,e.error=null,e.sourceUrl?await e.urlSelected(!0):(f++,e.sourceLoading=!1,e.detectedType=null,e.details=null,e.sourceUrlError="",Se.cancel(),H.cancel(),ue.cancel(),e.previewStatus="idle")},e.githubConnection=void 0,e.githubConnections=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1;let q=()=>{let w={};for(let T of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])w[T]=e[T];sessionStorage.setItem("github-access-draft",JSON.stringify({path:s.path(),savedAt:Date.now(),draft:w}))};e.connectGistApp=()=>{q(),window.location.href="/github/app/login?returnTo="+encodeURIComponent(s.path())},e.connectGistOAuth=()=>{q(),window.location.href="/github/login?returnTo="+encodeURIComponent(s.path())},e.grantGitHubAccess=()=>{q();let w=s.path(),T=J(e.sourceUrl)||"",O=e.githubConnections?.appConnected?"/github/app/install":"/github/app/login";window.location.href=O+"?returnTo="+encodeURIComponent(w)+"&repository="+encodeURIComponent(T)+"&install=1"},e.chooseGitHubConnection=async w=>{e.githubConnection=w,e.readme="",e.sourceUrl&&await te()},e.detectedType=null,e.repoId="",e.pullRequestId="",e.gistId="",e.terms="",e.defaultTerms="",e.branches=[],e.source={branch:"",commit:""},e.options={expirationMode:"remove",expirationDate:new Date,update:!1,image:!0,pdf:!0,notebook:!0,link:!0,body:!0,title:!0,origin:!1,diff:!0,content:!0,comments:!0,username:!0,date:!0};function B(){let w=new Date;return w.setMonth(w.getMonth()+6),w}e.options.expirationDate=B();function oe(w){let T=w.getFullYear(),O=String(w.getMonth()+1).padStart(2,"0"),I=String(w.getDate()).padStart(2,"0");return`${T}-${O}-${I}`}e.minExpirationDate=oe(new Date);let ee=new Date;ee.setFullYear(ee.getFullYear()+1),e.maxExpirationDate=oe(ee),e.anonymize_readme="",e.readme="",e.html_readme="",e.isUpdate=!1,e.previousConfigurations=[],e.previousConfigurationId="";let R,j=w=>String(w||"").replace(/\/$/,"").replace(/\.git$/i,"").toLowerCase();async function ie(){if(e.isUpdate||i.repoId||i.pullRequestId||i.gistId)return;let w={generation:f,url:e.sourceUrl.trim(),connection:e.githubConnection};try{R||(R=t.get("/api/user/anonymized_repositories").then(I=>I.data));let T=await R;if(!b(w))return;let O=j(J(w.url));e.previousConfigurations=T.filter(I=>I.repoId&&I.options&&j(I.source?.fullName)===O).sort((I,F)=>(Date.parse(F.anonymizeDate)||0)-(Date.parse(I.anonymizeDate)||0)),e.previousConfigurationId=e.previousConfigurations[0]?.repoId||""}catch{R=void 0}}e.existingConfigurationUrl=()=>{let w=e.previousConfigurations.find(T=>T.repoId===e.previousConfigurationId);return w?"/anonymize/"+encodeURIComponent(w.repoId):null};function ve(w){t.get("/api/user/default").then(T=>{let O=T.data;O.terms&&(e.defaultTerms=O.terms.join(` +`)),e.options=Object.assign({},e.options,O.options),e.options.expirationDate=O.options&&O.options.expirationDate?new Date(O.options.expirationDate):B(),!i.repoId&&!i.pullRequestId&&!i.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),w&&w()})}function z(w,T,O){e.anonymize&&e.anonymize[w]&&e.anonymize[w].setValidity(T,O)}function J(w){try{let T=parseGithubUrl(w);if(T&&T.owner&&T.repo)return T.owner+"/"+T.repo}catch{}return null}e.accessRepairAllowed=!1,e.repairingGitHubAccess=!1,e.accessRepairMessage="",e.repairGitHubAccess=async()=>{if(!e.accessRepairAllowed||e.repairingGitHubAccess||!e.githubConnections?.appEnabled||!i.repoId||e.role!=="owner"||e.githubConnection!=="github-app"||J(e.sourceUrl)!==e._originalFullName)return;e.repairingGitHubAccess=!0,e.accessRepairMessage="";let w=h();try{let T=await t.get("/github/connections");if(e.githubConnections=T.data,!T.data.appEnabled)return;let O=await t.post("/github/connections/migrate",{type:"repository",id:i.repoId,connection:"github-app"},{headers:{"X-CSRF-Token":T.data.csrf}});if(!b(w))return;e.error=null,O.data.fullName&&(e._originalFullName=O.data.fullName,e.source.fullName=O.data.fullName,e.sourceUrl="https://github.com/"+O.data.fullName),e.accessRepairMessage="GitHub access repaired. Your anonymous URL and published commit are unchanged.",await e.urlSelected(!0)}catch{b(w)&&(e.accessRepairMessage="Unable to repair GitHub access. Check the App's repository permissions in Manage access, then retry. Your published snapshot has not been replaced.")}finally{e.repairingGitHubAccess=!1,E(w)}},e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await re()}catch{}}};function Q(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:J(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function te(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function X(){let w=new URLSearchParams(window.location.search).get("billingDraft");if(w){C.restore();try{let O=(await t.get("/api/billing/draft/"+encodeURIComponent(w))).data;if(O.path!==s.path())throw new Error("Wrong task");N=O.values.conference||null;for(let I of["sourceUrl","terms","repoId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(O.values,I)&&(e[I]=O.values[I]);return e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),A=O.id,M=JSON.stringify(C.checkpoint()),e.draftRestored=!0,e.hostingReview=!0,e.sourceUrl&&await te(),s.replace?.(s.path()),!0}catch{e.billingError="The checkout draft could not be restored. Retry by reloading this page; any local draft is still available."}}let T;try{T=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!T||T.path!==s.path()||Date.now()-T.savedAt>=30*6e4)return C.restore()?(e.sourceUrl&&await te(),!0):!1;C.restore();for(let O of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(T.draft,O)&&(e[O]=T.draft[O]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await te(),sessionStorage.removeItem("github-access-draft"),!0}ve(()=>{!i.repoId&&!i.pullRequestId&&!i.gistId&&a(X,0),i.repoId&&i.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=i.repoId,t.get("/api/repo/"+e.repoId).then(async w=>{e.accessRepairAllowed=!["removed","archived","preparing","queue","download","removing","expiring"].includes(w.data.status),e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.fullName,e._originalFullName=w.data.source.fullName,e.terms=w.data.options.terms.filter(T=>T).join(` +`),e.source=w.data.source,e.role=w.data.role||"owner",e._existingNever=w.data.options.expirationMode==="never",e.coauthors=w.data.coauthors||[],e._originalBranch=w.data.source.branch,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,e.repositoryID=w.data.source.repositoryID,e._originalRepositoryID=w.data.source.repositoryID,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),_=m(parseGithubUrl(e.sourceUrl)),!await X()&&(await Promise.all([re(),Ee()]),_e())},()=>{s.url("/404")})),i.pullRequestId&&i.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=i.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async w=>{if(e.githubConnection=w.data.connection||"oauth",e.sourceUrl="https://github.com/"+w.data.source.repositoryFullName+"/pull/"+w.data.source.pullRequestId,e.terms=w.data.options.terms.filter(T=>T).join(` +`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),_=m(parseGithubUrl(e.sourceUrl)),!await X())try{await ze()}catch{}},()=>{s.url("/404")})),i.gistId&&i.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=i.gistId,t.get("/api/gist/"+e.gistId).then(async w=>{e.sourceUrl="https://gist.github.com/"+w.data.source.gistId,e.terms=w.data.options.terms.filter(T=>T).join(` +`),e.source=w.data.source,e.options=Object.assign({},e.options,w.data.options),e.conference=w.data.conference,e._originalConference=w.data.conference,w.data.options.expirationDate&&(e.options.expirationDate=new Date(w.data.options.expirationDate)),_=m(parseGithubUrl(e.sourceUrl)),!await X()&&await se()},()=>{s.url("/404")}))}),t.get("/github/connections").then(w=>{e.githubConnections=w.data,!i.repoId&&!i.pullRequestId&&!i.gistId&&e.githubConnection===void 0&&w.data.appEnabled&&w.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&te())}).catch(()=>{}),e.urlSelected=async(w=!1)=>{let T=++f;e.previousConfigurations=[],e.previousConfigurationId="";let O;try{O=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,Se.cancel(),H.cancel(),ue.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",z("sourceUrl","github",!1);return}let I=m(O),F=w||_===I;_=I,e.sourceUrlError="",z("sourceUrl","github",!0);let L=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,L&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!F&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],F||(e.source={type:"GitHubStream",branch:"",commit:""}),Se.cancel(),H.cancel(),ue.cancel(),Ue.clear(),Y.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=F;try{O.gistId&&!O.repo?(e.detectedType="gist",e.source={gistId:O.gistId},await se()):O.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:O.owner+"/"+O.repo,pullRequestId:O.pullRequestId},await ze()):(e.detectedType="repo",ie(),await Promise.all([re(),Ee()]),_e())}catch{}finally{T===f&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let w=e.branches.filter(O=>O.name==e.source.branch)[0];if(!w)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=w.commit),e.readme=w.readme,await Ee(),_e()}),e.getBranches=async w=>{let T=parseGithubUrl(e.sourceUrl),O=h();try{let I=await t.get(`/api/repo/${T.owner}/${T.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&J(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0||e.reconnectingSource?"1":"0",repositoryID:Q()}});if(!b(O))return;e.branches=I.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let F=e.branches.filter(L=>L.name==e.source.branch);F.length>0&&(!(!e.reconnectingSource&&!w&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=F[0].commit),e.readme=F[0].readme,await Ee(w))}catch(I){if(!b(O))return;e.branches=[],e.sourceUnreachable=I&&(I.status===404||I.data&&I.data.error==="repo_not_found");let F=I&&I.data&&I.data.error||(I&&I.status===404?"repo_not_found":"unknown_error");r("ERRORS."+F).then(L=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:L}),e.error=L},console.error),typeof z=="function"&&z("sourceUrl","missing",!1)}finally{E(O)}};async function re(){let w=parseGithubUrl(e.sourceUrl),T=h();try{S();let O=await t.get(`/api/repo/${w.owner}/${w.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&J(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,repositoryID:Q(),force:"1"}});if(!b(T))return;e.details=O.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(O){if(!b(T))return;throw O.data&&(r("ERRORS."+O.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),G(O.data.error)),z("sourceUrl","missing",!1),O}finally{E(T)}}async function Ee(w){if(e.readme&&!w)return e.readme;let T=parseGithubUrl(e.sourceUrl),O=h();try{let I=await t.get(`/api/repo/${T.owner}/${T.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&J(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:w===!0?"1":"0",branch:e.source.branch,repositoryID:Q()}});b(O,!0)&&(e.readme=I.data)}catch{b(O,!0)&&(e.readme="")}finally{E(O)}}function Te(){let w={terms:e.terms?e.terms.split(` +`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(w.branchName=e.source.branch);try{let T=parseGithubUrl(e.sourceUrl);w.repoName=`${T.owner}/${T.repo}`}catch{}return w}function Ae(w,T,O){let I=null,F=0,L=()=>{if(e.detectedType!==w)return;I&&a.cancel(I);let ae=++F;e.previewStatus="loading",I=a(()=>{I=null;let x=T();if(!x){e.previewStatus="idle";return}t.post("/api/anonymize-preview",x).then(le=>{ae===F&&(O(le.data,x),e.previewStatus="ready")}).catch(()=>{ae===F&&(e.previewStatus="error")})},200)};return L.cancel=()=>{F++,I&&a.cancel(I),I=null},e.on("dispose",L.cancel),L}e.retryPreview=()=>{e.detectedType==="repo"&&Se(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ue()};let Se=Ae("repo",()=>e.readme?{content:e.readme,options:Te()}:null,w=>{if(typeof w?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=w.content;let T="";try{let I=parseGithubUrl(e.sourceUrl),F=e.source.branch||e.details&&e.details.defaultBranch||"main";T=`https://github.com/${I.owner}/${I.repo}/raw/${F}/`}catch{}let O=renderMD(e.anonymize_readme,T);e.html_readme=O,a(Prism.highlightAll,150)});function _e(){!e.anonymize||!e.anonymize.terms||(e.termsRegexWarning=!!e.terms&&!!e.terms.match(/[-[\]{}()*+?.,\\^$|#]/g),Se())}async function ze(){let w=parseGithubUrl(e.sourceUrl),T=h();try{S();let O=await t.get(`/api/pr/${w.owner}/${w.repo}/${w.pullRequestId}`,{params:{connection:e.githubConnection}});if(!b(T))return;e.details=O.data,e.pullRequestId||(e.pullRequestId=w.repo+"-PR"+w.pullRequestId+"-"+generateRandomId(4))}catch(O){if(!b(T))return;throw O.data&&(r("ERRORS."+O.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),G(O.data.error)),z("sourceUrl","missing",!1),O}finally{E(T)}}let Ue=Fe(new Map);function Ie(){let w=new Set,T=e.details&&e.details.pullRequest;if(!T)return w;typeof T.title=="string"&&w.add(T.title),typeof T.body=="string"&&w.add(T.body),typeof T.diff=="string"&&w.add(T.diff);let O=T.comments||[];for(let I of O)typeof I.author=="string"&&w.add(I.author),typeof I.body=="string"&&w.add(I.body);return w}let H=Ae("pr",()=>{let w=Ie(),T=Array.from(w);return T.length===0?null:{contents:T,options:Te()}},(w,T)=>{if(!Array.isArray(w?.contents)||w.contents.length!==T.contents.length||w.contents.some(F=>typeof F!="string"))throw Error("Invalid preview response");let O=T.contents,I=new Map;for(let F=0;FUe.set(L,F))});e.anonymizePrContent=function(w){return w&&(Ue.has(w)?Ue.get(w):"")};async function se(){let w=parseGithubUrl(e.sourceUrl),T=h();try{S(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let O=await t.get(`/api/gist/source/${w.gistId}`);if(!b(T))return;e.details=O.data,e.gistId||(e.gistId="gist-"+w.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(O){if(!b(T))return;if(O.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,z("sourceUrl","missing",!1);return}if(O.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,z("sourceUrl","missing",!1);return}throw O.data&&(r("ERRORS."+O.data.error).then(I=>{e.addToast({title:"Error",date:new Date,body:I}),e.error=I},console.error),G(O.data.error)),z("sourceUrl","missing",!1),O}finally{E(T)}}let Y=Fe(new Map);function Z(){let w=new Set,T=e.details&&e.details.gist;if(!T)return w;typeof T.description=="string"&&w.add(T.description),typeof T.ownerLogin=="string"&&w.add(T.ownerLogin);let O=T.files||[];for(let F of O)typeof F.filename=="string"&&w.add(F.filename),typeof F.content=="string"&&w.add(F.content);let I=T.comments||[];for(let F of I)typeof F.author=="string"&&w.add(F.author),typeof F.body=="string"&&w.add(F.body);return w}let ue=Ae("gist",()=>{let w=Z(),T=Array.from(w);return T.length===0?null:{contents:T,options:Te()}},(w,T)=>{if(!Array.isArray(w?.contents)||w.contents.length!==T.contents.length||w.contents.some(F=>typeof F!="string"))throw Error("Invalid preview response");let O=T.contents,I=new Map;for(let F=0;FY.set(L,F)),be()});e.anonymizeGistContent=function(w){return w&&(Y.has(w)?Y.get(w):"")},e.previewGistFiles=[];function be(){let w=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=w.map(T=>({filename:e.anonymizeGistContent(T.filename),content:e.anonymizeGistContent(T.content),language:T.language}))}e.watch("details.gist.files",be,!0),e.watch("terms",be);function k(){let w=e.conference;if(e.conference_data=null,!w)return;let T=w===N||e.isUpdate&&w===e._originalConference;w!==N&&(N=null),t.get("/api/conferences/"+w).then(O=>{e.conference===w&&(e.conference_data=O.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!T&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conference_data.options.image,e.options.pdf=e.conference_data.options.pdf,e.options.notebook=e.conference_data.options.notebook,e.options.link=e.conference_data.options.link))},()=>{e.conference===w&&(e.conference_data=null)})}function S(){z("repoId","used",!0),z("repoId","format",!0),z("pullRequestId","used",!0),z("pullRequestId","format",!0),z("gistId","used",!0),z("gistId","format",!0),z("sourceUrl","used",!0),z("sourceUrl","missing",!0),z("sourceUrl","access",!0),z("sourceUrl","github",!0),z("commit","exists",!0),z("conference","activated",!0),z("terms","format",!0),e.termsRegexWarning=!1}function V(){if(e.detectedType==="repo"&&e.options.expirationMode==="never")return!1;let w=e.anonymize&&e.anonymize.expirationDate;return!e.options.expirationDate||w&&w.invalid?(w&&w.setDirty&&w.setDirty(),e.error="Please choose a valid expiration date.",!0):!1}function G(w){let T=e.detectedType==="pr"?"pullRequestId":e.detectedType==="gist"?"gistId":"repoId";switch(w){case"repoId_already_used":z(T,"used",!1);break;case"invalid_repoId":z(T,"format",!1);break;case"options_not_provided":z(T,"format",!1);break;case"repo_already_anonymized":z("sourceUrl","used",!1);break;case"invalid_terms_format":z("terms","format",!1);break;case"repo_not_found":z("sourceUrl","missing",!1);break;case"repo_not_accessible":z("sourceUrl","access",!1);break;case"commit_not_found":z("commit","exists",!1);break;case"conf_not_activated":z("conference","activated",!1);break}}e.coauthors=e.coauthors||[],e.coauthorResults=[],e.coauthorError="",e.searchCoauthors=()=>{let w=(e.coauthorSearch||"").trim();if(e.coauthorError="",w.length<2){e.coauthorResults=[];return}t.get("/api/user/search/github-users",{params:{q:w}}).then(T=>{let O=new Set((e.coauthors||[]).map(I=>(I.username||"").toLowerCase()));e.coauthorResults=(T.data||[]).filter(I=>!O.has((I.username||"").toLowerCase()))},()=>{e.coauthorResults=[]})},e.addCoauthor=(w,T)=>{T&&T.preventDefault(),!(!w||!w.username)&&t.post("/api/repo/"+e.repoId+"/coauthors",{username:w.username}).then(O=>{e.coauthors=O.data||[],e.coauthorResults=[],e.coauthorSearch="",e.coauthorError=""},O=>{let I=O&&O.data&&O.data.error||"unknown_error";e.coauthorError=I})},e.removeCoauthor=w=>{!w||!w.username||confirm("Remove co-author "+w.username+"?")&&t.delete("/api/repo/"+e.repoId+"/coauthors/"+encodeURIComponent(w.username)).then(T=>{e.coauthors=T.data||[]},T=>{let O=T&&T.data&&T.data.error||"unknown_error";e.coauthorError=O})},e.anonymizeRepo=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(e.reconnectingSource&&!e.reconnectRepositoryId)return;if(V()){e.editRepository();return}if(e.anonymize?.invalid||e.sourceUrlError){e.editRepository(),e.error="Please correct the highlighted fields before saving.";return}if(e.hostingNeedsPayment()&&e.options.expirationMode==="never"){e.hostingReview=!0,Ke(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}));return}let T=w.currentTarget||w.target.closest?.("button")||w.target;T.disabled=!0;let O=parseGithubUrl(e.sourceUrl),I={repoId:e.repoId,terms:e.terms.trim().split(` +`).filter(L=>L),connection:e.githubConnection,fullName:`${O.owner}/${O.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(I.options.pageSource=e.details.pageSource),S();let F=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(F,I,{headers:{"Content-Type":"application/json"}}).then(()=>{C.clear(),window.location.href="/status/"+e.repoId},L=>{L.data&&(r("ERRORS."+L.data.error).then(ae=>{e.error=ae},console.error),G(L.data.error),["quota_exceeded","subscription_required_for_never_expiration"].includes(L.data.error)&&(L.data.error==="subscription_required_for_never_expiration"&&(e._existingNever=!1),e.hostingQuotaBlocked=!0,e.hostingReview=!0,Ke(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}))))}).finally(()=>{T.disabled=!1})},e.anonymizeGist=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(V())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let T=w.currentTarget||w.target.closest?.("button")||w.target;T.disabled=!0;let O=parseGithubUrl(e.sourceUrl),I={gistId:e.gistId,terms:e.terms.trim().split(` +`).filter(L=>L),source:{gistId:O.gistId},options:e.options,conference:e.conference};S();let F=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(F,I,{headers:{"Content-Type":"application/json"}}).then(()=>{C.clear(),window.location.href="/gist/"+e.gistId},L=>{L.data&&(r("ERRORS."+L.data.error).then(ae=>{e.error=ae},console.error),G(L.data.error))}).finally(()=>{T.disabled=!1})},e.anonymizePullRequest=w=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(V())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let T=w.currentTarget||w.target.closest?.("button")||w.target;T.disabled=!0;let O=parseGithubUrl(e.sourceUrl),I={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(` +`).filter(L=>L),source:{repositoryFullName:`${O.owner}/${O.repo}`,pullRequestId:O.pullRequestId},options:e.options,conference:e.conference};S();let F=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(F,I,{headers:{"Content-Type":"application/json"}}).then(()=>{C.clear(),window.location.href="/pr/"+e.pullRequestId},L=>{L.data&&(r("ERRORS."+L.data.error).then(ae=>{e.error=ae},console.error),G(L.data.error))}).finally(()=>{T.disabled=!1})},e.watch("conference",()=>{k()}),e.watch("terms",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ue()}),e.watch("options.image",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ue()}),e.watch("options.link",()=>{e.detectedType==="repo"&&_e(),e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ue()}),e.watch("details",()=>{e.detectedType==="pr"&&H(),e.detectedType==="gist"&&ue()},!0)},mi=function(e,t,o,i,s,r){let a=ut();window.Prism?.hooks&&!window.Prism.redactionHook&&(window.Prism.hooks.add("complete",z=>ol(z.element)),window.Prism.redactionHook=!0);let c=Zt();e.on("dark-mode",(z,J)=>{e.aceOption&&(J?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let f=0,g=!1;e.on("dispose",()=>{g=!0,f++,y&&y.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,c(document,"keydown",function(z){if((z.metaKey||z.ctrlKey)&&z.key==="k"){z.preventDefault();var J=document.querySelector(".tree-search-input");J&&(J.focus(),J.select())}});var y=null;e.onFileSearchChange=function(){y&&(y.resolve(),y=null);let z=e.fileSearchQuery;if(!z||z.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let J=r.defer();y=J,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(z)}`,{timeout:J.promise}).then(function(Q){if(!(g||y!==J)){y=null,e.fileSearchLoading=!1;var te={};e.files.forEach(function(Z){te[(Z.path||"")+"/"+Z.name]=!0});for(var X=[],re={},Ee=0;Ee0&&e.files.push.apply(e.files,X);for(var Ie=[],H=0;H0&&e.files.push.apply(e.files,Ie),e.fileSearchResults=Q.data}},function(){!g&&y===J&&(y=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let b={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},h=["license","txt"],E=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],_=["wav","mp3","ogg","wma","flac","aac","m4a"],m=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(z,J){if(e.repoId!=i.repoId)return ve();if((i.path||"")!=e.filePath){e.filePath=i.path||"",e.paths=e.filePath.split("/").filter(Q=>Q&&Q.trim().length>0),ie();for(let Q=0;Q0?e.paths.slice(0,Q).join("/"):"";e.files.some(re=>re.path===te)||e.getFiles(te)}}});function C(){if(e.paths[0]!="")return;let z=["readme.md","readme.txt","readme.org","readme.1st","readme"],J={};for(let te of e.files)te.name.toLowerCase().indexOf("readme")>-1&&(J[te.name.toLowerCase()]=te.name);let Q=null;for(let te of z)if(J[te]){Q=te;break}if(!Q&&Object.keys(J).length>0&&(Q=Object.keys(J)[0]),Q){let te=o.url();te[te.length-1]!="/"&&(te+="/"),o.url(te+encodePathForUrl(J[Q]))}}e.fileCounts=null;let N=0,A=new Set,M=!1;e.getFiles=function(z){let J=e.repoId,Q=N;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(z)}&v=${e.options.lastUpdateDate}`).then(function(te){if(g||J!==e.repoId||Q!==N)return[];let X=z||"";return e.files=e.files.filter(re=>re.path!==X),e.files.push(...te.data),U(X,Q),te.data},function(te){if(g||J!==e.repoId||Q!==N)return[];e.type="error",e.content=hi(te),e.files=[]})};function U(z,J){if(M||A.has(z))return;A.add(z);let Q=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts?path=${encodeURIComponent(z)}`).then(function(te){g||Q!==e.repoId||J!==N||(e.fileCounts={...e.fileCounts,...te.data})},function(){g||Q!==e.repoId||J!==N||(M=!0)})}function q(){return e.files.filter(z=>z.name==e.paths[e.paths.length-1]&&z.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var B=null;e.on("dispose",function(){B&&a.interval.cancel(B)});function oe(z){if(g)return;let J=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(Q=>{if(!(g||J!==e.repoId)){if(e.options=Q.data,e.options.url){window.location=e.options.url;return}z&&z(Q.data)}},Q=>{if(!(g||J!==e.repoId)){var te=Q.data||{};if(te.error==="rate_limited"&&te.resetAt){let re=function(){var Ee=Math.max(0,Math.ceil((e.rateLimitResetAt-Date.now())/1e3));if(Ee<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,B&&(a.interval.cancel(B),B=null),oe(z);else{var Te=Math.floor(Ee/60),Ae=Ee%60;e.rateLimitCountdown=Te>0?Te+"m "+Ae+"s":Ae+"s"}};var X=re;e.type="rate_limited",e.rateLimitResetAt=te.resetAt,B&&a.interval.cancel(B),re(),B=a.interval(re,1e3)}else te.error==="repository_not_ready"?(e.type="loading",a.timeout(function(){oe(z)},3e3)):(e.type="error",e.content=hi(Q))}})}e.toggleSource=function(){e.showSource=!e.showSource},e.toggleAllowScripts=function(){e.allowScripts=!e.allowScripts};function ee(z){return b[z]?b[z]:z}function R(z){return z=="pdf"?"pdf":z=="html"||z=="htm"?"html-doc":z=="md"?"md":z=="org"?"org":z=="ipynb"?"IPython":h.indexOf(z)>-1?"text":E.indexOf(z)>-1?"image":m.indexOf(z)>-1?"media":_.indexOf(z)>-1?"audio":"code"}function j(z,J){let Q=f;if(!z){e.type="error",e.content="no_file_selected";return}let te=e.type;e.type="loading",e.content="loading";let X=J&&J.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(z)}?v=`+X,{transformResponse:re=>re}).then(re=>{if(!(g||Q!==f)){if(e.type=te,e.content=re.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(re.data,o.url()+"/../"),e.type="html"),e.type=="org"){let Te=contentAbs2Relative(re.data);var Ee=new Org.Parser().parse(Te).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(Ee.toString()),e.type="html"}e.type=="code"&&re.headers("content-type")=="application/octet-stream"&&(e.type="binary",e.content="binary"),a.timeout(()=>{Prism.highlightAll()},50)}},re=>{g||Q!==f||(e.type="error",e.content=hi(re))})}function ie(){f++,e.content="",e.file=q();let z="0";e.file&&e.file.sha&&(z=e.file.sha),e.url=`/api/repo/${e.repoId}/file/${encodePathForUrl(e.filePath)}?v=${z}`;let J=e.filePath.substring(0,e.filePath.lastIndexOf("/")+1);e.fileBaseUrl=`/api/repo/${e.repoId}/file/${J?encodePathForUrl(J):""}`,e.showSource=!1,e.allowScripts=!1;let Q=e.filePath.toLowerCase(),te=Q.lastIndexOf(".");if(te>-1&&(Q=Q.substring(te+1)),e.aceOption={readOnly:!0,useWrapMode:!0,showGutter:!0,theme:"chrome",useSoftTab:!0,tabSize:2,fontSize:13,keyBinding:"vscode",fullLineSelection:!0,highlightActiveLine:!1,highlightGutterLine:!1,cursor:"hide",showInvisibles:!1,showIndentGuides:!0,showPrintMargin:!1,highlightSelectedWord:!1,enableBehaviours:!0,fadeFoldWidgets:!1,mode:ee(Q),onLoad:function(X){let re=ace.require("ace/range").Range,Ee=null;function Te(Y,Z){Ee!==null&&(X.session.removeMarker(Ee),Ee=null),Y!=null&&(Ee=X.session.addMarker(new re(Y,0,Z,1),"highlighted-line","fullLine"))}function Ae(Y){let Z=window.location.hash.match(/^#L(\d+)(?:-L(\d+))?/);if(!Z){Te(null);return}let ue=parseInt(Z[1])-1,be=Z[2]?parseInt(Z[2])-1:ue;Te(ue,be),Y&&a.timeout(()=>{X.scrollToLine(ue,!0,!0,function(){})},100)}Ae(!0);let Se=null;X.on("guttermousedown",function(Y){let Z=Y.getDocumentPosition().row,ue=Y.domEvent&&Y.domEvent.shiftKey,be=Z,k=Z;ue&&Se!==null?(be=Math.min(Se,Z),k=Math.max(Se,Z)):Se=Z;let S=be===k?`#L${be+1}`:`#L${be+1}-L${k+1}`,V=window.location.pathname+window.location.search+S;window.history.replaceState(null,"",V),Te(be,k),Y.stop()});let _e=c(window,"hashchange",()=>Ae(!1));X.setFontSize(e.aceOption.fontSize),X.setReadOnly(e.aceOption.readOnly),X.setKeyboardHandler(e.aceOption.keyBinding),X.setSelectionStyle(e.aceOption.fullLineSelection?"line":"text"),X.setOption("displayIndentGuides",!0),X.setHighlightActiveLine(e.aceOption.highlightActiveLine),e.aceOption.cursor=="hide"&&(X.renderer.$cursorLayer.element.style.display="none"),X.setHighlightGutterLine(e.aceOption.highlightGutterLine),X.setShowInvisibles(e.aceOption.showInvisibles),X.setDisplayIndentGuides(e.aceOption.showIndentGuides),X.renderer.setShowPrintMargin(e.aceOption.showPrintMargin),X.setHighlightSelectedWord(e.aceOption.highlightSelectedWord),X.session.setUseSoftTabs(e.aceOption.useSoftTab),X.session.setTabSize(e.aceOption.tabSize);let ze=window.matchMedia("(max-width: 991px)"),Ue=()=>X.session.setUseWrapMode(e.aceOption.useWrapMode&&ze.matches);Ue(),ze.addEventListener?.("change",Ue),X.setBehavioursEnabled(e.aceOption.enableBehaviours),X.setFadeFoldWidgets(e.aceOption.fadeFoldWidgets);let Ie=[],H=()=>{Ie.forEach(ue=>X.session.removeMarker(ue)),Ie=[];let Y=nl();if(!Y)return;X.session.getDocument().getAllLines().forEach((ue,be)=>{for(let k of ue.matchAll(Y))Ie.push(X.session.addMarker(new re(be,k.index,be,k.index+k[0].length),"ace_redaction","text"))})};H(),X.session.on("change",()=>a.timeout(H,0));let se=e.on("site-options",H);return()=>{_e(),se(),ze.removeEventListener?.("change",Ue)}}},e.isDarkMode&&(e.aceOption.theme="nord_dark"),e.type=R(Q),e.type=="pdf"){e.content="pdf";return}j(e.filePath,e.file)}e.isSourceAccessError=()=>["repo_not_found","token_expired","github_app_access_required","github_app_reconnect_required","repo_saml_enforcement","repo_access_limited"].includes(e.content),e.retryContent=()=>ve();function ve(){f++,e.files=[],e.content=null,e.fileCounts=null,N++,A=new Set,M=!1,e.fileSearchQuery="",e.onFileSearchChange(),e.repoId=i.repoId,e.type="loading",e.filePath=i.path||"",e.paths=e.filePath.split("/");let z=e.repoId;oe(function(J){var Q=r.resolve();for(let te=0;te0?e.paths.slice(0,te).join("/"):"";Q=Q.then(function(){return e.getFiles(X)}).then(function(){if(e.type==="error")return r.reject("error")})}Q.then(function(){g||z!==e.repoId||(e.files.length==1&&e.files[0].name==""?(e.files=[],e.type="empty"):(C(),ie()))})})}ve()},fl=function(e,t,o,i,s){async function r(f){t.get(`/api/pr/${e.pullRequestId}/options`).then(g=>{if(e.options=g.data,e.options.url){window.location=e.options.url;return}f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}async function a(f){t.get(`/api/pr/${e.pullRequestId}/content`).then(g=>{e.details=g.data,e.tabState={active:g.data.diff?"diff":"comments"},f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}function c(){e.pullRequestId=i.pullRequestId,e.type="loading",r(f=>{a()})}c()},hl=function(e,t,o,i,s){async function r(f){t.get(`/api/gist/${e.gistId}/options`).then(g=>{if(e.options=g.data,e.options.url){window.location=e.options.url;return}f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}async function a(f){t.get(`/api/gist/${e.gistId}/content`).then(g=>{e.details=g.data;let y=g.data&&g.data.files&&g.data.files.length;e.tabState={active:y?"files":"comments"},f&&f(g.data)},g=>{e.type="error",e.content=g.data.error})}function c(){e.gistId=i.gistId,e.type="loading",r(()=>{a()})}c()},ml=function(e,t,o){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.loading=!0,e.error="",e.search="";let i="conferences.filterPrefs",s={filters:{status:{ready:!0,expired:!1,removed:!1}},orderBy:"name"},r=loadFilterPrefs(i)||{};e.filters={status:Object.assign({},s.filters.status,r.filters&&r.filters.status||{})},e.orderBy=r.orderBy||s.orderBy,e.watch("orderBy",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})},!0),e.removeConference=function(a){if(!a.removing&&confirm(`Are you sure that you want to remove the conference ${a.name}? All the repositories linked to this conference will expire.`)){a.removing=!0;let c=Fe({title:`Removing ${a.name}...`,date:new Date,body:`The conference ${a.name} is going to be removed.`});e.addToast(c),t.delete(`/api/conferences/${a.conferenceID}`).then(()=>{c.title=`${a.name} is removed.`,c.body=`The conference ${a.name} is removed.`,e.loadConferences()}).catch(()=>{c.title="Unable to remove conference",c.body="Please try again. The conference has not been removed."}).finally(()=>{a.removing=!1})}},e.loadConferences=()=>(e.loading=!0,e.error="",t.get("/api/conferences/").then(a=>{e.conferences=a.data||[]},a=>{e.error="Unable to load your conferences. Please try again."}).finally(()=>{e.loading=!1})),e.loadConferences(),e.conferenceFilter=a=>{if(e.filters.status[a.status]==!1)return!1;let c=e.search.trim().toLowerCase();return!!(!c||(a.name||"").toLowerCase().includes(c)||(a.conferenceID||"").toLowerCase().includes(c))}},vi=function(e,t,o,i){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.plans=[],e.editionMode=!1,e.saving=!1,e.error="";function s(){return t.get("/api/conferences/"+i.conferenceId).then(y=>{e.options={...e.options,...y.data,billing:y.data.billing||{}},e.options.startDate=new Date(e.options.startDate),e.options.endDate=new Date(e.options.endDate)})}i.conferenceId&&(e.editionMode=!0,s());function r(){t.get("/api/conferences/plans").then(y=>{e.plans=y.data,e.plan=e.plans.filter(b=>b.id==e.options.plan.planID)[0]})}r();let a=new Date;a.setDate(1),a.setMonth(a.getMonth()+1);let c=new Date(a);c.setTime(a.getTime()+179*864e5),e.options={billing:{},startDate:a,endDate:c,plan:{planID:"free_conference"},options:{link:!0,image:!0,pdf:!0,notebook:!0,update:!0,page:!0}},e.plan=null,e.watch("options.plan.planID",()=>{e.plan=e.plans.filter(y=>y.id==e.options.plan.planID)[0]});function f(){e.conference.name.setValidity("required",!0),e.conference.conferenceID.setValidity("pattern",!0),e.conference.conferenceID.setValidity("required",!0),e.conference.conferenceID.setValidity("used",!0),e.conference.startDate.setValidity("required",!0),e.conference.startDate.setValidity("invalid",!0),e.conference.endDate.setValidity("required",!0),e.conference.endDate.setValidity("invalid",!0),e.conference.setValidity("error",!0)}function g(y){switch(y){case"conf_name_missing":e.conference.name.setValidity("required",!1);break;case"conf_id_missing":e.conference.conferenceID.setValidity("required",!1);break;case"conf_id_format":e.conference.conferenceID.setValidity("pattern",!1);break;case"conf_id_used":e.conference.conferenceID.setValidity("used",!1);break;case"conf_start_date_missing":e.conference.startDate.setValidity("required",!1);break;case"conf_end_date_missing":e.conference.endDate.setValidity("required",!1);break;case"conf_start_date_invalid":e.conference.startDate.setValidity("invalid",!1);break;case"conf_end_date_invalid":e.conference.endDate.setValidity("invalid",!1);break;default:e.conference.setValidity("error",!1);break}}e.submit=function(){if(e.saving)return;e.saving=!0,e.error="";let y=JSON.parse(JSON.stringify(e.options)),b=Fe({title:`Creating ${y.name}...`,date:new Date,body:`The conference ${y.conferenceID} is in creation.`});e.editionMode&&(b.title=`Updating ${y.name}...`,b.body=`The conference '${y.conferenceID}' is updating.`),e.addToast(b),f(),t.post("/api/conferences/"+(e.editionMode?y.conferenceID:""),y).then(()=>{e.editionMode?(b.title=`${y.name} updated`,b.body=`The conference '${y.conferenceID}' is updated.`):(b.title=`${y.name} created`,b.body=`The conference '${y.conferenceID}' is created.`),o.url("/conference/"+y.conferenceID)},h=>{g(h.data?.error),e.error="Unable to save the conference. Please correct any highlighted fields and try again.",e.removeToast(b)}).finally(()=>{e.saving=!1})}},vl=function(e,t,o,i){as(e,t,()=>s(),{confirmedMessage:"Payment status checked. Your conference is ready for submissions once payment is confirmed."}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conference=null,e.search="",e.filters={status:{ready:!0,expired:!1,removed:!1}},e.orderBy="-anonymizeDate",e.repoFiler=r=>{if(e.filters.status[r.status]==!1)return!1;let a=e.search.trim().toLowerCase();return!!(!a||(r.source?.fullName||"").toLowerCase().includes(a)||(r.repoId||"").toLowerCase().includes(a))};function s(){t.get("/api/conferences/"+i.conferenceId).then(r=>{e.conference=r.data})}s()},gl=function(e,t){e.notificationEmail="",e.emailSaved=!1,e.saveNotificationEmail=async()=>{e.busy=!0,e.emailSaved=!1,e.connectionError="";try{let o=await t.post("/github/connections/email",{email:e.notificationEmail},{headers:{"X-CSRF-Token":e.connections.csrf}});e.notificationEmail=o.data.notificationEmail,e.user&&(e.user.notificationEmail=o.data.notificationEmail),e.emailSaved=!0}catch(o){e.connectionError=o.data?.error||"Unable to save email address."}finally{e.busy=!1}},e.connections=null,e.connectionError="",e.busy=!1,e.loadConnections=()=>t.get("/github/connections").then(o=>{e.connections=o.data,e.notificationEmail=o.data.notificationEmail||""}).catch(o=>{e.connectionError=o.data?.error||"Unable to load connections."}),e.changeConnection=async(o,i,s)=>{e.busy=!0,e.connectionError="";try{let r=await t.post("/github/connections/migrate",{type:o.type,id:o.id,connection:i,preview:s},{headers:{"X-CSRF-Token":e.connections.csrf}});s?o.eligible=r.data.eligible:await e.loadConnections()}catch(r){e.connectionError=r.data?.error||"Unable to change connection."}finally{e.busy=!1}},e.disconnectOAuth=async()=>{e.busy=!0;try{await t.post("/github/connections/disconnect-oauth",{},{headers:{"X-CSRF-Token":e.connections.csrf}}),await e.loadConnections()}catch(o){e.connectionError=o.data?.error||"Unable to disconnect OAuth."}finally{e.busy=!1}},e.loadConnections()},yl=function(e,t){e.accountRecovery=!1,t.get("/github/account-recovery").then(o=>{e.accountRecovery=o.data.required}).catch(()=>{})};var bl=function(e,t,o){let i=ut(),s=Zt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.repositories=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.totalSize=0,e.selected={},e.allSelected=!1;let r=_=>{if(_.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){_.preventDefault();let m=document.querySelector('.admin-filter-toolbar input[type="search"]');m&&m.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=_=>{_==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[_]="",e.query.page=1},e.chips=[];let a=()=>{let _=[];e.query.owner&&_.push({key:"owner",label:"Owner",value:e.query.owner}),e.query.conference&&_.push({key:"conference",label:"Conference",value:e.query.conference}),e.chips=_};e.showStatusMessage=_=>{let m=_.statusMessage||"(no message)";window.prompt(`Status message for ${_.repoId} (${_.status}):`,m)},e.fetchGithubInfo=_=>{let m=window.open("","_blank");m&&m.document.write("
Loading GitHub info for "+_.repoId+"...
"),t.get("/api/admin/repos/"+_.repoId+"/github").then(C=>{m&&(m.document.open(),m.document.write('
'+JSON.stringify(C.data,null,2).replace(/[<>]/g,N=>N==="<"?"<":">")+"
"),m.document.close())},C=>{let N=C&&C.data?JSON.stringify(C.data,null,2):String(C);m&&(m.document.body.innerHTML='
'+N+"
")})},e.statusCountFor=_=>{let m=(e.statusCounts||[]).find(C=>C._id===_);return m?m.count:0},e.statusStorageFor=_=>{let m=(e.statusCounts||[]).find(C=>C._id===_);return m?m.storage:0},e.isErrorsOnly=()=>e.query&&e.query.error&&!e.query.ready&&!e.query.preparing&&!e.query.expired&&!e.query.removed,e.toggleErrorsOnly=()=>{e.isErrorsOnly()?Object.assign(e.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(e.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),e.query.page=1},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=_=>{e.query.sort===_?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=_,e.query.direction="desc"),e.query.page=1},e.sortIcon=_=>e.query.sort===_?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.repos.filterPrefs",f={page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""});let y=o.search();y.owner&&(e.query.owner=y.owner),y.conference&&(e.query.conference=y.conference),y.search&&(e.query.search=y.search);let b="admin.repos.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let _=window.prompt("Preset name:");if(!_)return;let m=Object.assign({},e.query);delete m.page,e.presets=(e.presets||[]).filter(C=>C.name!==_),e.presets.push({name:_,query:m}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=_=>{Object.assign(e.query,_.query,{page:1})},e.deletePreset=_=>{e.presets=(e.presets||[]).filter(m=>m.name!==_.name),localStorage.setItem(b,JSON.stringify(e.presets))},e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.repositories.forEach(_=>{e.selected[_.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(_=>e.selected[_.repoId]),e.bulkRefresh=()=>{let _=e.selectedRepos();_.length&&confirm(`Force refresh ${_.length} repositories?`)&&_.forEach(m=>e.updateRepository(m))},e.bulkRemoveCache=()=>{let _=e.selectedRepos();_.length&&confirm(`Purge cache for ${_.length} repositories?`)&&_.forEach(m=>e.removeCache(m))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let _=new URLSearchParams(Object.entries(e.query).filter(([,m])=>m!==""&&m!==!1&&m!=null));_.set("format","csv"),_.set("limit","10000"),window.open("/api/admin/repos?"+_.toString(),"_blank")},e.removeCache=_=>{confirm("Remove cached files for "+_.repoId+"?")&&t.delete("/api/admin/repos/"+_.repoId).then(()=>h(),m=>console.error(m))},e.removeRepository=_=>{confirm("Remove repository "+_.repoId+"?")&&t.delete("/api/repo/"+_.repoId+"/").then(()=>h(),m=>console.error(m))},e.updateRepository=_=>{let m=Fe({title:`Refreshing ${_.repoId}...`,date:new Date,body:`The repository ${_.repoId} is going to be refreshed.`});e.toasts.push(m),t.post(`/api/repo/${_.repoId}/refresh`).then(C=>{C.data.status=="ready"?m.title=`${_.repoId} is refreshed.`:m.title=`Refreshing of ${_.repoId}.`},C=>{m.title=`Error during the refresh of ${_.repoId}.`,m.body=C.body})},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/repos",{params:e.query}).then(_=>{e.total=_.data.total,e.totalPage=Math.ceil(_.data.total/e.query.limit),e.repositories=_.data.results,e.statusCounts=_.data.statusCounts||[],e.totalSize=_.data.totalSize||0,e.allSelected=!1},_=>{e.fetchError=_&&_.data&&_.data.error||"Failed to load repositories",console.error(_)})}h();let E=null;e.watch("query",()=>{i.timeout.cancel(E),E=i.timeout(h,500);let{page:_,search:m,...C}=e.query;saveFilterPrefs(c,C),a()},!0),a()},wl=function(e,t,o){let i=ut(),s=Zt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.users=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.selected={},e.allSelected=!1;let r=h=>{if(h.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){h.preventDefault();let E=document.querySelector('.admin-filter-toolbar input[type="search"]');E&&E.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=h=>{h==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[h]="",e.query.page=1},e.chips=[];let a=()=>{let h=[];e.query.role&&h.push({key:"role",label:"Role",value:e.query.role}),e.chips=h};e.statusCountFor=h=>{let E=(e.statusCounts||[]).find(_=>_._id===h);return E?E.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.query.page=1},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.users.filterPrefs",f={page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""}),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.users.forEach(h=>{e.selected[h.username]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedUsers=()=>e.users.filter(h=>e.selected[h.username]),e.banUser=h=>{confirm(`Ban user ${h.username}?`)&&t.post(`/api/admin/users/${h.username}/ban`).then(y,E=>console.error(E))},e.activateUser=h=>{t.post(`/api/admin/users/${h.username}/activate`).then(y,E=>console.error(E))},e.bulkBan=()=>{let h=e.selectedUsers();h.length&&confirm(`Ban ${h.length} users?`)&&h.forEach(E=>e.banUser(E))},e.exportCsv=()=>{let h=new URLSearchParams(Object.entries(e.query).filter(([,E])=>E!==""&&E!==!1&&E!=null));h.set("format","csv"),h.set("limit","10000"),window.open("/api/admin/users?"+h.toString(),"_blank")},e.fetchError=null;function y(){e.fetchError=null,t.get("/api/admin/users",{params:e.query}).then(h=>{e.total=h.data.total,e.totalPage=Math.ceil(h.data.total/e.query.limit),e.users=h.data.results,e.statusCounts=h.data.statusCounts||[],e.allSelected=!1},h=>{e.fetchError=h&&h.data&&h.data.error||"Failed to load users",console.error(h)})}y();let b=null;e.watch("query",()=>{i.timeout.cancel(b),b=i.timeout(y,500);let{page:h,search:E,..._}=e.query;saveFilterPrefs(c,_),a()},!0),a()},kl=function(e,t,o,i){let s=ut();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.userInfo,e.repositories=[],e.search="",e.selected={},e.allSelected=!1;let r="admin.user.filterPrefs",a={filters:{status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},sort:"anonymizeDate",direction:"desc"},c=loadFilterPrefs(r)||{};e.filters={status:Object.assign({},a.filters.status,c.filters&&c.filters.status||{})},e.query={sort:c.sort||a.sort,direction:c.direction||a.direction},e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort,e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"",e.watch("query",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.watch("filters",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.statusCountFor=h=>(e.repositories||[]).filter(E=>E.status===h).length,e.repoFiler=h=>e.filters.status[h.status]==!1?!1:!!(e.search.trim().length==0||h.source.fullName.indexOf(e.search)>-1||h.repoId.indexOf(e.search)>-1||h.statusMessage&&h.statusMessage.indexOf(e.search)>-1||h.conference&&h.conference.indexOf(e.search)>-1),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,(e.filteredRepositories||e.repositories).forEach(h=>{e.selected[h.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(h=>e.selected[h.repoId]),e.bulkRefresh=()=>{let h=e.selectedRepos();h.length&&confirm(`Force refresh ${h.length} repositories?`)&&h.forEach(E=>e.updateRepository(E))},e.bulkRemoveCache=()=>{let h=e.selectedRepos();h.length&&confirm(`Purge cache for ${h.length} repositories?`)&&h.forEach(E=>e.removeCache(E))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let h=e.filteredRepositories||e.repositories,_=["repoId","status","statusMessage","pageView","anonymizeDate","source.fullName","conference","size.storage"].join(","),m=h.map(A=>[A.repoId,A.status,A.statusMessage||"",A.pageView||0,A.anonymizeDate||"",A.source&&A.source.fullName||"",A.conference||"",A.size&&A.size.storage||0].map(M=>{let U=String(M??"");return/[",\n\r]/.test(U)?'"'+U.replace(/"/g,'""')+'"':U}).join(",")),C=new Blob([_+` `+m.join(` -`)],{type:"text/csv"}),N=document.createElement("a");N.href=URL.createObjectURL(C),N.download=i.username+"-repositories.csv",N.click()},e.showStatusMessage=h=>{let E=h.statusMessage||"(no message)";window.prompt(`Status message for ${h.repoId} (${h.status}):`,E)},e.fetchGithubInfo=h=>{let E=window.open("","_blank");E&&E.document.write("
Loading GitHub info for "+h.repoId+"...
"),t.get("/api/admin/repos/"+h.repoId+"/github").then(_=>{E&&(E.document.open(),E.document.write('
'+JSON.stringify(_.data,null,2).replace(/[<>]/g,m=>m==="<"?"<":">")+"
"),E.document.close())},_=>{let m=_&&_.data?JSON.stringify(_.data,null,2):String(_);E&&(E.document.body.innerHTML='
'+m+"
")})};function f(h){t.get("/api/admin/users/"+h+"/repos",{}).then(E=>{e.repositories=E.data},E=>{console.error(E)})}function g(h){t.get("/api/admin/users/"+h,{}).then(E=>{e.userInfo=E.data},E=>{console.error(E)})}g(i.username),f(i.username),e.banUser=()=>{confirm(`Ban user ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/ban`).then(()=>g(i.username),h=>console.error(h))},e.activateUser=()=>{t.post(`/api/admin/users/${i.username}/activate`).then(()=>g(i.username),h=>console.error(h))},e.promoteUser=()=>{confirm(`Promote ${i.username} to admin?`)&&t.post(`/api/admin/users/${i.username}/promote`).then(()=>g(i.username),h=>console.error(h))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/demote`).then(()=>g(i.username),h=>console.error(h))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function y(){t.get("/api/admin/tokens").then(h=>{e.tokens=h.data||[]},h=>{h.status!==401&&h.status!==403&&console.error(h)})}y(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(h=>{e.tokenForm.plaintext=h.data.token,e.tokenForm.name="",y()},h=>console.error(h))},e.revokeToken=h=>{confirm(`Revoke token "${h.name}"?`)&&t.delete("/api/admin/tokens/"+h.id).then(()=>y(),E=>console.error(E))},e.removeCache=h=>{confirm("Remove cached files for "+h.repoId+"?")&&t.delete("/api/admin/repos/"+h.repoId).then(()=>f(i.username),E=>console.error(E))},e.removeRepository=h=>{confirm("Remove repository "+h.repoId+"?")&&t.delete("/api/repo/"+h.repoId+"/").then(()=>f(i.username),E=>console.error(E))},e.updateRepository=h=>{let E=Fe({title:`Refreshing ${h.repoId}...`,date:new Date,body:`The repository ${h.repoId} is going to be refreshed.`});e.toasts.push(E),t.post(`/api/repo/${h.repoId}/refresh`).then(_=>{_.data.status=="ready"?E.title=`${h.repoId} is refreshed.`:E.title=`Refreshing of ${h.repoId}.`},_=>{E.title=`Error during the refresh of ${h.repoId}.`,E.body=_.body})},e.getGitHubRepositories=h=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(E=>{e.userInfo.repositories=E.data})};let b=null;e.watch("query",()=>{s.timeout.cancel(b),b=s.timeout(()=>{f(i.username)},500)},!0)},El=function(e,t,o){let i=ut(),s=Zt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let r=_=>{if(_.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){_.preventDefault();let m=document.querySelector('.admin-filter-toolbar input[type="search"]');m&&m.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=_=>{_==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[_]="",e.query.page=1},e.chips=[];let a=()=>{let _=[];(e.query.dateFrom||e.query.dateTo)&&_.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=_};e.statusCountFor=_=>{let m=(e.statusCounts||[]).find(C=>C._id===_);return m?m.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=_=>{e.query.sort===_?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=_,e.query.direction="desc"),e.query.page=1},e.sortIcon=_=>e.query.sort===_?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""});let y=o.search();y.search&&(e.query.search=y.search);let b="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let _=window.prompt("Preset name:");if(!_)return;let m=Object.assign({},e.query);delete m.page,e.presets=(e.presets||[]).filter(C=>C.name!==_),e.presets.push({name:_,query:m}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=_=>{Object.assign(e.query,_.query,{page:1})},e.deletePreset=_=>{e.presets=(e.presets||[]).filter(m=>m.name!==_.name),localStorage.setItem(b,JSON.stringify(e.presets))},e.removeConference=_=>{confirm("Remove conference "+_.conferenceID+"?")&&t.delete("/api/admin/conferences/"+_.conferenceID).then(()=>h(),m=>console.error(m))},e.exportCsv=()=>{let _=new URLSearchParams(Object.entries(e.query).filter(([,m])=>m!==""&&m!==!1&&m!=null));_.set("format","csv"),_.set("limit","10000"),window.open("/api/admin/conferences?"+_.toString(),"_blank")},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/conferences",{params:e.query}).then(_=>{e.total=_.data.total,e.totalPage=Math.ceil(_.data.total/e.query.limit),e.conferences=_.data.results,e.statusCounts=_.data.statusCounts||[]},_=>{e.fetchError=_&&_.data&&_.data.error||"Failed to load conferences",console.error(_)})}h();let E=null;e.watch("query",()=>{i.timeout.cancel(E),E=i.timeout(h,500);let{page:_,search:m,...C}=e.query;saveFilterPrefs(c,C),a()},!0),a()},Cl=function(e,t,o,i,s){let r=ut();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.queueList=[],e.jobs=[],e.selectedQueue="download",e.selectedStats=null,e.range="1h",e.allStates=["active","waiting","delayed","failed","completed"],e.stateFilter={active:!0,waiting:!0,delayed:!0,failed:!0,completed:!0},e.query={search:"",autoRefresh:!0},e.filteredJobs=()=>(e.jobs||[]).filter(m=>e.stateFilter[m._state]),e.jobProgressPct=m=>m&&m.progress&&typeof m.progress=="object"&&typeof m.progress.percent=="number"?Math.max(0,Math.min(100,Math.round(m.progress.percent))):typeof m.progress=="number"?Math.max(0,Math.min(100,Math.round(m.progress))):null,e.jobDuration=m=>{if(!m.processedOn)return"-";let N=(m.finishedOn||Date.now())-m.processedOn;return N<1e3?N+"ms":(N/1e3).toFixed(1)+"s"},e.metricsPoints=[],e.selectQueue=m=>{e.selectedQueue=m,a(),c()},e.setRange=m=>{e.range=m,c()};function a(){let m={queue:e.selectedQueue,search:e.query.search};t.get("/api/admin/queues",{params:m}).then(C=>{e.queueList=C.data.queues||[],e.jobs=C.data.jobs||[],e.selectedStats=e.queueList.find(N=>N.key===e.selectedQueue)||e.queueList[0]||null},C=>console.error(C))}function c(){t.get("/api/admin/queues/metrics",{params:{queue:e.selectedQueue,range:e.range}}).then(m=>{e.metricsPoints=m.data.points||[],s(h,0)},m=>console.error(m))}a(),c();let f=i(()=>{e.query.autoRefresh&&(a(),c())},15e3);e.on("dispose",()=>i.cancel(f)),e.refreshNow=function(){a(),c()};function g(m){let C=m&&m.data&&(m.data.message||m.data.error)||"Request failed";e.actionError=C,s(()=>{e.actionError=null},5e3),console.error(m)}e.actionError=null,e.removeJob=m=>{t.delete(`/api/admin/queue/${e.selectedQueue}/${m.id}`).then(a,g)},e.retryJob=m=>{t.post(`/api/admin/queue/${e.selectedQueue}/${m.id}`).then(a,g)},e.retryFailed=()=>{confirm(`Retry all failed jobs in ${e.selectedQueue}?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/retry-failed`).then(a,m=>console.error(m))},e.drainSelected=()=>{confirm(`Drain the ${e.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/drain`).then(a,m=>console.error(m))},e.togglePause=()=>{let m=e.selectedStats&&e.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${e.selectedQueue}/${m}`).then(a,C=>console.error(C))},e.emptyQueue=()=>{confirm(`Empty the ${e.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${e.selectedQueue}/empty`).then(a,m=>console.error(m))},e.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(a,m=>console.error(m))};let y=null;e.watch("query.search",()=>{r.timeout.cancel(y),y=r.timeout(a,350)}),e.expanded={},e.toggleJob=m=>{e.expanded[m.id]=!e.expanded[m.id]},e.humanTime=m=>{if(!m)return"";let C=new Date(m);return C.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})+" "+C.toLocaleDateString([],{month:"short",day:"numeric"})},e.delayCountdown=m=>{if(!m)return"";var C=Math.max(0,Math.ceil((m-Date.now())/1e3));if(C<=0)return"resuming soon";var N=Math.floor(C/60),O=C%60;return"in "+(N>0?N+"m "+O+"s":O+"s")};function b(m){if(m<=0)return{ticks:[0],niceMax:1};let C=Math.pow(10,Math.floor(Math.log10(m))),N=C;m/N<2?N=C/2:m/N>5&&(N=C*2);let O=Math.ceil(m/N)*N,q=[];for(let L=0;L<=O;L+=N)q.push(L);return{ticks:q,niceMax:O}}function h(){var m=document.getElementById("q-throughput-chart");if(!m)return;var C=m.getContext("2d"),N=window.devicePixelRatio||1,O=m.parentElement.getBoundingClientRect(),q=44,L=50,U=20,z=O.width-40,ne=180,x=z-q-L,R=ne-U;m.width=z*N,m.height=ne*N,m.style.width=z+"px",m.style.height=ne+"px",C.setTransform(N,0,0,N,0,0);var V=document.body.classList.contains("dark-mode"),Y="#8A857C",X=V?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",G=V?"#A7B2FF":"#3B4AD6",J=V?"rgba(167,178,255,0.12)":"rgba(59,74,214,0.08)",ie=V?"#F08A82":"#B42318",ue=V?"rgba(240,138,130,0.08)":"rgba(180,35,24,0.06)",de=V?"#F5C842":"#B8860B",le=e.metricsPoints||[];if(le.length===0){C.fillStyle=Y,C.font="12px monospace",C.textAlign="center",C.fillText("No metrics data yet",z/2,ne/2),E=null;return}var _e=le.map(function(A){return A.completed}),Ve=le.map(function(A){return A.failed}),$e=le.map(function(A){return A.avgMs}),De=le.length,Ne=x/(De-1||1),Be=Math.max(1,Math.max.apply(null,_e),Math.max.apply(null,Ve)),Me=b(Be),ke=Math.max.apply(null,$e),H=ke>0?b(ke):{ticks:[0],niceMax:1},ee=function(A){return R-A/Me.niceMax*(R-10)},Q=function(A){return R-A/H.niceMax*(R-10)},oe=function(A){return q+A*Ne};C.textAlign="right",C.textBaseline="middle",C.font="10px monospace",Me.ticks.forEach(function(A){var I=ee(A);C.strokeStyle=X,C.lineWidth=1,C.beginPath(),C.moveTo(q,I),C.lineTo(z-L,I),C.stroke(),C.fillStyle=Y,C.fillText(A>=1e3?(A/1e3).toFixed(1)+"k":String(A),q-6,I)}),ke>0&&(C.textAlign="left",H.ticks.forEach(function(A){var I=Q(A);C.fillStyle=de,C.fillText(A>=1e3?(A/1e3).toFixed(1)+"s":A+"ms",z-L+6,I)}));var ve=Date.now(),Ce=Math.min(6,De);C.textAlign="center",C.textBaseline="top";for(var k=0;k0&&(C.beginPath(),$e.forEach(function(A,I){var B=oe(I),F=Q(A);if(I===0)C.moveTo(B,F);else{var se=(oe(I-1)+B)/2;C.bezierCurveTo(se,Q($e[I-1]),se,F,B,F)}}),C.strokeStyle=de,C.lineWidth=1,C.setLineDash([4,3]),C.stroke(),C.setLineDash([])),E={pts:le,maxLen:De,marginLeft:q,step:Ne,totalW:z,toX:oe}}var E=null;function _(){var m=document.getElementById("q-throughput-chart");if(!(!m||m._tipBound)){m._tipBound=!0;var C=document.getElementById("q-chart-tooltip"),N=document.getElementById("q-chart-crosshair");m.addEventListener("mousemove",function(O){if(!(!E||!C||!N)){var q=E,L=m.getBoundingClientRect(),U=O.clientX-L.left,z=Math.round((U-q.marginLeft)/q.step);if(z<0||z>=q.maxLen){C.style.display="none",N.style.display="none";return}var ne=q.pts[z],x=Date.now(),R=Math.round((x-ne.ts)/6e4),V;if(R<=0)V="now";else if(R<60)V=R+"m ago";else if(R<1440){var Y=Math.floor(R/60),X=R%60;V=Y+"h"+(X?" "+X+"m":"")+" ago"}else V=Math.round(R/1440)+"d ago";var G='
'+V+'
● completed: '+ne.completed+'/min
● failed: '+ne.failed+"/min
";if(ne.avgMs>0){var J=ne.avgMs>=1e3?(ne.avgMs/1e3).toFixed(1)+"s":ne.avgMs+"ms";G+='
● avg time: '+J+"
"}C.innerHTML=G;var ie=q.toX(z),ue=C.offsetWidth,de=ie+10;de+ue>q.totalW&&(de=ie-ue-10),C.style.display="block",C.style.left=de+"px",C.style.top="8px",N.style.display="block",N.style.left=ie+"px"}}),m.addEventListener("mouseleave",function(){C&&(C.style.display="none"),N&&(N.style.display="none")})}}e.watch("metricsPoints",function(){s(_,50)})},Sl=function(e,t,o,i){let s=ut();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.entries=[],e.visible=[],e.available=!0,e.cap=1e3,e.total=0,e.pageSize=250,e.expanded={},e.detailTab={},e.copyHint="",e.parsedFilterCount=0,e.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},e.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},e.relTime=N=>{if(!N)return"";let O=new Date(N).getTime();if(isNaN(O))return N;let q=Math.max(0,Date.now()-O),L=Math.floor(q/1e3);if(L<5)return"just now";if(L<60)return`${L}s ago`;let U=Math.floor(L/60);if(U<60)return`${U}m ago`;let z=Math.floor(U/60);if(z<24)return`${z}h ago`;let ne=Math.floor(z/24);return ne<7?`${ne}d ago`:new Date(N).toLocaleDateString()},e.absTime=N=>{if(!N)return"";let O=new Date(N);return isNaN(O.getTime())?N:O.toLocaleString()},e.absTimeShort=N=>{if(!N)return"";let O=new Date(N);return isNaN(O.getTime())?N:O.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})};let r=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function a(N,O){let q=N&&(N.httpStatus||N.status)||null;if(typeof q=="number"){if(q>=500)return"error";if(q===401||q===403||q===404)return"info";if(q>=400)return"warn"}return O==="error"?"error":O==="warn"?"warn":"info"}function c(N){let O=(N.raw||[]).find(z=>z&&typeof z=="object"&&!Array.isArray(z));if(O){O.message&&r.test(O.message)?(N.displayMessage=O.message,N.displayContext=N.message):O.code&&r.test(String(O.code))?(N.displayMessage=String(O.code),N.displayContext=N.message):O.name&&O.name!=="AnonymousError"&&O.name!=="Error"?(N.displayMessage=O.name,N.displayContext=O.message||N.message):N.displayMessage=N.message,N._status=O.httpStatus||O.status||null,N._url=O.url||null,N._method=O.method||null,N._repoId=O.repoId||O.detail||null,N._detail=O.detail&&O.detail!==N._repoId?O.detail:null;let z=typeof O.stack=="string"?O.stack:null;for(var q=[O.cause,O.err].filter(Boolean),L=0;!z&&L{R==null||R===""||q.push([x,R])};L("name",O&&O.name),L("code",N.displayMessage||O&&O.message),N._bucket&&L("kind",N._bucket),L("httpStatus",O&&O.httpStatus),O&&O.status&&!O.httpStatus&&L("status",O.status),L("module",N.module);let U=O&&O.detail;if(typeof U=="string"){let x=U.trim();if(x[0]==="{"||x[0]==="[")try{U=JSON.parse(U)}catch{}}if(L("detail",U),L("repoId",O&&O.repoId),L("filePath",O&&O.filePath),L("upstreamStatus",O&&O.upstreamStatus),L("upstreamBody",O&&O.upstreamBody),L("url",N._url),L("err",O&&O.err),L("cause",O&&!O.err&&O.cause),L("ts",N.ts),!q.length)return JSON.stringify(N,null,2);let z=q.reduce((x,R)=>Math.max(x,R[0].length),0),ne=["{"];return q.forEach(([x,R],V)=>{let X=` ${`"${x}":`.padEnd(z+3," ")} `,G=Vde===0?ue:ie+ue).join(` -`)}else typeof R=="number"||typeof R=="boolean"?J=String(R):J=JSON.stringify(R);ne.push(`${X}${J}${G}`)}),ne.push("}"),ne.join(` -`)}function g(N){let O=[],q="",L=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,U=0,z;for(;z=L.exec(N);)q+=N.slice(U,z.index),U=L.lastIndex,O.push({key:z[1],op:z[2]||"=",val:z[3]});return q+=N.slice(U),{filters:O,free:q.trim().toLowerCase()}}function y(N,O){for(let q of O.filters){let L=(z,ne,x)=>{let R=parseFloat(z),V=parseFloat(ne);return x==="="?String(z)===String(ne):x==="!="?String(z)!==String(ne):x===">="?R>=V:x==="<="?R<=V:x===">"?R>V:x==="<"?RO&&U._bucket!==O?!1:y(U,N)),L=e.query.group;if(L){let U=x=>L==="module"?x.module:x.displayMessage||x.message||"_",z=new Map;for(let x of q){let R=U(x);if(z.has(R)){let V=z.get(R);V.count++,V._related.push(x),new Date(x.ts)>new Date(V.ts)&&(V.ts=x.ts,V._url=x._url,V._status=x._status),new Date(x.ts)new Date(R.ts).getTime()>=ne).length;q=Array.from(z.values())}else q=q.map((U,z)=>(U._key="row:"+z+":"+U.ts,U._related=[U],U._firstSeen=U.ts,U._lastHourCount=0,U.count=1,U));e.query.sort==="count"?q.sort((U,z)=>z.count-U.count||new Date(z.ts)-new Date(U.ts)):q.sort((U,z)=>new Date(z.ts)-new Date(U.ts)),e.visible=q}function h(N){let O=N?e.entries.length:0,q=N?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:O,limit:q}}).then(L=>{let U=(L.data.entries||[]).map(c);e.entries=N?e.entries.concat(U):U,e.available=!!L.data.available,e.cap=L.data.max||e.cap,e.total=L.data.total||e.entries.length,b()},L=>console.error(L))}e.loadMore=()=>h(!0),e.canLoadMore=()=>e.entries.length{let O=N.data||{},q=O.prev24h?Math.round((O.last24h-O.prev24h)/O.prev24h*100):0;e.stats={last24h:O.last24h||0,prev24h:O.prev24h||0,delta:q,severity:O.severity||{error:0,warn:0,info:0},unique:O.unique||{error:0,warn:0,info:0},buckets:O.buckets||[],dropped:O.dropped||0}},N=>console.error(N))}function _(){h(),E()}e.barPx=(N,O)=>{let q=e.stats.buckets||[],L=0;for(let x of q)L=Math.max(L,(x.error||0)+(x.warn||0)+(x.info||0));if(!L)return 0;let U=(N.error||0)+(N.warn||0)+(N.info||0);if(!U)return 0;let z=Math.round(U/L*60),ne=N[O]||0;return Math.round(ne/U*z)},e.bucketTitle=N=>`${new Date(N.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${N.error||0} err \xB7 ${N.warn||0} warn \xB7 ${N.info||0} info`,e.toggle=N=>{e.expanded[N._key]=!e.expanded[N._key]},e.setBucket=N=>{e.query.bucket=N},e.refreshNow=_,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(_,N=>console.error(N))},e.exportCsv=()=>{let N=["ts","level","module","displayMessage","_status","_url","_repoId"],O=[N.join(",")];for(let z of e.visible)O.push(N.map(ne=>{let x=z[ne]==null?"":String(z[ne]);return/[",\n]/.test(x)?`"${x.replace(/"/g,'""')}"`:x}).join(","));let q=new Blob([O.join(` -`)],{type:"text/csv;charset=utf-8"}),L=URL.createObjectURL(q),U=document.createElement("a");U.href=L,U.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(U),U.click(),document.body.removeChild(U),URL.revokeObjectURL(L)};function m(N){e.copyHint=`${N} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=N=>{navigator.clipboard.writeText(N._detailJson).then(()=>m("JSON"))},e.copyCurl=N=>{if(!N._url)return;let q=`curl -X ${N._method||"GET"} '${window.location.origin}${N._url}'`;navigator.clipboard.writeText(q).then(()=>m("curl"))},_();let C=i(()=>{e.query.autoRefresh&&_()},15e3);e.on("dispose",()=>i.cancel(C)),e.watch("query.search",b),e.watch("query.bucket",b),e.watch("query.sort",b),e.watch("query.group",b)},_l=function(e,t,o,i){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null){o.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all";var s=!1;e.loadCache=function(){if(!s){s=!0;var m=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:m}}).then(function(C){m===e.cacheMinutes&&(e.cacheReport=C.data,e.cacheError=C.data.available?null:C.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){s=!1,m!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(m){return e.cacheTraffic==="all"||m.traffic===e.cacheTraffic})},e.cacheRate=function(m,C){var N=e.cacheRows(),O=function(U){return N.filter(function(z){return z.name===U}).reduce(function(z,ne){return z+ne[C]},0)},q=O(m+"_hit"),L=O(m+"_miss");return q+L?(100*q/(q+L)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(m){return m.replaceAll("_"," ")},e.cacheP95=function(m){var C=0,N=e.cacheReport?.latencyBucketsMs||[];if(!m.count)return"No samples";if(!m.ms)return"Not timed";for(var O=0;O<=N.length;O++)if(C+=m["b"+O]||0,C>=Math.ceil(m.count*.95))return O 10 s";return"No samples"},e.performanceError=null,e.formatMs=function(m){return m==null?"":m<1e3?m+" ms":+(m/1e3).toFixed(1)+" s"},e.latencyBound=function(m,C){return m.count?m[C]==null?"> 60 s":"\u2264 "+e.formatMs(m[C]):"No samples"},e.firstByteBound=function(m){return e.latencyBound({count:m.firstByteCount,p95UpperMs:m.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(m){return Math.max(0,Math.round((Date.now()-m.sampledAt)/1e3))},e.peakRss=function(m){return(e.performance.runtimeSeries||[]).filter(function(C){return C.instance===m.instance}).reduce(function(C,N){return Math.max(C,N.rss)},m.memory.rss)},e.performanceWarning=function(m){return e.sampleAge(m)>45||m.droppedBatches||m.droppedMetrics||m.sockets?.closeWait>0||m.eventLoop.p95Ms>100||m.memoryLimitBytes&&m.memory.rss>m.memoryLimitBytes*.8};var r=!1;e.loadPerformance=function(){var m=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==m&&(e.performance=null),!r&&(r=!0,t.get("/api/admin/performance",{params:{minutes:m}}).then(function(C){m===e.performanceMinutes&&(e.performance=C.data,e.performanceError=C.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){m===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){r=!1,m!==e.performanceMinutes&&e.loadPerformance()}))};function a(m){if(m==null)return"\u2014";for(var C=["B","KB","MB","GB","TB"],N=0,O=m;O>=1024&&N0?1:0)+" "+C[N]}e.humanBytes=a;function c(m){if(!m)return"\u2014";var C=Math.floor(m/86400),N=Math.floor(m%86400/3600),O=Math.floor(m%3600/60);return C>0?C+"d "+(N<10?"0":"")+N+"h":N>0?N+"h "+(O<10?"0":"")+O+"m":O+"m"}e.humanDuration=c;function f(m){return m==null?"\u2014":m>=1e6?(m/1e6).toFixed(1)+"M":m>=1e3?(m/1e3).toFixed(1)+"K":String(m)}e.humanNum=f,e.queueTotal=function(m){return m?(m.waiting||0)+(m.active||0)+(m.delayed||0)+(m.failed||0):0},e.statusCount=function(m){if(!e.data||!e.data.repos)return 0;for(var C=e.data.repos.statusBreakdown||[],N=0;Nb[N])&&(b[N]=C[N]),(h[N]==null||C[N]Ci(e,t)},{path:"/connections",template:"partials/connections.htm",title:"GitHub connections \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>gl(e,t.http)},{path:"/signin",template:"partials/signin.htm",title:"Sign in \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>yl(e,t.http)},{path:"/",template:"partials/home.htm",title:"Anonymous GitHub \u2013 Share the code, not the author",preserveExplorer:!1,setup:(e,t)=>ul(e,t.http,t.location,t.window,t.timeout)},{path:"/dashboard",template:"partials/dashboard.htm",title:"Your anonymizations \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>cl(e,t.http,t.location,t.promises,t.window,t.quotaService)},{path:"/pr-dashboard",redirect:"/dashboard"},{path:"/anonymize/:repoId?",template:"partials/anonymize.htm",title:"New anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ds(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/pull-request-anonymize/:pullRequestId?",template:"partials/anonymize.htm",title:"Anonymize a pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ds(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/gist-anonymize/:gistId?",template:"partials/anonymize.htm",title:"Anonymize a gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ds(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/status/:repoId",template:"partials/status.htm",title:"Repository status \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>pl(e,t.http,t.params)},{path:"/conferences",template:"partials/conferences.htm",title:"Your conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ml(e,t.http,t.location)},{path:"/conference/new",template:"partials/newConference.htm",title:"New conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vi(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId/edit",template:"partials/newConference.htm",title:"Edit conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vi(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId",template:"partials/conference.htm",title:"Conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vl(e,t.http,t.location,t.params)},{path:"/faq",template:"partials/faq.htm",title:"FAQ \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>al(e,t.http)},{path:"/profile",template:"partials/profile.htm",title:"Your settings \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ll(e,t.http,t.translate,t.timeout,t.quotaService)},{path:"/claim",template:"partials/claim.htm",title:"Claim an anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>dl(e,t.http,t.location)},{path:"/pr/:pullRequestId/:path(.*)*",template:"partials/pullRequest.htm",title:"Anonymous pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>fl(e,t.http,t.location,t.params,t.html)},{path:"/gist/:gistId/:path(.*)*",template:"partials/gist.htm",title:"Anonymous gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>hl(e,t.http,t.location,t.params,t.html)},{path:"/r/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>mi(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/repository/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>mi(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/admin/",template:"partials/admin/overview.htm",title:"Admin \xB7 Overview \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>_l(e,t.http,t.location,t.interval)},{path:"/admin/repositories",template:"partials/admin/repositories.htm",title:"Admin \xB7 Repositories \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>bl(e,t.http,t.location)},{path:"/admin/users",template:"partials/admin/users.htm",title:"Admin \xB7 Users \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>wl(e,t.http,t.location)},{path:"/admin/users/:username",template:"partials/admin/user.htm",title:"Admin \xB7 User details \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>kl(e,t.http,t.location,t.params)},{path:"/admin/conferences",template:"partials/admin/conferences.htm",title:"Admin \xB7 Conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>El(e,t.http,t.location)},{path:"/admin/queues",template:"partials/admin/queues.htm",title:"Admin \xB7 Queues \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Cl(e,t.http,t.location,t.interval,t.timeout)},{path:"/admin/errors",template:"partials/admin/errors.htm",title:"Admin \xB7 Errors \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Sl(e,t.http,t.location,t.interval)},{path:"/404",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",preserveExplorer:!1,setup:()=>{}},{path:"/:pathMatch(.*)*",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",setup:()=>{}}];var Pp={class:"container py-4",style:{"max-width":"48rem","overflow-wrap":"anywhere"}},Ip={key:0},Vp={key:1,role:"alert"},qp={key:2,role:"status"},Mp={key:0},Up={key:1},$p=["disabled"],Lp=["disabled"],Fp=["disabled"],Bp={key:5,class:"mt-4","aria-labelledby":"review-policy-title"},Hp={id:"review-policy-title"},zp={key:0,role:"alert"},jp=["disabled"],Gp=["disabled"],Wp=["disabled"],Kp={key:6,role:"status"};function Rl(e,t){return l(),d("section",Pp,[t[12]||(t[12]=n("a",{href:"/"},"Anonymous GitHub",-1)),t[13]||(t[13]=n("h1",{class:"mt-3"},"Approve artifact access",-1)),t[14]||(t[14]=n("p",null,"This records your approval as the repository owner or an authorized coauthor.",-1)),e.user?.username?p("v-if",!0):(l(),d("p",Ip,[...t[6]||(t[6]=[v("Sign in first, then reopen the artifact link from your submission. ",-1),n("a",{href:"/signin"},"Sign in",-1)])])),e.error?(l(),d("p",Vp,u(e.error),1)):p("v-if",!0),e.saved?(l(),d("p",qp,[t[7]||(t[7]=v("Consent recorded. ",-1)),e.handoffEnabled?(l(),d("span",Mp,"Continue to review to finish linking.")):(l(),d("span",Up,"Artifact linking is not complete. Return to your submission to check its status."))])):p("v-if",!0),e.saved&&e.handoffEnabled?(l(),d("button",{key:3,class:"btn btn-primary",type:"button",onClick:t[0]||(t[0]=(...o)=>e.continueReview&&e.continueReview(...o)),disabled:e.busy},"Continue to review",8,$p)):p("v-if",!0),e.user?.username&&!e.saved?(l(),d("form",{key:4,onSubmit:t[2]||(t[2]=ae((...o)=>e.loadPreview&&e.loadPreview(...o),["prevent"]))},[t[8]||(t[8]=n("label",{for:"review-repository"},"Anonymous repository ID",-1)),D(n("input",{id:"review-repository",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=o=>e.repositoryId=o),maxlength:"128",autocomplete:"off",disabled:e.busy||e.uncertain,"aria-describedby":"review-repository-help"},null,8,Lp),[[wt,e.repositoryId]]),t[9]||(t[9]=n("p",{id:"review-repository-help"},"Use the ID after /r/ in the anonymous repository URL.",-1)),n("button",{type:"submit",class:"btn btn-primary",disabled:e.busy||e.uncertain},"Preview access and retention",8,Fp)],32)):p("v-if",!0),e.preview&&!e.saved?(l(),d("section",Bp,[n("h2",Hp,u(e.preview.repositoryName),1),n("p",null,"Access: "+u(e.preview.policy.access==="anonymous-link"?"Anyone with the anonymous link":"Restricted review access")+".",1),n("p",null,"Retain until "+u(e.preview.policy.retainUntil)+". Policy version "+u(e.preview.policy.version)+".",1),e.expired?(l(),d("p",zp,"This preview expired. Open a new artifact link from your submission.")):p("v-if",!0),n("div",null,[n("label",null,[D(n("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=o=>e.acceptAccess=o),disabled:e.busy||e.uncertain||e.expired},null,8,jp),[[xs,e.acceptAccess]]),t[10]||(t[10]=v(" I approve the access policy above.",-1))])]),n("div",null,[n("label",null,[D(n("input",{type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=o=>e.acceptRetention=o),disabled:e.busy||e.uncertain||e.expired},null,8,Gp),[[xs,e.acceptRetention]]),t[11]||(t[11]=v(" I approve retention until the date above.",-1))])]),n("button",{class:"btn btn-primary",type:"button",onClick:t[5]||(t[5]=(...o)=>e.confirmConsent&&e.confirmConsent(...o)),disabled:e.busy||e.expired||!e.acceptAccess||!e.acceptRetention},u(e.uncertain?"Retry confirmation":"Confirm consent"),9,Wp)])):p("v-if",!0),e.busy?(l(),d("p",Kp,"Waiting for the server\u2026")):p("v-if",!0)])}var Yp={class:"container paper-page connections-page"},Jp={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Qp={key:1,role:"status"},Xp=["disabled"],Zp={key:3},xp={key:0,class:"connection-resources"},ef=["disabled"],tf=["disabled"],nf={key:0,role:"status"},of={class:"connections-grid"},sf={key:0},rf={class:"connection-title"},af={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},lf={class:"connection-actions"},df={key:0,class:"btn btn-ink",target:"_self",href:"/github/app/install"},uf={key:1,class:"connection-installations"},cf={key:0},pf=["href"],ff={class:"sr-only"},hf=["disabled"],mf={class:"connection-title"},vf={key:0,target:"_self",href:"/github/login",class:"btn btn-outline-ink"},gf={key:1,class:"connection-revoke"},yf={key:0},bf=["disabled"],wf={class:"connection-resources"},kf={class:"connection-title"},Ef={class:"connection-count"},Cf={key:0,class:"connection-empty"},Sf={class:"connection-resource-name"},_f={key:0,class:"connection-resource-actions"},Nf=["disabled","onClick"],Rf=["disabled","onClick"],Df={key:1,class:"connection-help",role:"status"},Tf=["disabled","onClick"];function Dl(e,t){return l(),d("div",Yp,[t[25]||(t[25]=fe('
My work / GitHub connections

GitHub connections

Manage how GitHub shares your code. Your anonymizations and URLs stay the same.

',2)),e.connectionError?(l(),d("p",Jp,u(e.connectionError),1)):p("v-if",!0),!e.connections&&!e.connectionError?(l(),d("p",Qp,"Loading your connections\u2026")):p("v-if",!0),!e.connections&&e.connectionError?(l(),d("button",{key:2,class:"btn btn-outline-ink",disabled:e.busy,onClick:t[0]||(t[0]=o=>e.loadConnections())},"Try again",8,Xp)):p("v-if",!0),e.connections?(l(),d("div",Zp,[e.connections.emailNotificationsEnabled?(l(),d("section",xp,[t[6]||(t[6]=n("h2",null,"Email alerts",-1)),t[7]||(t[7]=n("p",null,"We will email you if your GitHub connection stops working or a repository becomes inaccessible. Your address is never shown on anonymous pages.",-1)),n("form",{onSubmit:t[2]||(t[2]=ae(o=>e.saveNotificationEmail(),["prevent"]))},[t[5]||(t[5]=n("label",{for:"notification-email"},"Email address",-1)),D(n("input",{id:"notification-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.notificationEmail=o),disabled:e.busy},null,8,ef),[[wt,e.notificationEmail]]),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.busy},"Save email address",8,tf),e.emailSaved?(l(),d("p",nf,"Email address saved.")):p("v-if",!0)],32)])):p("v-if",!0),n("div",of,[e.connections.appEnabled?(l(),d("section",sf,[t[13]||(t[13]=n("div",{class:"connection-top"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",{class:"connection-badge"},"Recommended")],-1)),n("div",rf,[t[8]||(t[8]=n("h2",null,"GitHub App",-1)),n("span",{class:P(["connection-status",{"is-connected":e.connections.appConnected&&!e.connections.appError}])},u(e.connections.appError?"Needs attention":e.connections.appConnected?"Connected":"Not connected"),3)]),t[14]||(t[14]=n("p",null,"Read-only access to gists and the repositories you choose.",-1)),e.connections.appError?(l(),d("p",af,u(e.connections.appError)+". Reconnect to restore access.",1)):p("v-if",!0),n("div",lf,[e.connections.appConnected&&!e.connections.appError?(l(),d("a",df,[...t[9]||(t[9]=[v("Manage repository access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),n("a",{class:P(e.connections.appConnected&&!e.connections.appError?"connection-link":"btn btn-ink"),target:"_self",href:"/github/app/login"},u(e.connections.appConnected?"Reconnect account":"Connect GitHub account"),3)]),t[15]||(t[15]=n("p",{class:"connection-help"},"Choose repositories on GitHub. Organization access may need an administrator's approval.",-1)),e.connections.installations?.length?(l(),d("ul",uf,[(l(!0),d(K,null,te(e.connections.installations,o=>(l(),d("li",{key:o.id},[n("div",null,[n("strong",null,u(o.account),1),o.suspended?(l(),d("span",cf," \xB7 Suspended")):p("v-if",!0)]),n("a",{target:"_self",href:"/github/app/install?installationId="+o.id},[t[10]||(t[10]=v("Manage access ",-1)),n("span",ff,"for "+u(o.account),1),t[11]||(t[11]=v(" \u2192",-1))],8,pf)]))),128))])):p("v-if",!0),n("button",{class:"connection-link",disabled:e.busy,onClick:t[3]||(t[3]=o=>e.loadConnections())},[...t[12]||(t[12]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Refresh access",-1)])],8,hf)])):p("v-if",!0),n("section",null,[t[18]||(t[18]=n("div",{class:"connection-top"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),n("span",{class:"connection-badge connection-badge-muted"},"Legacy")],-1)),n("div",mf,[t[16]||(t[16]=n("h2",null,"GitHub OAuth",-1)),n("span",{class:P(["connection-status",{"is-connected":e.connections.oauthConnected}])},u(e.connections.oauthConnected?"Connected":"Not connected"),3)]),t[19]||(t[19]=n("p",null,"For existing OAuth anonymizations.",-1)),t[20]||(t[20]=n("p",{class:"connection-help"},"This connection uses GitHub's broader repository permissions. Existing work keeps using it until you switch below.",-1)),e.connections.oauthEnabled?(l(),d("a",vf,u(e.connections.oauthConnected?"Reconnect OAuth":"Connect legacy OAuth"),1)):p("v-if",!0),e.connections.oauthConnected?(l(),d("div",gf,[e.connections.gistCount?(l(),d("p",yf,u(e.connections.gistCount)+" gist(s) use your GitHub App connection when available.",1)):p("v-if",!0),t[17]||(t[17]=n("p",null,"Switch all dependent repositories before revoking access. Gists can use your GitHub App connection.",-1)),e.connections.appConnected?(l(),d("button",{key:1,class:"connection-link connection-danger",disabled:e.busy||e.connections.resources.some(o=>o.connection==="oauth"),onClick:t[4]||(t[4]=o=>e.disconnectOAuth())},"Revoke OAuth access",8,bf)):p("v-if",!0)])):p("v-if",!0)])]),n("section",wf,[n("div",kf,[t[21]||(t[21]=n("h2",null,"Repository connections",-1)),n("span",Ef,u(e.connections.resources?.length||0)+" resources",1)]),t[23]||(t[23]=n("p",null,"Check access, then switch each resource to the GitHub App. After reinstalling the App, reconnect existing resources here to keep their anonymous URLs and published snapshots.",-1)),e.connections.resources?.length?p("v-if",!0):(l(),d("div",Cf,[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("div",null,[n("h3",null,"No repository connections yet"),n("p",null,"Your repositories and pull requests will appear here once you anonymize them.")],-1),n("a",{class:"connection-link",href:"/anonymize"},"New anonymization \u2192",-1)])])),(l(!0),d(K,null,te(e.connections.resources,o=>(l(),d("div",{class:"connection-resource",key:o.type+o.id},[n("div",Sf,[n("strong",null,u(o.name||o.id),1),n("small",null,u(o.type)+" \xB7 "+u(o.id),1)]),n("span",{class:P(["connection-badge",{"connection-badge-muted":o.connection==="oauth"}])},u(o.connection==="github-app"?"Read-only App":"Legacy OAuth"),3),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&e.connections.appEnabled&&e.connections.appConnected?(l(),d("div",_f,[n("button",{class:"btn btn-outline-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!0)},"Check read-only access",8,Nf),o.eligible?(l(),d("button",{key:0,class:"btn btn-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!1)},u(o.connection==="github-app"?"Reconnect read-only access":"Switch to read-only access"),9,Rf)):p("v-if",!0),o.eligible===!1?(l(),d("span",Df,"Access unavailable. Allow this repository on GitHub, then check again.")):p("v-if",!0)])):p("v-if",!0),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&o.connection==="github-app"&&e.connections.oauthConnected?(l(),d("button",{key:1,class:"connection-link",disabled:e.busy,onClick:i=>e.changeConnection(o,"oauth",!1)},"Use OAuth",8,Tf)):p("v-if",!0)]))),128)),t[24]||(t[24]=n("p",{class:"connection-footnote"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v(" Removing access stops new fetches from GitHub. Published content keeps its current expiration and removal settings.")],-1))])])):p("v-if",!0)])}var Af={class:"container paper-page auth-page"},Of={class:"auth-layout"},Pf={class:"auth-options"},If={key:0},Vf={key:0,class:"btn btn-ink auth-continue",target:"_self",href:"/github/login?recover=1"},qf={key:1},Mf={key:1},Uf={key:2,class:"auth-legacy"},$f={key:3,role:"status"};function Tl(e,t){return l(),d("div",Af,[t[5]||(t[5]=n("a",{class:"auth-back",href:"/"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-left"})]),v(" Anonymous GitHub")],-1)),n("div",Of,[t[4]||(t[4]=fe('
Your research, ready for review

Your code.
Your identity,
protected.
Sign in to GitHub

Sign in to create and manage your anonymizations.

',1)),n("div",Pf,[e.accountRecovery?(l(),d("section",If,[t[0]||(t[0]=n("h2",null,"Verify your existing account",-1)),t[1]||(t[1]=n("p",null,"We found an existing account. Verify it with your previous GitHub connection to keep your anonymizations. Future sign-ins will use the GitHub App.",-1)),e.site_options?.GITHUB_OAUTH_ENABLED?(l(),d("a",Vf,"Verify with previous GitHub connection")):(l(),d("p",qf,"Account verification is currently unavailable. Please try again later."))])):p("v-if",!0),e.site_options?.GITHUB_APP_ENABLED&&!e.accountRecovery?(l(),d("section",Mf,[...t[2]||(t[2]=[fe('
Read-only access

Continue with GitHub

Connect through the GitHub App with read-only repository access.

  • You choose which repositories to share
  • No permission to write to your code
Sign in with GitHub Your existing anonymizations and connections stay with your account.',6)])])):p("v-if",!0),!e.site_options?.GITHUB_APP_ENABLED&&e.site_options?.GITHUB_OAUTH_ENABLED&&!e.accountRecovery?(l(),d("section",Uf,[...t[3]||(t[3]=[n("div",{class:"connection-title"},[n("h2",null,"Continue with GitHub")],-1),n("p",null,"Sign in to access your account. GitHub OAuth includes write access to private repositories.",-1),n("a",{class:"connection-link",target:"_self",href:"/github/login"},[v("Sign in with GitHub "),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-right"})])],-1)])])):p("v-if",!0),e.site_options&&!e.site_options.GITHUB_APP_ENABLED&&!e.site_options.GITHUB_OAUTH_ENABLED?(l(),d("p",$f,"GitHub sign-in is currently unavailable. Please try again later.")):p("v-if",!0)])])])}var Lf={class:"paper-empty"};function Al(e,t){return l(),d("div",Lf,[...t[0]||(t[0]=[fe('
Error \xB7 404

This link
isn\u2019t here.

The anonymous mirror you\u2019re looking for has expired, been removed by its owner, or never existed. If you received this URL from an author, ask them to re-issue it.

',1)])])}var Ff={class:"container paper-page admin-page"},Bf={class:"admin-summary"},Hf={class:"summary-total"},zf=["aria-pressed"],jf={class:"count"},Gf=["aria-pressed"],Wf={class:"count"},Kf=["aria-pressed"],Yf={class:"count"},Jf=["aria-pressed"],Qf={class:"count"},Xf=["aria-pressed"],Zf={class:"count"},xf={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},eh={class:"w-100 admin-filter-toolbar","aria-label":"Conferences","accept-charset":"UTF-8"},th={class:"admin-filter-row"},nh={class:"search-wrap"},oh={type:"search",class:"form-control",placeholder:"Search conferences\u2026",autocomplete:"off"},sh={key:0,class:"admin-search-hint"},ih={class:"admin-filter-inline","aria-label":"Pagination"},rh=["disabled"],ah={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},lh=["disabled"],dh={key:0,class:"admin-filter-row"},uh={class:"admin-active-chips"},ch={class:"key"},ph=["onClick"],fh={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},hh={class:"paper-table-head",role:"row"},mh={role:"columnheader"},vh={role:"columnheader"},gh={role:"columnheader"},yh={class:"paper-table-row",role:"row"},bh={class:"cell-anon",role:"cell"},wh={class:"anon-text"},kh=["textContent","href"],Eh={class:"anon-sub"},Ch={class:"cell-status",role:"cell"},Sh=["textContent"],_h={class:"cell-views num",role:"cell"},Nh=["textContent","href"],Rh={class:"cell-expires",role:"cell"},Dh={class:"cell-actions",role:"cell"},Th={class:"dropdown"},Ah={class:"dropdown-menu dropdown-menu-right"},Oh=["href"],Ph=["href"],Ih=["href"],Vh=["onClick"],qh={key:0,class:"paper-table-empty"},Mh={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},Uh={style:{"font-size":"12px",color:"var(--ink-muted)"}},$h={key:0,class:"pagination-compact"},Lh=["disabled"],Fh=["max"],Bh=["disabled"],Hh={class:"admin-filter-inline"},zh={class:"form-control form-control-sm"};function Ol(e,t){let o=ge("field"),i=ge("form");return l(),d("div",Ff,[t[47]||(t[47]=fe('
Admin \xA0/\xA0 Conferences

Conferences

',3)),n("div",Bf,[n("span",Hf,u(e.total>=0?e.fmt.number(e.total):"\u2026"),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[13]||(t[13]=v("Ready ",-1)),n("span",jf,u(e.fmt?.number(e.statusCountFor("ready"))),1)],10,zf),n("button",{type:"button",class:P(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[14]||(t[14]=v("Preparing ",-1)),n("span",Wf,u(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,Gf),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[15]||(t[15]=v("Errored ",-1)),n("span",Yf,u(e.fmt?.number(e.statusCountFor("error"))),1)],10,Kf),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[16]||(t[16]=v("Expired ",-1)),n("span",Qf,u(e.fmt?.number(e.statusCountFor("expired"))),1)],10,Jf),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[17]||(t[17]=v("Removed ",-1)),n("span",Zf,u(e.fmt?.number(e.statusCountFor("removed"))),1)],10,Xf)]),e.fetchError?(l(),d("div",xf,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fetchError),1)])):p("v-if",!0),D((l(),d("form",eh,[n("div",th,[n("div",nh,[D(n("input",oh,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",sh,"/"))]),t[22]||(t[22]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])]),n("span",ih,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,rh),n("span",ah,u(e.query?.page)+"/"+u(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,lh)])]),e.chips?.length?(l(),d("div",dh,[n("div",uh,[(l(!0),d(K,null,te(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",ch,u(s?.label),1),n("span",null,u(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,ph)]))),128))])])):p("v-if",!0)])),[[i,e.viewState]]),n("div",fh,[n("div",hh,[n("div",mh,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="name"}]),onClick:t[8]||(t[8]=s=>e.sortBy("name"))},[t[25]||(t[25]=v("Conference ",-1)),e.sortIcon("name")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("name")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[24]||(t[24]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",vh,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[9]||(t[9]=s=>e.sortBy("status"))},[t[27]||(t[27]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=n("div",{role:"columnheader",class:"num"},"Repos",-1)),n("div",gh,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="startDate"}]),onClick:t[10]||(t[10]=s=>e.sortBy("startDate"))},[t[29]||(t[29]=v("Window ",-1)),e.sortIcon("startDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("startDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,te(e.filteredConferences,(s,r)=>(l(),d("div",yh,[n("div",bh,[t[33]||(t[33]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",wh,[n("a",{class:"repo-name",textContent:u(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,kh),n("div",Eh,[n("span",null,u(s?.conferenceID),1),t[32]||(t[32]=v("\xA0\xB7\xA0",-1)),n("span",null,u(e.fmt?.number(s?.price||0))+" \u20AC",1)])])]),n("div",Ch,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,Sh)]),n("div",_h,[t[34]||(t[34]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:"Show repositories in this conference",textContent:u(e.fmt?.number(s?.repositories?.length||0)),href:e.safeUrl("/admin/?conference="+s?.conferenceID)},null,8,Nh)]),n("div",Rh,[t[35]||(t[35]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),v(" "+u(e.fmt?.date(s?.startDate))+" \u2013 "+u(e.fmt?.date(s?.endDate)),1)]),n("div",Dh,[n("div",Th,[t[41]||(t[41]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",Ah,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[36]||(t[36]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit",-1)])],8,Oh),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View",-1)])],8,Ph),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/?conference="+s?.conferenceID)},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),v(" View repositories",-1)])],8,Ih),t[40]||(t[40]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ae(a=>e.removeConference(s),["prevent"])},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,Vh),[[W,s?.status!="removed"]])])])])]))),256)),e.filteredConferences?.length==0?(l(),d("div",qh,[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No conferences match the current filters.",-1)])])):p("v-if",!0)]),n("div",Mh,[n("span",Uh,u(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",$h,[n("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),v(" Previous",-1)])],8,Lh),D(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,Fh),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+u(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[44]||(t[44]=[v("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Bh)])):p("v-if",!0),n("span",Hh,[t[46]||(t[46]=n("label",null,"Per page",-1)),D((l(),d("select",zh,[...t[45]||(t[45]=[fe('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var jh={class:"container paper-page admin-page errors-page"},Gh={class:"errors-header"},Wh={class:"errors-actions"},Kh={class:"kpi-grid"},Yh={class:"kpi-card"},Jh={class:"kpi-value"},Qh={key:0},Xh={key:1},Zh={class:"kpi-card kpi-error"},xh={class:"kpi-value"},em={class:"kpi-sub"},tm={class:"kpi-card kpi-warn"},nm={class:"kpi-value"},om={class:"kpi-sub"},sm={class:"kpi-card kpi-info"},im={class:"kpi-value"},rm={class:"kpi-sub"},am={class:"kpi-value"},lm={class:"kpi-sub"},dm={key:0,class:"dropped-warn"},um={class:"volume-chart"},cm={class:"volume-bars"},pm=["title"],fm={class:"errors-toolbar","aria-label":"Error filters"},hm={class:"seg-tabs"},mm={class:"search-wrap"},vm={type:"search",class:"form-control",placeholder:"code:repo_not_found module:route status:>=400",autocomplete:"off"},gm={key:0,class:"filter-count"},ym={class:"select-wrap"},bm={class:"form-control form-control-sm"},wm={class:"select-wrap"},km={class:"form-control form-control-sm"},Em={class:"autoref"},Cm={type:"checkbox"},Sm={key:0,class:"admin-empty"},_m={key:1,class:"errors-pager"},Nm={key:2,class:"errors-list"},Rm=["onClick"],Dm={class:"col-when"},Tm={class:"when-rel"},Am={class:"when-abs"},Om={class:"col-sev"},Pm={class:"sev-label"},Im={class:"col-mod"},Vm={class:"pill pill-module"},qm={class:"col-msg"},Mm={class:"msg-code"},Um={key:0,class:"msg-context"},$m={key:1,class:"msg-detail"},Lm={key:2,class:"msg-url"},Fm={class:"col-count"},Bm={key:0,class:"count-pill"},Hm={key:1,class:"count-pill count-pill-muted"},zm={class:"col-status"},jm={key:0,class:"errors-row-detail"},Gm={class:"detail-tabs"},Wm=["onClick"],Km=["onClick"],Ym=["onClick"],Jm={class:"detail-body"},Qm={class:"detail-main"},Xm={key:0},Zm={key:1,class:"stack-pre"},xm={key:2,class:"related-list"},ev={class:"when-abs"},tv={class:"msg-url"},nv={class:"detail-actions"},ov=["onClick"],sv=["onClick"],iv={key:0,class:"copy-hint"},rv={class:"detail-aside"},av={class:"aside-block"},lv=["title"],dv={class:"aside-block"},uv=["title"],cv={class:"aside-block"},pv={class:"aside-value"},fv={key:0,class:"aside-sub"},hv={key:0,class:"aside-block"},mv=["href"],vv={key:1,class:"aside-block"},gv={class:"aside-value mono"};function Pl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",jh,[t[32]||(t[32]=n("div",{class:"paper-crumbs"},[v("Admin \xA0/\xA0 "),n("span",{class:"here"},"Errors")],-1)),n("header",Gh,[t[10]||(t[10]=n("h1",{class:"paper-page-title"},"Errors",-1)),n("div",Wh,[n("button",{class:"btn btn-sm",type:"button",onClick:t[0]||(t[0]=s=>e.exportCsv())},[...t[8]||(t[8]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export CSV",-1)])]),n("button",{class:"btn btn-sm btn-danger-soft",type:"button",onClick:t[1]||(t[1]=s=>e.clearAll())},[...t[9]||(t[9]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Clear all",-1)])])])]),t[33]||(t[33]=fe('',1)),n("section",Kh,[n("div",Yh,[t[11]||(t[11]=n("div",{class:"kpi-label"},"Last 24h",-1)),n("div",Jh,u(e.stats?.last24h),1),n("div",{class:P(["kpi-sub",{up:e.stats?.delta>0,down:e.stats?.delta<0}])},[e.stats?.prev24h?(l(),d("span",Qh,u(e.stats?.delta>0?"+":"")+u(e.stats?.delta)+"% vs yesterday",1)):p("v-if",!0),e.stats?.prev24h?p("v-if",!0):(l(),d("span",Xh,"no prior baseline"))],2)]),n("div",Zh,[t[12]||(t[12]=n("div",{class:"kpi-label"},"Errors (5xx)",-1)),n("div",xh,u(e.stats?.severity?.error),1),n("div",em,u(e.stats?.unique?.error)+" unique",1)]),n("div",tm,[t[13]||(t[13]=n("div",{class:"kpi-label"},"Warnings (4xx)",-1)),n("div",nm,u(e.stats?.severity?.warn),1),n("div",om,u(e.stats?.unique?.warn)+" unique",1)]),n("div",sm,[t[14]||(t[14]=n("div",{class:"kpi-label"},"Info (auth, 404)",-1)),n("div",im,u(e.stats?.severity?.info),1),n("div",rm,u(e.stats?.unique?.info)+" unique",1)]),n("div",{class:P(["kpi-card",{"kpi-error":e.stats?.dropped>0}])},[t[15]||(t[15]=n("div",{class:"kpi-label"},"Captured",-1)),n("div",am,u(e.total),1),n("div",lm,[v(" cap "+u(e.cap)+" \xB7 "+u(e.available?"live":"redis off")+" ",1),e.stats?.dropped>0?(l(),d("span",dm," \xB7 "+u(e.stats?.dropped)+" dropped",1)):p("v-if",!0)])],2)]),n("section",um,[t[16]||(t[16]=fe('
Volume \xB7 24h \xB7 1h bucketserror warn info
',1)),n("div",cm,[(l(!0),d(K,null,te(e.stats?.buckets,(s,r)=>(l(),d("div",{class:"volume-bar",key:r,title:e.bucketTitle(s)},[n("span",{class:"seg seg-error",style:Ie({height:e.barPx(s,"error")+"px"})},null,4),n("span",{class:"seg seg-warn",style:Ie({height:e.barPx(s,"warn")+"px"})},null,4),n("span",{class:"seg seg-info",style:Ie({height:e.barPx(s,"info")+"px"})},null,4)],8,pm))),128))])]),D((l(),d("form",fm,[n("div",hm,[n("button",{type:"button",class:P({active:e.query?.bucket===""}),onClick:t[2]||(t[2]=s=>e.setBucket(""))},"All",2),n("button",{type:"button",class:P({active:e.query?.bucket==="error"}),onClick:t[3]||(t[3]=s=>e.setBucket("error"))},"5xx",2),n("button",{type:"button",class:P({active:e.query?.bucket==="warn"}),onClick:t[4]||(t[4]=s=>e.setBucket("warn"))},"4xx",2),n("button",{type:"button",class:P({active:e.query?.bucket==="info"}),onClick:t[5]||(t[5]=s=>e.setBucket("info"))},"Info",2)]),n("div",mm,[t[17]||(t[17]=n("svg",{class:"ui-icon search-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)),D(n("input",vm,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.parsedFilterCount?(l(),d("span",gm,u(e.parsedFilterCount)+" filter"+u(e.parsedFilterCount>1?"s":""),1)):p("v-if",!0)]),n("div",ym,[t[19]||(t[19]=n("label",null,"Sort",-1)),D((l(),d("select",bm,[...t[18]||(t[18]=[n("option",{value:"recent"},"Most recent",-1),n("option",{value:"count"},"Most frequent",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.sort=s},value:e.query?.sort,form:null,options:{}}]])]),n("div",wm,[t[21]||(t[21]=n("label",null,"Group",-1)),D((l(),d("select",km,[...t[20]||(t[20]=[n("option",{value:""},"Off",-1),n("option",{value:"code"},"By code",-1),n("option",{value:"module"},"By module",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.group=s},value:e.query?.group,form:null,options:{}}]])]),n("label",Em,[D(n("input",Cm,null,512),[[o,{state:e.viewState,set:s=>{e.query.autoRefresh=s},value:e.query?.autoRefresh,form:null,options:{}}]]),t[22]||(t[22]=v(" Auto-refresh ",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[6]||(t[6]=s=>e.refreshNow()),"aria-label":"Refresh"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])),[[i,e.viewState]]),e.visible?.length?p("v-if",!0):(l(),d("div",Sm,"No errors captured.")),e.canLoadMore()&&e.visible?.length?(l(),d("div",_m,[n("span",null,"Showing "+u(e.entries?.length)+" of "+u(e.total)+" captured",1),n("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>e.loadMore())},"Load older")])):p("v-if",!0),e.visible?.length?(l(),d("div",Nm,[t[31]||(t[31]=fe('
WhenSeverityModuleMessageCountStatus
',1)),(l(!0),d(K,null,te(e.visible,(s,r)=>(l(),d("div",{class:P(["errors-row",{open:e.expanded[s?._key]}]),key:s?._key},[n("div",{class:"errors-row-main",onClick:a=>e.toggle(s)},[n("div",Dm,[n("div",Tm,u(e.relTime(s?.ts)),1),n("div",Am,u(e.absTimeShort(s?.ts)),1)]),n("div",Om,[n("span",{class:P(["sev-dot","sev-"+s?._bucket])},null,2),n("span",Pm,u(e.fmt?.title(s?._bucket)),1)]),n("div",Im,[n("span",Vm,u(s?.module),1)]),n("div",qm,[n("strong",Mm,u(s?.displayMessage),1),s?.displayContext&&s?.displayContext!==s?.displayMessage?(l(),d("span",Um,u(s?.displayContext),1)):p("v-if",!0),s?._detail?(l(),d("span",$m,u(s?._detail),1)):p("v-if",!0),s?._url?(l(),d("div",Lm,u(s?._url),1)):p("v-if",!0)]),n("div",Fm,[s?.count>1?(l(),d("span",Bm,"\xD7"+u(s?.count),1)):p("v-if",!0),s?.count===1?(l(),d("span",Hm,"\xD71")):p("v-if",!0)]),n("div",zm,[s?._status?(l(),d("span",{key:0,class:P(["status-pill","status-"+s?._bucket])},u(s?._status),3)):p("v-if",!0)])],8,Rm),e.expanded[s?._key]?(l(),d("div",jm,[n("div",Gm,[n("button",{type:"button",class:P({active:e.detailTab[s?._key]==="raw"||!e.detailTab[s?._key]}),onClick:a=>e.detailTab[s._key]="raw"},"Raw",10,Wm),s?._stack?(l(),d("button",{key:0,type:"button",class:P({active:e.detailTab[s?._key]==="stack"}),onClick:a=>e.detailTab[s._key]="stack"},"Stack",10,Km)):p("v-if",!0),s?.count>1?(l(),d("button",{key:1,type:"button",class:P({active:e.detailTab[s?._key]==="related"}),onClick:a=>e.detailTab[s._key]="related"},"Related ("+u(s?.count)+")",11,Ym)):p("v-if",!0)]),n("div",Jm,[n("div",Qm,[(e.detailTab[s?._key]||"raw")==="raw"?(l(),d("pre",Xm,u(s?._detailJson),1)):p("v-if",!0),e.detailTab[s?._key]==="stack"?(l(),d("pre",Zm,u(s?._stack),1)):p("v-if",!0),e.detailTab[s?._key]==="related"?(l(),d("div",xm,[(l(!0),d(K,null,te(s?._related,(a,c)=>(l(),d("div",{class:"related-row",key:c},[n("span",ev,u(e.absTimeShort(a?.ts)),1),n("span",tv,u(a?._url),1),a?._status?(l(),d("span",{key:0,class:P(["status-pill","status-"+a?._bucket])},u(a?._status),3)):p("v-if",!0)]))),128))])):p("v-if",!0),n("div",nv,[n("button",{class:"btn btn-sm",type:"button",title:"Copy a curl that reproduces the request",onClick:a=>e.copyCurl(s)},[...t[24]||(t[24]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),v(" Copy curl",-1)])],8,ov),n("button",{class:"btn btn-sm",type:"button",onClick:a=>e.copyJson(s)},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-clipboard"})],-1),v(" Copy JSON",-1)])],8,sv),e.copyHint?(l(),d("span",iv,u(e.copyHint),1)):p("v-if",!0)])]),n("aside",rv,[n("div",av,[t[26]||(t[26]=n("div",{class:"aside-label"},"First seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?._firstSeen)},u(e.relTime(s?._firstSeen)),9,lv)]),n("div",dv,[t[27]||(t[27]=n("div",{class:"aside-label"},"Last seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?.ts)},u(e.relTime(s?.ts)),9,uv)]),n("div",cv,[t[28]||(t[28]=n("div",{class:"aside-label"},"Occurrences",-1)),n("div",pv,[v(u(s?.count),1),s?._lastHourCount?(l(),d("span",fv," \xB7 "+u(s?._lastHourCount)+" this hour",1)):p("v-if",!0)])]),s?._repoId?(l(),d("div",hv,[t[29]||(t[29]=n("div",{class:"aside-label"},"Repository",-1)),n("a",{class:"aside-value",href:e.safeUrl("/r/"+s?._repoId)},u(s?._repoId),9,mv)])):p("v-if",!0),s?._url?(l(),d("div",vv,[t[30]||(t[30]=n("div",{class:"aside-label"},"URL",-1)),n("div",gv,u(s?._url),1)])):p("v-if",!0)])])])):p("v-if",!0)],2))),128))])):p("v-if",!0)])}var yv={class:"container paper-page admin-page overview-page"},bv={key:0,class:"admin-empty"},wv={key:1,class:"alert alert-danger",style:{margin:"12px 0"}},kv={key:2},Ev={class:"ov-kpi-row"},Cv={class:"ov-kpi-card"},Sv={class:"ov-kpi-value"},_v={class:"ov-kpi-sub"},Nv={class:"ov-kpi-card"},Rv={class:"ov-kpi-sub"},Dv={class:"ov-kpi-card"},Tv={class:"ov-kpi-sub"},Av={class:"ov-kpi-card"},Ov={class:"ov-kpi-sub"},Pv={class:"ov-kpi-card"},Iv={class:"ov-kpi-value"},Vv={class:"ov-kpi-sub"},qv={class:"ov-daily-row"},Mv={class:"ov-daily-card"},Uv={class:"ov-daily-value"},$v={class:"ov-daily-card"},Lv={class:"ov-daily-value"},Fv={class:"ov-daily-sub"},Bv={class:"ov-daily-card"},Hv={class:"ov-daily-value"},zv={class:"ov-chart-row"},jv={class:"ov-chart-card"},Gv={key:0,class:"ov-spark-bars"},Wv=["data-tip","aria-label"],Kv={key:1,class:"ov-spark-x"},Yv={class:"ov-chart-card"},Jv={key:0,class:"ov-spark-bars"},Qv=["data-tip","aria-label"],Xv={key:1,class:"ov-spark-x"},Zv={class:"ov-chart-card"},xv={class:"ov-chart-head"},eg={class:"ov-chart-legend"},tg={key:0,class:"ov-spark-bars"},ng=["data-tip","aria-label"],og={key:1,class:"ov-spark-x"},sg={class:"ov-chart-card"},ig={key:0,class:"ov-spark-bars"},rg=["data-tip","aria-label"],ag={key:1,class:"ov-spark-x"},lg={class:"ov-triple-row"},dg={class:"ov-panel-card"},ug={class:"ov-panel-head"},cg={class:"ov-panel-meta"},pg={class:"ov-stacked-bar"},fg={class:"ov-bar-legend"},hg={href:"/admin/repositories",class:"ov-legend-item"},mg={class:"ov-legend-n"},vg={href:"/admin/repositories",class:"ov-legend-item"},gg={class:"ov-legend-n"},yg={href:"/admin/repositories",class:"ov-legend-item"},bg={class:"ov-legend-n"},wg={href:"/admin/repositories",class:"ov-legend-item"},kg={class:"ov-legend-n"},Eg={href:"/admin/repositories",class:"ov-legend-item"},Cg={class:"ov-legend-n"},Sg={class:"ov-panel-card"},_g={class:"ov-panel-head"},Ng={class:"ov-panel-meta"},Rg={class:"ov-error-bars"},Dg={class:"ov-ebar-row"},Tg={class:"ov-ebar-track"},Ag={class:"ov-ebar-n"},Og={class:"ov-ebar-row"},Pg={class:"ov-ebar-track"},Ig={class:"ov-ebar-n"},Vg={class:"ov-ebar-row"},qg={class:"ov-ebar-track"},Mg={class:"ov-ebar-n"},Ug={key:0,class:"ov-panel-foot"},$g={href:"/admin/errors"},Lg={class:"ov-panel-card"},Fg={class:"ov-routes-table"},Bg={class:"ov-route-row",href:"/admin/queues"},Hg={class:"ov-route-n"},zg={class:"ov-route-n"},jg={class:"ov-route-row",href:"/admin/queues"},Gg={class:"ov-route-n"},Wg={class:"ov-route-n"},Kg={class:"ov-route-row",href:"/admin/queues"},Yg={class:"ov-route-n"},Jg={class:"ov-route-n"},Qg={class:"ov-services-card"},Xg={class:"ov-services-head"},Zg={class:"ov-panel-meta"},xg={class:"ov-services-grid"},ey={class:"ov-svc"},ty={class:"ov-svc-info"},ny={class:"ov-svc-meta"},oy={class:"ov-svc-detail"},sy={class:"ov-svc"},iy={class:"ov-svc-info"},ry={key:0,class:"ov-svc-meta"},ay={key:1,class:"ov-svc-meta"},ly={class:"ov-svc"},dy={class:"ov-svc-info"},uy={key:0,class:"ov-svc-meta"},cy={key:1,class:"ov-svc-meta"},py={class:"ov-svc"},fy={class:"ov-svc-info"},hy={key:0,class:"ov-svc-meta"},my={key:1,class:"ov-svc-meta"},vy={class:"ov-svc"},gy={class:"ov-svc-info"},yy={class:"ov-svc-meta"},by={class:"ov-panel-card ov-cache","aria-labelledby":"cache-heading"},wy={class:"ov-panel-head ov-performance-head"},ky={class:"ov-performance-window"},Ey={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},Cy={key:1,class:"ov-performance-empty",role:"status"},Sy={key:0,class:"ov-performance-note"},_y={key:1,class:"ov-performance-note"},Ny={key:2,class:"ov-performance-message ov-performance-warning",role:"status"},Ry={key:3,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache storage budgets"},Dy={class:"ov-metrics-table"},Ty={scope:"row"},Ay={key:4,class:"ov-performance-note"},Oy={key:5,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache events and processing durations"},Py={class:"ov-metrics-table"},Iy={scope:"row"},Vy={key:6,class:"ov-performance-empty",role:"status"},qy={class:"ov-performance-note"},My={class:"ov-panel-card ov-performance","aria-labelledby":"performance-heading"},Uy={class:"ov-panel-head ov-performance-head"},$y={class:"ov-performance-window"},Ly={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},Fy={key:1,class:"ov-performance-empty",role:"status"},By={key:2},Hy={class:"paper-tabs ov-performance-tabs",role:"tablist","aria-label":"Performance metrics"},zy=["aria-selected","tabindex"],jy=["aria-selected","tabindex"],Gy=["aria-selected","tabindex"],Wy={id:"performance-routes",role:"tabpanel","aria-labelledby":"performance-routes-tab"},Ky={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Route latency metrics, scroll for more columns"},Yy={class:"ov-metrics-table"},Jy={scope:"row",class:"ov-metric-name"},Qy={class:"num"},Xy={class:"num"},Zy={class:"num"},xy={class:"num"},eb={class:"num"},tb={key:1,class:"ov-performance-empty"},ob={id:"performance-processes",role:"tabpanel","aria-labelledby":"performance-processes-tab"},sb={key:0,class:"ov-performance-message ov-performance-warning",role:"status"},ib={key:1,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Process resource metrics, scroll for more columns"},rb={class:"ov-metrics-table"},ab={scope:"row",class:"ov-metric-name"},lb={key:0,class:"ov-metric-warn"},db={class:"num"},ub={class:"num"},cb={class:"num"},pb={class:"num"},fb={class:"num"},hb={class:"num"},mb={class:"num"},vb={class:"num"},gb={id:"performance-stages",role:"tabpanel","aria-labelledby":"performance-stages-tab"},yb={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Work stage metrics, scroll for more columns"},bb={class:"ov-metrics-table"},wb={scope:"row",class:"ov-metric-name"},kb={class:"num"},Eb={class:"num"},Cb={class:"num"},Sb={key:1,class:"ov-performance-empty"};function Il(e,t){return l(),d("div",yv,[t[79]||(t[79]=fe('
Admin \xA0/\xA0 Overview

Overview

',3)),e.loading?(l(),d("div",bv,"Loading overview\u2026")):p("v-if",!0),e.error?(l(),d("div",wv,[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.error),1)])):p("v-if",!0),e.data?(l(),d("div",kv,[p(" \u2500\u2500 Top KPI row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",Ev,[n("div",Cv,[t[14]||(t[14]=n("div",{class:"ov-kpi-label"},[v("Repositories "),n("span",{class:"ov-dot ov-dot-ok"})],-1)),n("div",Sv,u(e.humanNum(e.data?.repos?.total)),1),n("div",_v,"+"+u(e.data?.repos?.newRepos24h)+" \xB7 last 24h",1)]),n("div",Nv,[t[15]||(t[15]=n("div",{class:"ov-kpi-label"},"CPU",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.cpuPercent>80}])},u(e.data?.system?.cpuPercent)+"%",3),n("div",Rv,u(e.data?.system?.cpuCount)+" cores \xB7 load "+u(e.data?.system?.loadAvg?.[0]?.toFixed(1)),1)]),n("div",Dv,[t[16]||(t[16]=n("div",{class:"ov-kpi-label"},"Memory",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.memPercent>85}])},u(e.data?.system?.memPercent)+"%",3),n("div",Tv,u(e.humanBytes(e.data?.system?.memUsed))+" / "+u(e.humanBytes(e.data?.system?.memTotal)),1)]),n("div",Av,[t[17]||(t[17]=n("div",{class:"ov-kpi-label"},"Disk",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.diskPercent>85}])},u(e.data?.system?.diskPercent)+"%",3),n("div",Ov,u(e.humanBytes(e.data?.system?.diskUsed))+" / "+u(e.humanBytes(e.data?.system?.diskTotal))+" \xB7 "+u(e.data?.system?.diskMount),1)]),n("div",Pv,[t[18]||(t[18]=n("div",{class:"ov-kpi-label"},"Uptime",-1)),n("div",Iv,u(e.humanDuration(e.data?.system?.uptime)),1),n("div",Vv,u(e.data?.system?.nodeVersion)+" \xB7 "+u(e.data?.system?.platform),1)])]),p(" \u2500\u2500 Daily activity highlights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",qv,[n("div",Mv,[t[19]||(t[19]=n("div",{class:"ov-daily-label"},"New repos today",-1)),n("div",Uv,"+"+u(e.fmt?.number(e.data?.daily?.today?.repositories)),1),t[20]||(t[20]=n("div",{class:"ov-daily-sub"},"since yesterday",-1))]),n("div",$v,[t[21]||(t[21]=n("div",{class:"ov-daily-label"},"New users today",-1)),n("div",Lv,"+"+u(e.fmt?.number(e.data?.daily?.today?.users)),1),n("div",Fv,u(e.fmt?.number(e.data?.users?.total))+" total users",1)]),n("div",Bv,[t[22]||(t[22]=n("div",{class:"ov-daily-label"},"Page views today",-1)),n("div",Hv,"+"+u(e.fmt?.number(e.data?.daily?.today?.pageViews)),1),t[23]||(t[23]=n("div",{class:"ov-daily-sub"},"since yesterday",-1))])]),p(" \u2500\u2500 Daily charts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",zv,[n("div",jv,[t[24]||(t[24]=n("div",{class:"ov-chart-head"},[n("span",{class:"ov-chart-title"},"Daily page views \xB7 30d"),n("span",{class:"ov-chart-legend"},[n("span",{class:"ov-dot-legend ov-dot-accent"}),v("views/day")])],-1)),e.data?.history?.length?(l(),d("div",Gv,[(l(!0),d(K,null,te(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+" views","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+" views"},[n("span",{class:"ov-spark-fill",style:Ie({height:e.historyBarH(o,"dailyPageViews")+"px"})},null,4)],8,Wv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",Kv,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),n("div",Yv,[t[25]||(t[25]=n("div",{class:"ov-chart-head"},[n("span",{class:"ov-chart-title"},"New repos \xB7 30d"),n("span",{class:"ov-chart-legend"},[n("span",{class:"ov-dot-legend ov-dot-ok-fill"}),v("repos/day")])],-1)),e.data?.history?.length?(l(),d("div",Jv,[(l(!0),d(K,null,te(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+" repos","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+" repos"},[n("span",{class:"ov-spark-fill ov-spark-fill-alt",style:Ie({height:e.historyBarH(o,"dailyRepositories")+"px"})},null,4)],8,Qv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",Xv,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),n("div",Zv,[n("div",xv,[t[27]||(t[27]=n("span",{class:"ov-chart-title"},"Users \xB7 30d",-1)),n("span",eg,[t[26]||(t[26]=n("span",{class:"ov-dot-legend ov-dot-user-fill"},null,-1)),v("total users \xB7 "+u(e.fmt?.number(e.historyRange("nbUsers").min))+"\u2013"+u(e.fmt?.number(e.historyRange("nbUsers").max)),1)])]),e.data?.history?.length?(l(),d("div",tg,[(l(!0),d(K,null,te(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": "+e.fmt?.number(o?.nbUsers)+" users","aria-label":e.historyLabel(o)+": "+e.fmt?.number(o?.nbUsers)+" users"},[n("span",{class:"ov-spark-fill ov-spark-fill-user",style:Ie({height:e.historyRangeH(o,"nbUsers")+"px"})},null,4)],8,ng))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",og,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),n("div",sg,[t[28]||(t[28]=n("div",{class:"ov-chart-head"},[n("span",{class:"ov-chart-title"},"New users \xB7 30d"),n("span",{class:"ov-chart-legend"},[n("span",{class:"ov-dot-legend ov-dot-new-user-fill"}),v("users/day")])],-1)),e.data?.history?.length?(l(),d("div",ig,[(l(!0),d(K,null,te(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+" users","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+" users"},[n("span",{class:"ov-spark-fill ov-spark-fill-new-user",style:Ie({height:e.historyBarH(o,"dailyUsers")+"px"})},null,4)],8,rg))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",ag,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)])]),p(" \u2500\u2500 Three-panel row: Status / Errors / Queues \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",lg,[p(" Repo status breakdown "),n("div",dg,[n("div",ug,[t[29]||(t[29]=n("span",{class:"ov-panel-title"},"Repo status",-1)),n("span",cg,u(e.fmt?.number(e.data?.repos?.total))+" total",1)]),n("div",pg,[n("span",{class:"ov-bar-seg ov-bar-ready",title:"Ready",style:Ie({width:e.barPct("ready")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-preparing",title:"Preparing",style:Ie({width:e.barPct("preparing")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-error",title:"Error",style:Ie({width:e.barPct("error")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-expired",title:"Expired",style:Ie({width:e.barPct("expired")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-removed",title:"Removed",style:Ie({width:e.barPct("removed")+"%"})},null,4)]),n("div",fg,[n("a",hg,[t[30]||(t[30]=n("span",{class:"ov-swatch ov-bar-ready"},null,-1)),t[31]||(t[31]=v(" ready ",-1)),n("span",mg,u(e.fmt?.number(e.statusCount("ready"))),1)]),n("a",vg,[t[32]||(t[32]=n("span",{class:"ov-swatch ov-bar-preparing"},null,-1)),t[33]||(t[33]=v(" preparing ",-1)),n("span",gg,u(e.fmt?.number(e.statusCount("preparing")+e.statusCount("download"))),1)]),n("a",yg,[t[34]||(t[34]=n("span",{class:"ov-swatch ov-bar-error"},null,-1)),t[35]||(t[35]=v(" error ",-1)),n("span",bg,u(e.fmt?.number(e.statusCount("error"))),1)]),n("a",wg,[t[36]||(t[36]=n("span",{class:"ov-swatch ov-bar-expired"},null,-1)),t[37]||(t[37]=v(" expired ",-1)),n("span",kg,u(e.fmt?.number(e.statusCount("expired")+e.statusCount("expiring"))),1)]),n("a",Eg,[t[38]||(t[38]=n("span",{class:"ov-swatch ov-bar-removed"},null,-1)),t[39]||(t[39]=v(" removed ",-1)),n("span",Cg,u(e.fmt?.number(e.statusCount("removed")+e.statusCount("removing"))),1)])])]),p(" Error breakdown "),n("div",Sg,[n("div",_g,[t[40]||(t[40]=n("span",{class:"ov-panel-title"},"Errors \xB7 24h",-1)),n("span",Ng,u(e.data?.errors?.last24h)+" total",1)]),n("div",Rg,[n("div",Dg,[t[41]||(t[41]=n("span",{class:"ov-ebar-label"},"5xx",-1)),n("span",Tg,[n("span",{class:"ov-ebar-fill ov-ebar-error",style:Ie({width:e.errPct("error")+"%"})},null,4)]),n("span",Ag,u(e.data?.errors?.severity?.error),1)]),n("div",Og,[t[42]||(t[42]=n("span",{class:"ov-ebar-label"},"4xx",-1)),n("span",Pg,[n("span",{class:"ov-ebar-fill ov-ebar-warn",style:Ie({width:e.errPct("warn")+"%"})},null,4)]),n("span",Ig,u(e.data?.errors?.severity?.warn),1)]),n("div",Vg,[t[43]||(t[43]=n("span",{class:"ov-ebar-label"},"Info",-1)),n("span",qg,[n("span",{class:"ov-ebar-fill ov-ebar-info",style:Ie({width:e.errPct("info")+"%"})},null,4)]),n("span",Mg,u(e.data?.errors?.severity?.info),1)])]),e.data?.repos?.recentErrors24h?(l(),d("div",Ug,[n("a",$g,u(e.data?.repos?.recentErrors24h)+" repos in error state \u2192",1)])):p("v-if",!0)]),p(" Top routes / queues "),n("div",Lg,[t[48]||(t[48]=n("div",{class:"ov-panel-head"},[n("span",{class:"ov-panel-title"},"Queues"),n("span",{class:"ov-panel-meta"},"by state")],-1)),n("div",Fg,[t[47]||(t[47]=fe('
QueueActiveWaitFailed
',1)),n("a",Bg,[t[44]||(t[44]=n("span",{class:"ov-route-name"},"download",-1)),n("span",Hg,u(e.data?.queues?.download?.active),1),n("span",zg,u(e.data?.queues?.download?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.download?.failed>0}])},u(e.data?.queues?.download?.failed),3)]),n("a",jg,[t[45]||(t[45]=n("span",{class:"ov-route-name"},"remove",-1)),n("span",Gg,u(e.data?.queues?.remove?.active),1),n("span",Wg,u(e.data?.queues?.remove?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.remove?.failed>0}])},u(e.data?.queues?.remove?.failed),3)]),n("a",Kg,[t[46]||(t[46]=n("span",{class:"ov-route-name"},"cache",-1)),n("span",Yg,u(e.data?.queues?.cache?.active),1),n("span",Jg,u(e.data?.queues?.cache?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.cache?.failed>0}])},u(e.data?.queues?.cache?.failed),3)])])])]),p(" \u2500\u2500 Services bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",Qg,[n("div",Xg,[t[49]||(t[49]=n("span",{class:"ov-panel-title"},"Services",-1)),n("span",Zg,u(e.fmt?.number(e.data?.users?.total))+" users \xB7 "+u(e.data?.conferences?.total)+" conferences",1)]),n("div",xg,[n("div",ey,[t[51]||(t[51]=n("span",{class:"ov-svc-dot ov-dot-ok"},null,-1)),n("div",ty,[t[50]||(t[50]=n("span",{class:"ov-svc-name"},"web",-1)),n("span",ny,u(e.data?.system?.nodeVersion),1)]),n("span",oy,"uptime "+u(e.humanDuration(e.data?.system?.uptime)),1)]),n("div",sy,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.download)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",iy,[t[52]||(t[52]=n("span",{class:"ov-svc-name"},"download",-1)),e.queueTotal(e.data?.queues?.download)?(l(),d("span",ry,u(e.queueTotal(e.data?.queues?.download))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.download)?p("v-if",!0):(l(),d("span",ay,"idle"))])]),n("div",ly,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.cache)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",dy,[t[53]||(t[53]=n("span",{class:"ov-svc-name"},"cache",-1)),e.queueTotal(e.data?.queues?.cache)?(l(),d("span",uy,u(e.queueTotal(e.data?.queues?.cache))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.cache)?p("v-if",!0):(l(),d("span",cy,"idle"))])]),n("div",py,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.remove)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",fy,[t[54]||(t[54]=n("span",{class:"ov-svc-name"},"remove",-1)),e.queueTotal(e.data?.queues?.remove)?(l(),d("span",hy,u(e.queueTotal(e.data?.queues?.remove))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.remove)?p("v-if",!0):(l(),d("span",my,"idle"))])]),n("div",vy,[n("span",{class:P(["ov-svc-dot",e.data?.repos?.recentErrors24h>10?"ov-dot-warn":"ov-dot-ok"])},null,2),n("div",gy,[t[55]||(t[55]=n("span",{class:"ov-svc-name"},"errors",-1)),n("span",yy,u(e.data?.errors?.last24h)+" / 24h",1)])])])])])):p("v-if",!0),n("section",by,[n("div",wy,[t[60]||(t[60]=n("div",null,[n("h2",{class:"ov-panel-title",id:"cache-heading"},"Cache"),n("p",{class:"ov-performance-note"},"Shared storage, repeated reads and anonymization work \xB7 refreshes every 30 seconds")],-1)),n("div",ky,[t[58]||(t[58]=n("label",{for:"cache-window"},"Time range",-1)),D(n("select",{id:"cache-window",class:"form-control form-control-sm","onUpdate:modelValue":t[0]||(t[0]=o=>e.cacheMinutes=o),onChange:t[1]||(t[1]=o=>e.loadCache())},[...t[56]||(t[56]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1),n("option",{value:1440},"Last 24 hours",-1),n("option",{value:10080},"Last 7 days",-1)])],544),[[pn,e.cacheMinutes,void 0,{number:!0}]]),t[59]||(t[59]=n("label",{for:"cache-traffic"},"Traffic",-1)),D(n("select",{id:"cache-traffic",class:"form-control form-control-sm","onUpdate:modelValue":t[2]||(t[2]=o=>e.cacheTraffic=o)},[...t[57]||(t[57]=[fe('',6)])],512),[[pn,e.cacheTraffic]])])]),e.cacheError?(l(),d("div",Ey,[n("span",null,u(e.cacheError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[3]||(t[3]=o=>e.loadCache())},"Retry")])):p("v-if",!0),!e.cacheReport&&!e.cacheError?(l(),d("p",Cy,"Loading cache monitoring\u2026")):p("v-if",!0),e.cacheReport?.available?(l(),d(K,{key:2},[e.cacheReport.enabled?p("v-if",!0):(l(),d("p",Sy,"Shared blob storage is disabled. Inspection and legacy-cache activity are still measured.")),e.cacheReport.filesystemSupported?p("v-if",!0):(l(),d("p",_y,"Shared blobs require a local filesystem. The configured storage continues to use its existing cache.")),e.cacheReport.dropped?(l(),d("p",Ny,u(e.cacheReport.dropped)+" telemetry events were dropped. Totals may be incomplete.",1)):p("v-if",!0),e.cacheReport.source?(l(),d("div",Ry,[n("table",Dy,[t[61]||(t[61]=n("caption",{class:"sr-only"},"Current shared-cache storage and byte budgets",-1)),t[62]||(t[62]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Pool"),n("th",{scope:"col"},"Allocated / budget"),n("th",{scope:"col"},"Reserved for fills"),n("th",{scope:"col"},"Original bytes"),n("th",{scope:"col"},"Blobs"),n("th",{scope:"col"},"Active readers")])],-1)),n("tbody",null,[(l(!0),d(K,null,te([{name:"Source blobs",data:e.cacheReport.source},{name:"Transformed output",data:e.cacheReport.results}],o=>D((l(),d("tr",{key:o.name},[n("th",Ty,u(o.name),1),n("td",null,u(e.humanBytes(o.data?.allocatedBytes))+" / "+u(e.humanBytes(o.data?.budgetBytes)),1),n("td",null,u(e.humanBytes(o.data?.reservedBytes)),1),n("td",null,u(e.humanBytes(o.data?.originalBytes)),1),n("td",null,u(o.data?.blobs),1),n("td",null,u(o.data?.activeReaders),1)])),[[W,o.data]])),128))])])])):p("v-if",!0),e.cacheReport.source?(l(),d("p",Ay,"Source request hit rate: "+u(e.cacheRate("source","count"))+" \xB7 Source byte hit rate: "+u(e.cacheRate("source","bytes"))+" \xB7 Decision hit rate: "+u(e.cacheRate("decision","count")),1)):p("v-if",!0),t[65]||(t[65]=n("p",{class:"ov-performance-note"},"Reuse counts measure consecutive reads of the same blob within each interval. Codec timings are elapsed stream time, not CPU time; eviction times measure how long a blob was idle. Known monitors are identified by request metadata; other automation may remain in file reads.",-1)),e.cacheRows().length?(l(),d("div",Oy,[n("table",Py,[t[63]||(t[63]=n("caption",{class:"sr-only"},"Cache events for the selected time range and traffic",-1)),t[64]||(t[64]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Event"),n("th",{scope:"col"},"Traffic"),n("th",{scope:"col"},"Count"),n("th",{scope:"col"},"Bytes"),n("th",{scope:"col"},"Mean measured time"),n("th",{scope:"col"},"p95 bound")])],-1)),n("tbody",null,[(l(!0),d(K,null,te(e.cacheRows(),o=>(l(),d("tr",{key:o.name+":"+o.traffic},[n("th",Iy,u(e.cacheEventName(o.name)),1),n("td",null,u(o.traffic),1),n("td",null,u(o.count),1),n("td",null,u(e.humanBytes(o.bytes)),1),n("td",null,u(o.ms?(o.ms/o.count).toFixed(2)+" ms":"Not timed"),1),n("td",null,u(e.cacheP95(o)),1)]))),128))])])])):(l(),d("p",Vy,"No cache events in this time range for the selected traffic.")),n("p",qy,"Updated "+u(e.sampleAge(e.cacheReport))+" seconds ago. Minute history is retained for 48 hours; hourly history for 30 days.",1)],64)):p("v-if",!0)]),n("section",My,[n("div",Uy,[t[68]||(t[68]=n("div",null,[n("h2",{class:"ov-panel-title",id:"performance-heading"},"Request performance"),n("p",{class:"ov-performance-note"},"Request latency and process health \xB7 refreshes every 30 seconds")],-1)),n("div",$y,[t[67]||(t[67]=n("label",{for:"performance-window"},"Time range",-1)),D(n("select",{id:"performance-window",class:"form-control form-control-sm","onUpdate:modelValue":t[4]||(t[4]=o=>e.performanceMinutes=o),onChange:t[5]||(t[5]=o=>e.loadPerformance()),"aria-label":"Performance time range"},[...t[66]||(t[66]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1)])],544),[[pn,e.performanceMinutes,void 0,{number:!0}]])])]),e.performanceError?(l(),d("div",Ly,[t[69]||(t[69]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),n("span",null,u(e.performanceError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[6]||(t[6]=o=>e.loadPerformance())},"Retry")])):p("v-if",!0),!e.performance&&!e.performanceError?(l(),d("p",Fy,"Loading performance monitoring\u2026")):p("v-if",!0),e.performance?.available?(l(),d("div",By,[n("div",Hy,[n("button",{id:"performance-routes-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="routes"}]),role:"tab","aria-selected":e.performanceTab==="routes",tabindex:e.performanceTab==="routes"?0:-1,"aria-controls":"performance-routes",onClick:t[7]||(t[7]=o=>e.performanceTab="routes"),onKeydown:t[8]||(t[8]=o=>e.previewTabKeydown(o))},"Routes",42,zy),n("button",{id:"performance-processes-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="processes"}]),role:"tab","aria-selected":e.performanceTab==="processes",tabindex:e.performanceTab==="processes"?0:-1,"aria-controls":"performance-processes",onClick:t[9]||(t[9]=o=>e.performanceTab="processes"),onKeydown:t[10]||(t[10]=o=>e.previewTabKeydown(o))},"Processes",42,jy),n("button",{id:"performance-stages-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="stages"}]),role:"tab","aria-selected":e.performanceTab==="stages",tabindex:e.performanceTab==="stages"?0:-1,"aria-controls":"performance-stages",onClick:t[11]||(t[11]=o=>e.performanceTab="stages"),onKeydown:t[12]||(t[12]=o=>e.previewTabKeydown(o))},"Work stages",42,Gy)]),D(n("div",Wy,[e.performance.routes?.length?(l(),d("div",Ky,[n("table",Yy,[t[70]||(t[70]=n("caption",{class:"sr-only"},"Route latency for the selected time range",-1)),t[71]||(t[71]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Route"),n("th",{scope:"col",class:"num"},"Requests"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"First byte p95"),n("th",{scope:"col",class:"num"},"p95"),n("th",{scope:"col",class:"num"},"p99"),n("th",{scope:"col",class:"num"},"Interrupted"),n("th",{scope:"col",class:"num"},"5xx"),n("th",{scope:"col",class:"num"},"Slow")])],-1)),n("tbody",null,[(l(!0),d(K,null,te(e.performance.routes,o=>(l(),d("tr",{key:o.service+o.method+o.route},[n("th",Jy,[n("span",null,u(o.route),1),n("small",null,u(o.service)+" \xB7 "+u(o.method),1)]),n("td",Qy,u(e.fmt.number(o.count)),1),n("td",Xy,u(e.formatMs(o.avgMs)),1),n("td",Zy,u(e.firstByteBound(o)),1),n("td",xy,u(e.latencyBound(o,"p95UpperMs")),1),n("td",eb,u(e.latencyBound(o,"p99UpperMs")),1),n("td",{class:P(["num",{"ov-metric-warn":o.aborted>0}])},u(e.fmt.number(o.aborted)),3),n("td",{class:P(["num",{"ov-metric-warn":o.errors>0}])},u(e.fmt.number(o.errors)),3),n("td",{class:P(["num",{"ov-metric-warn":o.slow>0}])},u(e.fmt.number(o.slow)),3)]))),128))])])])):(l(),d("p",tb,"No recorded requests in this time range yet."))],512),[[W,e.performanceTab==="routes"]]),D(n("div",ob,[t[75]||(t[75]=n("p",{class:"ov-performance-note"},"API and streamer processes \xB7 latest sample per instance",-1)),e.performance.instances?.length?(l(),d("div",ib,[n("table",rb,[t[73]||(t[73]=n("caption",{class:"sr-only"},"API and streamer process resource usage",-1)),t[74]||(t[74]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Process"),n("th",{scope:"col",class:"num"},"RSS / limit"),n("th",{scope:"col",class:"num"},"CPU"),n("th",{scope:"col",class:"num"},"Event loop p95"),n("th",{scope:"col",class:"num"},"Active requests"),n("th",{scope:"col",class:"num"},"Sockets / CLOSE_WAIT"),n("th",{scope:"col",class:"num"},"Workers / waiting"),n("th",{scope:"col",class:"num"},"Sample age"),n("th",{scope:"col",class:"num"},"Dropped batches / metrics")])],-1)),n("tbody",null,[(l(!0),d(K,null,te(e.performance.instances,o=>(l(),d("tr",{key:o.instance,class:P({"ov-metric-warning-row":e.performanceWarning(o)})},[n("th",ab,[n("span",null,u(o.instance),1),e.performanceWarning(o)?(l(),d("small",lb,[...t[72]||(t[72]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),v(" Needs attention",-1)])])):p("v-if",!0)]),n("td",db,[v(u(e.humanBytes(o.memory.rss))+" / "+u(e.humanBytes(o.memoryLimitBytes)),1),n("small",null,"Peak "+u(e.humanBytes(e.peakRss(o))),1)]),n("td",ub,u(o.cpuPercent.toFixed(1))+"%",1),n("td",cb,u(o.eventLoop.p95Ms.toFixed(1))+" ms",1),n("td",pb,u(o.activeRequests),1),n("td",fb,u(o.sockets?.descriptors??"Unavailable")+" / "+u(o.sockets?.closeWait??"Unavailable"),1),n("td",hb,u(o.workers?.running??0)+" / "+u(o.workers?.waiting??0),1),n("td",mb,u(e.sampleAge(o))+" s",1),n("td",vb,u(o.droppedBatches)+" / "+u(o.droppedMetrics),1)],2))),128))])])])):(l(),d("div",sb,"No recent process samples. Monitoring coverage is incomplete."))],512),[[W,e.performanceTab==="processes"]]),D(n("div",gb,[e.performance.stages?.some(o=>o.metric!=="first_byte")?(l(),d("div",yb,[n("table",bb,[t[76]||(t[76]=n("caption",{class:"sr-only"},"Work stages and cache results",-1)),t[77]||(t[77]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Work stage"),n("th",{scope:"col",class:"num"},"Samples"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"p95")])],-1)),n("tbody",null,[(l(!0),d(K,null,te(e.performance.stages.filter(o=>o.metric!=="first_byte"),o=>(l(),d("tr",{key:o.service+o.metric},[n("th",wb,[n("span",null,u(o.metric),1),n("small",null,u(o.service),1)]),n("td",kb,u(e.fmt.number(o.count)),1),n("td",Eb,u(e.formatMs(o.avgMs)),1),n("td",Cb,u(e.latencyBound(o,"p95UpperMs")),1)]))),128))])])])):(l(),d("p",Sb,"No recorded work stages or cache results in this time range yet."))],512),[[W,e.performanceTab==="stages"]]),t[78]||(t[78]=n("details",{class:"ov-performance-help"},[n("summary",null,"How to read these metrics"),n("p",null,"Latency includes upstream waits and response transfer. Percentiles show histogram bucket upper bounds, not exact timings. Process rows marked \u201CNeeds attention\u201D have stale samples, dropped monitoring data, CLOSE_WAIT sockets, high event loop delay, or high memory usage.")],-1))])):p("v-if",!0)])])}var _b={class:"container paper-page admin-page"},Nb={class:"q-header"},Rb={class:"q-header-actions"},Db={class:"q-range-btns"},Tb={class:"q-cards"},Ab=["aria-pressed","onKeydown","onClick"],Ob={class:"q-card-head"},Pb=["textContent"],Ib=["textContent"],Vb={class:"q-card-sub"},qb={key:0,class:"q-card-bar"},Mb={key:0,class:"q-detail"},Ub={class:"q-throughput"},$b={class:"q-section-label"},Lb={class:"q-section-right"},Fb={class:"q-stats-panel"},Bb={class:"q-section-label"},Hb={class:"q-stats-grid"},zb={class:"q-stat"},jb=["textContent"],Gb={class:"q-stat"},Wb=["textContent"],Kb={class:"q-stat"},Yb=["textContent"],Jb={class:"q-stat"},Qb=["textContent"],Xb={class:"q-stat"},Zb=["textContent"],xb={class:"q-stat"},e1=["textContent"],t1={class:"q-stats-actions"},n1=["disabled"],o1={class:"q-jobs"},s1={class:"q-jobs-header"},i1={class:"q-section-label"},r1={class:"q-state-filters"},a1={class:"q-state-toggle"},l1={type:"checkbox"},d1={class:"q-search-row"},u1={type:"search",class:"form-control",placeholder:"Search by job/repo id\u2026",autocomplete:"off"},c1={class:"q-auto-refresh"},p1={type:"checkbox"},f1={key:0,class:"q-table"},h1=["onClick"],m1={class:"q-cell-state"},v1=["textContent"],g1=["textContent"],y1={class:"q-cell-id"},b1=["textContent","href"],w1={class:"q-cell-payload"},k1=["textContent"],E1={key:0,class:"q-payload-detail"},C1=["textContent"],S1=["textContent"],_1={class:"q-cell-progress"},N1={key:0,class:"q-progress-wrap"},R1=["textContent"],D1={class:"q-cell-actions"},T1=["onClick"],A1=["onClick"],O1={key:0,class:"q-detail-row"},P1={colspan:"7"},I1={class:"q-job-detail"},V1={class:"q-job-detail-grid"},q1={class:"q-job-detail-item"},M1={class:"q-job-detail-value"},U1=["textContent","href"],$1={class:"q-job-detail-item"},L1={class:"q-job-detail-value"},F1=["textContent"],B1={key:0,class:"q-job-detail-item"},H1=["textContent"],z1={key:1,class:"q-job-detail-item"},j1=["textContent"],G1={key:2,class:"q-job-detail-item"},W1={class:"q-job-detail-value"},K1={key:3,class:"q-job-detail-item"},Y1=["textContent"],J1={key:4,class:"q-job-detail-item"},Q1=["textContent"],X1={key:5,class:"q-job-detail-item"},Z1=["textContent"],x1={key:6,class:"q-job-detail-item"},ew=["textContent"],tw={key:7,class:"q-job-detail-item"},nw=["textContent"],ow={key:0,class:"q-job-detail-error"},sw=["textContent"],iw={key:1},rw=["textContent"],aw={class:"q-job-detail-actions"},lw=["onClick"],dw=["onClick"],uw=["href"],cw={key:1,class:"paper-table-empty",style:{border:"1px solid var(--border-color)","border-radius":"10px",background:"var(--paper-card)"}},pw={key:0},fw={key:1};function Vl(e,t){let o=ge("field");return l(),d("div",_b,[t[48]||(t[48]=n("div",{class:"paper-crumbs"},[v("Admin \xA0/\xA0 "),n("span",{class:"here"},"Queues")],-1)),n("div",Nb,[t[12]||(t[12]=n("h1",{class:"paper-page-title"},"Queues",-1)),n("div",Rb,[n("div",Db,[n("button",{class:P(["btn btn-sm",{active:e.range=="1h"}]),onClick:t[0]||(t[0]=i=>e.setRange("1h"))},"1h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="6h"}]),onClick:t[1]||(t[1]=i=>e.setRange("6h"))},"6h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="24h"}]),onClick:t[2]||(t[2]=i=>e.setRange("24h"))},"24h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="7d"}]),onClick:t[3]||(t[3]=i=>e.setRange("7d"))},"7d",2)]),n("button",{class:"btn btn-sm",onClick:t[4]||(t[4]=i=>e.pauseAll())},"Pause all"),n("button",{class:"btn btn-sm btn-danger-soft",onClick:t[5]||(t[5]=i=>e.drainSelected())},"Drain "+u(e.selectedQueue),1)])]),t[49]||(t[49]=fe('',1)),p(" Queue overview cards "),n("div",Tb,[(l(!0),d(K,null,te(e.queueList,(i,s)=>(l(),d("div",{class:P(["q-card",{selected:e.selectedQueue==i?.key,paused:i?.paused}]),role:"button",tabindex:"0","aria-pressed":e.selectedQueue===i.key,onKeydown:[An(ae(r=>e.selectQueue(i.key),["prevent"]),["enter"]),An(ae(r=>e.selectQueue(i.key),["prevent"]),["space"])],onClick:r=>e.selectQueue(i.key)},[n("div",Ob,[n("span",{class:P(["q-dot",{"q-dot-red":i?.paused||i?.counts?.failed>0}])},null,2),n("span",{class:"q-card-name",textContent:u(i?.label)},null,8,Pb)]),n("div",{class:"q-card-count",textContent:u((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0))},null,8,Ib),n("div",Vb,[n("span",null,"waiting \xB7 "+u(i?.counts?.active||0)+" active",1),i?.counts?.active?(l(),d("div",qb,[n("div",{class:"q-card-bar-fill",style:Ie({width:i?.counts?.active/((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0)||1)*100+"%"})},null,4)])):p("v-if",!0)])],42,Ab))),256))]),p(" Detail: throughput chart + stats panel "),e.selectedStats?(l(),d("div",Mb,[n("div",Ub,[n("div",$b,[v(u(e.selectedQueue)+" \xB7 throughput ",1),n("span",Lb,[t[13]||(t[13]=n("span",{class:"q-legend-completed"},"\u25CF",-1)),t[14]||(t[14]=v(" completed ",-1)),t[15]||(t[15]=n("span",{class:"q-legend-failed"},"\u25CF",-1)),t[16]||(t[16]=v(" failed ",-1)),t[17]||(t[17]=n("span",{class:"q-legend-exec"},"- -",-1)),v(" avg time \xB7 "+u(e.range),1)])]),t[18]||(t[18]=n("div",{class:"q-chart-wrap"},[n("canvas",{id:"q-throughput-chart",height:"180"}),n("div",{id:"q-chart-tooltip",class:"q-chart-tooltip",style:{display:"none"}}),n("div",{id:"q-chart-crosshair",class:"q-chart-crosshair",style:{display:"none"}})],-1))]),n("div",Fb,[n("div",Bb,u(e.selectedQueue)+" \xB7 stats",1),n("div",Hb,[n("div",zb,[t[19]||(t[19]=n("div",{class:"q-stat-label"},"Waiting",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.counts?.waiting||0)},null,8,jb)]),n("div",Gb,[t[20]||(t[20]=n("div",{class:"q-stat-label"},"Active",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.counts?.active||0)},null,8,Wb)]),n("div",Kb,[t[21]||(t[21]=n("div",{class:"q-stat-label"},"Completed (24h)",-1)),n("div",{class:"q-stat-value",textContent:u(e.fmt?.number(e.selectedStats?.completed24h))},null,8,Yb)]),n("div",Jb,[t[22]||(t[22]=n("div",{class:"q-stat-label"},"Failed (24h)",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.failed24h||0)},null,8,Qb)]),n("div",Xb,[t[23]||(t[23]=n("div",{class:"q-stat-label"},"Delayed",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.counts?.delayed||0)},null,8,Zb)]),n("div",xb,[t[24]||(t[24]=n("div",{class:"q-stat-label"},"Workers",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.workers||0)},null,8,e1)])]),n("div",t1,[n("button",{class:"btn btn-sm",onClick:t[6]||(t[6]=i=>e.togglePause())},u(e.selectedStats?.paused?"Resume":"Pause"),1),n("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=i=>e.retryFailed()),disabled:!e.selectedStats?.counts?.failed},"Retry failed",8,n1),n("button",{class:"btn btn-sm",onClick:t[8]||(t[8]=i=>e.emptyQueue())},"Empty")])])])):p("v-if",!0),e.actionError?(l(),d("div",{key:1,class:"q-toast-error",onClick:t[9]||(t[9]=i=>e.actionError=null)},[t[25]||(t[25]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),v(" "+u(e.actionError),1)])):p("v-if",!0),p(" Jobs table "),n("div",o1,[n("div",s1,[n("div",i1,"All jobs \xB7 "+u(e.selectedQueue),1),n("div",r1,[(l(!0),d(K,null,te(e.allStates,(i,s)=>(l(),d("label",a1,[D(n("input",l1,null,512),[[o,{state:e.viewState,set:r=>{e.stateFilter[i]=r},value:e.stateFilter[i],form:null,options:{}}]]),n("span",{class:P("q-state-chip q-state-"+i)},u(i),3)]))),256))])]),n("div",d1,[D(n("input",u1,null,512),[[o,{state:e.viewState,set:i=>{e.query.search=i},value:e.query?.search,form:null,options:{}}]]),n("label",c1,[D(n("input",p1,null,512),[[o,{state:e.viewState,set:i=>{e.query.autoRefresh=i},value:e.query?.autoRefresh,form:null,options:{}}]]),t[26]||(t[26]=v(" Auto-refresh ",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[10]||(t[10]=i=>e.refreshNow()),"aria-label":"Refresh"},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])]),e.filteredJobs().length>0?(l(),d("table",f1,[t[46]||(t[46]=n("thead",null,[n("tr",null,[n("th",null,"State"),n("th",null,"Job id"),n("th",null,"Payload"),n("th",null,"Attempts"),n("th",null,"Duration"),n("th",null,"Progress"),n("th")])],-1)),(l(!0),d(K,null,te(e.filteredJobs(),(i,s)=>(l(),d("tbody",null,[n("tr",{style:{cursor:"pointer"},class:P({"q-row-failed":i?._state=="failed","q-row-expanded":e.expanded[i?.id]}),onClick:r=>e.toggleJob(i)},[n("td",m1,[n("span",{textContent:u(i?._state),class:P("q-state-badge q-state-"+i?._state)},null,10,v1),i?._state=="delayed"&&i?.delayUntil?(l(),d("span",{key:0,class:"q-delay-hint",textContent:u(e.delayCountdown(i?.delayUntil))},null,8,g1)):p("v-if",!0)]),n("td",y1,[(l(),d("svg",{class:P(["ui-icon q-chevron",{"q-chevron-open":e.expanded[i?.id]}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#ui-icon-chevron-right"},null,-1)])],2)),n("a",{target:"_blank",textContent:u("job:"+e.fmt.limitTo(i?.id,6)),onClick:t[11]||(t[11]=r=>r.stopPropagation()),href:e.safeUrl("/r/"+i?.id)},null,8,b1)]),n("td",w1,[n("span",{textContent:u(i?.name||"anonymize")},null,8,k1),i?.data?.repoId&&i?.data?.repoId!==i?.name?(l(),d("span",E1," \xB7 "+u(i?.data?.repoId),1)):p("v-if",!0)]),n("td",{class:"q-cell-num",textContent:u(i?.attemptsMade||1)},null,8,C1),n("td",{class:"q-cell-num",textContent:u(e.jobDuration(i))},null,8,S1),n("td",_1,[e.jobProgressPct(i)!==null?(l(),d("div",N1,[n("div",{class:"q-progress-bar",style:Ie({"--pct":e.jobProgressPct(i)+"%"})},null,4),n("span",{class:"q-progress-label",textContent:u(e.jobProgressPct(i)+"%")},null,8,R1)])):p("v-if",!0)]),n("td",D1,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm btn-icon",title:"Retry",onClick:r=>{e.retryJob(i),r.stopPropagation()},"aria-label":"Retry job"},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])],8,T1)):p("v-if",!0),n("button",{class:"btn btn-sm btn-icon",title:"Remove","aria-label":"Remove job",onClick:r=>{e.removeJob(i),r.stopPropagation()}},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,A1)])],10,h1),e.expanded[i?.id]?(l(),d("tr",O1,[n("td",P1,[n("div",I1,[n("div",V1,[n("div",q1,[t[31]||(t[31]=n("span",{class:"q-job-detail-label"},"Job id",-1)),n("span",M1,[n("a",{target:"_blank",textContent:u(i?.id),href:e.safeUrl("/r/"+i?.id)},null,8,U1)])]),n("div",$1,[t[32]||(t[32]=n("span",{class:"q-job-detail-label"},"State",-1)),n("span",L1,[n("span",{textContent:u(i?._state),class:P("q-state-badge q-state-"+i?._state)},null,10,F1)])]),i?.data?.repoId?(l(),d("div",B1,[t[33]||(t[33]=n("span",{class:"q-job-detail-label"},"Repo ID",-1)),n("span",{class:"q-job-detail-value",textContent:u(i?.data?.repoId)},null,8,H1)])):p("v-if",!0),i?.timestamp?(l(),d("div",z1,[t[34]||(t[34]=n("span",{class:"q-job-detail-label"},"Created",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.humanTime(i?.timestamp))},null,8,j1)])):p("v-if",!0),i?._state=="delayed"&&i?.delayUntil?(l(),d("div",G1,[t[35]||(t[35]=n("span",{class:"q-job-detail-label"},"Retry at",-1)),n("span",W1,u(e.humanTime(i?.delayUntil))+" ("+u(e.delayCountdown(i?.delayUntil))+")",1)])):p("v-if",!0),i?.processedOn?(l(),d("div",K1,[t[36]||(t[36]=n("span",{class:"q-job-detail-label"},"Processed",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.humanTime(i?.processedOn))},null,8,Y1)])):p("v-if",!0),i?.finishedOn?(l(),d("div",J1,[t[37]||(t[37]=n("span",{class:"q-job-detail-label"},"Finished",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.humanTime(i?.finishedOn))},null,8,Q1)])):p("v-if",!0),i?.attemptsMade?(l(),d("div",X1,[t[38]||(t[38]=n("span",{class:"q-job-detail-label"},"Attempts",-1)),n("span",{class:"q-job-detail-value",textContent:u(i?.attemptsMade)},null,8,Z1)])):p("v-if",!0),i?.progress&&i?.progress?.status?(l(),d("div",x1,[t[39]||(t[39]=n("span",{class:"q-job-detail-label"},"Status",-1)),n("span",{class:"q-job-detail-value",textContent:u(i?.progress?.status)},null,8,ew)])):p("v-if",!0),e.jobProgressPct(i)!==null?(l(),d("div",tw,[t[40]||(t[40]=n("span",{class:"q-job-detail-label"},"Progress",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.jobProgressPct(i)+"%")},null,8,nw)])):p("v-if",!0)]),i?.failedReason?(l(),d("div",ow,[t[41]||(t[41]=n("span",{class:"q-job-detail-label"},"Error",-1)),n("div",{class:"q-error-reason",textContent:u(i?.failedReason)},null,8,sw)])):p("v-if",!0),i?.stacktrace?.length?(l(),d("div",iw,[t[42]||(t[42]=n("span",{class:"q-job-detail-label"},"Stacktrace",-1)),(l(!0),d(K,null,te(i?.stacktrace,(r,a)=>(l(),d("pre",{class:"q-error-stack",key:a},[n("code",{textContent:u(r)},null,8,rw)]))),128))])):p("v-if",!0),n("div",aw,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm",onClick:r=>e.retryJob(i)},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Retry",-1)])],8,lw)):p("v-if",!0),n("button",{class:"btn btn-sm",onClick:r=>e.removeJob(i)},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,dw),n("a",{class:"btn btn-sm",target:"_blank",href:e.safeUrl("/r/"+i?.id)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1),v(" View repo",-1)])],8,uw)])])])])):p("v-if",!0)]))),256))])):p("v-if",!0),e.filteredJobs().length==0?(l(),d("div",cw,[t[47]||(t[47]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1)),e.query?.search?p("v-if",!0):(l(),d("span",pw,"No jobs in the "+u(e.selectedQueue)+" queue.",1)),e.query?.search?(l(),d("span",fw,"No jobs match the current filters.")):p("v-if",!0)])):p("v-if",!0)])])}var hw={class:"container paper-page admin-page"},mw={class:"admin-summary"},vw={class:"summary-total"},gw={class:"summary-meta"},yw=["aria-pressed"],bw={class:"count"},ww=["aria-pressed"],kw={class:"count"},Ew=["aria-pressed"],Cw={class:"count"},Sw=["aria-pressed"],_w={class:"count"},Nw=["aria-pressed"],Rw={class:"count"},Dw={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Tw={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},Aw={class:"admin-filter-row"},Ow={class:"search-wrap"},Pw={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Iw={key:0,class:"admin-search-hint"},Vw={class:"admin-filter-inline"},qw={type:"text",class:"form-control form-control-sm",placeholder:"username"},Mw={class:"admin-filter-inline"},Uw={type:"text",class:"form-control form-control-sm",placeholder:"ID"},$w={class:"admin-filter-inline","aria-label":"Pagination"},Lw=["disabled"],Fw={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},Bw=["disabled"],Hw={key:0,class:"admin-filter-row"},zw={class:"admin-active-chips"},jw={class:"key"},Gw=["onClick"],Ww={key:1,class:"bulk-bar"},Kw={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},Yw={class:"paper-table-head",role:"row"},Jw={role:"columnheader",style:{width:"28px"}},Qw=["checked"],Xw={role:"columnheader"},Zw={role:"columnheader"},xw={role:"columnheader",class:"num"},ek={role:"columnheader"},tk={role:"cell",style:{width:"28px"}},nk={type:"checkbox","aria-label":"Select repository"},ok={class:"cell-anon",role:"cell"},sk={class:"anon-text"},ik=["textContent","href"],rk={class:"anon-sub"},ak=["textContent","href"],lk={key:0},dk=["textContent","href"],uk={key:1},ck=["textContent","href"],pk={key:2},fk={class:"cell-status",role:"cell"},hk={class:"status-line"},mk=["textContent"],vk=["textContent","title"],gk={class:"cell-views num",role:"cell"},yk=["textContent"],bk={class:"cell-expires",role:"cell"},wk=["textContent"],kk={class:"cell-actions",role:"cell"},Ek={class:"dropdown"},Ck={class:"dropdown-menu dropdown-menu-right"},Sk=["href"],_k=["href"],Nk=["href"],Rk=["onClick"],Dk=["onClick"],Tk=["onClick"],Ak=["onClick"],Ok=["onClick"],Pk=["onClick"],Ik={key:0,class:"paper-table-empty"},Vk={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},qk={style:{"font-size":"12px",color:"var(--ink-muted)"}},Mk={key:0,class:"pagination-compact"},Uk=["disabled"],$k=["max"],Lk=["disabled"],Fk={class:"admin-filter-inline"},Bk={class:"form-control form-control-sm"};function ql(e,t){let o=ge("field"),i=ge("form");return l(),d("div",hw,[t[69]||(t[69]=fe('
Admin \xA0/\xA0 Repositories

Repositories

',3)),n("div",mw,[n("span",vw,u(e.total>=0?e.fmt.number(e.total):"\u2026"),1),n("span",gw,u(e.fmt?.humanFileSize(e.totalSize))+" on disk",1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[18]||(t[18]=v("Ready ",-1)),n("span",bw,u(e.fmt?.number(e.statusCountFor("ready"))),1)],10,yw),n("button",{type:"button",class:P(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[19]||(t[19]=v("Preparing ",-1)),n("span",kw,u(e.fmt?.number(e.statusCountFor("preparing")+e.statusCountFor("download"))),1)],10,ww),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[20]||(t[20]=v("Errored ",-1)),n("span",Cw,u(e.fmt?.number(e.statusCountFor("error"))),1)],10,Ew),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[21]||(t[21]=v("Expired ",-1)),n("span",_w,u(e.fmt?.number(e.statusCountFor("expired")+e.statusCountFor("expiring"))),1)],10,Sw),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[22]||(t[22]=v("Removed ",-1)),n("span",Rw,u(e.fmt?.number(e.statusCountFor("removed")+e.statusCountFor("removing"))),1)],10,Nw)]),e.fetchError?(l(),d("div",Dw,[t[23]||(t[23]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fetchError),1)])):p("v-if",!0),D((l(),d("form",Tw,[p(" Row 1: search + scoped inputs + headline actions "),n("div",Aw,[n("div",Ow,[D(n("input",Pw,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",Iw,"/"))]),n("span",Vw,[t[24]||(t[24]=n("label",null,"Owner",-1)),D(n("input",qw,null,512),[[o,{state:e.viewState,set:s=>{e.query.owner=s},value:e.query?.owner,form:null,options:{}}]])]),n("span",Mw,[t[25]||(t[25]=n("label",null,"Conference",-1)),D(n("input",Uw,null,512),[[o,{state:e.viewState,set:s=>{e.query.conference=s},value:e.query?.conference,form:null,options:{}}]])]),t[29]||(t[29]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])]),n("span",$w,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,Lw),n("span",Fw,u(e.query?.page)+"/"+u(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Bw)])]),p(" Row 2: appears only when there are active filter chips "),e.chips?.length?(l(),d("div",Hw,[n("div",zw,[(l(!0),d(K,null,te(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",jw,u(s?.label),1),n("span",null,u(s?.value),1),n("button",{type:"button","aria-label":"Remove filter",onClick:a=>e.clearFilter(s.key)},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,Gw)]))),128))])])):p("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",Ww,[n("span",null,[n("strong",null,u(e.selectedCount()),1),t[31]||(t[31]=v(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[8]||(t[8]=s=>e.bulkRefresh())},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[9]||(t[9]=s=>e.bulkRemoveCache())},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[10]||(t[10]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),n("div",Kw,[n("div",Yw,[n("div",Jw,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[11]||(t[11]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,Qw)]),n("div",Xw,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[12]||(t[12]=s=>e.sortBy("source.repositoryName"))},[t[35]||(t[35]=v("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",Zw,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[13]||(t[13]=s=>e.sortBy("status"))},[t[37]||(t[37]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[36]||(t[36]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",xw,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[14]||(t[14]=s=>e.sortBy("pageView"))},[t[39]||(t[39]=v("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[38]||(t[38]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",ek,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[15]||(t[15]=s=>e.sortBy("anonymizeDate"))},[t[41]||(t[41]=v("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[40]||(t[40]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[42]||(t[42]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,te(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",tk,[D(n("input",nk,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",ok,[t[47]||(t[47]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",sk,[n("a",{class:"repo-name",target:"_blank",textContent:u(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,ik),n("div",rk,[n("a",{textContent:u(s?.source?.repositoryName),href:e.safeUrl("https://github.com/"+s?.source?.repositoryName+"/")},null,8,ak),s?.options?.update?(l(),d("span",lk,[t[43]||(t[43]=v("\xA0\xB7\xA0",-1)),n("a",{textContent:u(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,dk)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",uk,[t[44]||(t[44]=v("\xA0\xB7\xA0@",-1)),n("a",{textContent:u(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,ck)])),s?.conference?(l(),d("span",pk,[t[45]||(t[45]=v("\xA0\xB7\xA0",-1)),t[46]||(t[46]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),v(" "+u(s?.conference),1)])):p("v-if",!0),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.humanFileSize(s?.size?.storage)),1),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.number(s?.options?.terms?.length))+" "+u(s?.options?.terms?.length===1?"term":"terms"),1)])])]),n("div",fk,[n("span",hk,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,mk)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:u(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,vk)):p("v-if",!0)]),n("div",gk,[t[48]||(t[48]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[49]||(t[49]=v()),n("span",{textContent:u(e.fmt?.number(s?.pageView||0))},null,8,yk)]),n("div",bk,[t[50]||(t[50]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[51]||(t[51]=v()),n("span",{textContent:u(e.fmt?.humanTime(s?.anonymizeDate))},null,8,wk)]),n("div",kk,[n("div",Ek,[t[63]||(t[63]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",Ck,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[52]||(t[52]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit",-1)])],8,Sk),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[53]||(t[53]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View repo",-1)])],8,_k),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[54]||(t[54]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),v(" View page",-1)])],8,Nk)):p("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.fetchGithubInfo(s),["prevent"])},[...t[55]||(t[55]=[n("i",{class:"fab fa-github"},null,-1),v(" Live GitHub info",-1)])],8,Rk),t[61]||(t[61]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.updateRepository(s),["prevent"])},[...t[56]||(t[56]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force update",-1)])],8,Dk),[[W,s?.status=="ready"||s?.status=="error"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.updateRepository(s),["prevent"])},[...t[57]||(t[57]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Enable",-1)])],8,Tk),[[W,s?.status=="removed"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.showStatusMessage(s),["prevent"])},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),v(" View status message",-1)])],8,Ak),[[W,s?.statusMessage]]),t[62]||(t[62]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.removeCache(s),["prevent"])},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])],8,Ok),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ae(a=>e.removeRepository(s),["prevent"])},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,Pk),[[W,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",Ik,[...t[64]||(t[64]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)]),n("div",Vk,[n("span",qk,u(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",Mk,[n("button",{class:"btn btn-sm",onClick:t[16]||(t[16]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[65]||(t[65]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),v(" Previous ",-1)])],8,Uk),D(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},"aria-label":"Page",max:e.totalPage},null,8,$k),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+u(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[17]||(t[17]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[66]||(t[66]=[v(" Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Lk)])):p("v-if",!0),n("span",Fk,[t[68]||(t[68]=n("label",null,"Per page",-1)),D((l(),d("select",Bk,[...t[67]||(t[67]=[fe('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var Hk={class:"container paper-page admin-page"},zk={class:"paper-crumbs"},jk={class:"here"},Gk={class:"paper-page-title"},Wk={key:0,class:"user-detail-card"},Kk={class:"user-header"},Yk=["src"],Jk={class:"status-dot-wrap"},Qk=["textContent"],Xk={key:0,class:"type-badge type-repo"},Zk={class:"user-actions",style:{"margin-top":"4px"}},xk={class:"user-detail-grid"},e0={class:"detail-value"},t0={class:"detail-value"},n0={key:0,class:"detail-value",style:{"font-family":"var(--font-mono)","font-size":"0.85rem"}},o0={key:1,class:"detail-value text-muted"},s0={class:"detail-value"},i0=["href"],r0={class:"detail-value"},a0={class:"detail-value"},l0={key:0},d0={key:1,class:"text-muted"},u0={class:"detail-value"},c0={key:0,style:{"margin-top":"20px"}},p0={class:"paper-table w-100",style:{"margin-top":"10px"}},f0={class:"paper-table-row",style:{"grid-template-columns":"1fr 160px"}},h0={class:"cell-anon",role:"cell"},m0={class:"anon-text"},v0=["textContent"],g0={class:"cell-expires",role:"cell"},y0={key:1,class:"admin-section-header"},b0={class:"section-count"},w0={key:2,class:"user-detail-card"},k0={type:"text",class:"form-control",placeholder:"Token name (e.g. dev-laptop)",required:""},E0={key:0,class:"alert alert-warning",role:"alert"},C0={style:{"white-space":"pre-wrap","word-break":"break-all",margin:"8px 0 0","font-family":"var(--font-mono)","font-size":"0.85rem"}},S0={key:1,class:"paper-table w-100"},_0={class:"paper-table-row",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},N0=["textContent"],R0=["textContent"],D0={role:"cell"},T0={key:0},A0={key:1,class:"text-muted"},O0={role:"cell"},P0=["onClick"],I0={key:2,class:"paper-table-empty"},V0={class:"admin-section-header"},q0={class:"section-count"},M0={class:"admin-summary"},U0={class:"summary-total"},$0=["aria-pressed"],L0={class:"count"},F0=["aria-pressed"],B0={class:"count"},H0=["aria-pressed"],z0={class:"count"},j0=["aria-pressed"],G0={class:"count"},W0=["aria-pressed"],K0={class:"count"},Y0={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},J0={class:"admin-filter-row"},Q0={class:"search-wrap"},X0={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Z0={key:3,class:"bulk-bar"},x0={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},eE={class:"paper-table-head",role:"row"},tE={role:"columnheader",style:{width:"28px"}},nE=["checked"],oE={role:"columnheader"},sE={role:"columnheader"},iE={role:"columnheader",class:"num"},rE={role:"columnheader"},aE={role:"cell",style:{width:"28px"}},lE={type:"checkbox","aria-label":"Select repository"},dE={class:"cell-anon",role:"cell"},uE={class:"anon-text"},cE=["textContent","href"],pE={class:"anon-sub"},fE=["textContent","href"],hE={key:0},mE=["textContent","href"],vE={key:1},gE=["textContent","href"],yE={key:2},bE={class:"cell-status",role:"cell"},wE={class:"status-line"},kE=["textContent"],EE=["textContent","title"],CE=["textContent"],SE=["textContent"],_E={class:"cell-actions",role:"cell"},NE={class:"dropdown"},RE={class:"dropdown-menu dropdown-menu-right"},DE=["href"],TE=["href"],AE=["href"],OE=["onClick"],PE=["onClick"],IE=["onClick"],VE=["onClick"],qE=["onClick"],ME=["onClick"],UE={key:0,class:"paper-table-empty"};function Ml(e,t){let o=ge("field"),i=ge("form");return l(),d("div",Hk,[n("div",zk,[t[22]||(t[22]=n("a",{href:"/admin/"},"Admin",-1)),t[23]||(t[23]=v(" \xA0/\xA0 ",-1)),t[24]||(t[24]=n("a",{href:"/admin/users"},"Users",-1)),t[25]||(t[25]=v(" \xA0/\xA0 ",-1)),n("span",jk,u(e.userInfo?.username||"Profile"),1)]),n("h1",Gk,u(e.userInfo?.username||"User"),1),t[87]||(t[87]=fe('',1)),e.userInfo?(l(),d("div",Wk,[n("div",Kk,[e.userInfo?.photo?(l(),d("img",{key:0,width:"56",height:"56",src:e.safeUrl(e.userInfo?.photo)},null,8,Yk)):p("v-if",!0),n("div",null,[n("h2",null,[v(u(e.userInfo?.username)+" ",1),n("span",Jk,[n("span",{class:P(["status-dot",{"status-ready":e.userInfo?.status=="active","status-removed":e.userInfo?.status!="active"}])},null,2),n("span",{textContent:u(e.fmt?.title(e.userInfo?.status))},null,8,Qk)]),e.userInfo?.isAdmin?(l(),d("span",Xk,"Admin")):p("v-if",!0)]),n("div",Zk,[e.userInfo?.status!=="banned"?(l(),d("button",{key:0,class:"btn btn-sm text-danger",onClick:t[0]||(t[0]=s=>e.banUser())},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),v(" Ban",-1)])])):p("v-if",!0),e.userInfo?.status==="banned"||e.userInfo?.status==="removed"?(l(),d("button",{key:1,class:"btn btn-sm",onClick:t[1]||(t[1]=s=>e.activateUser())},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Activate",-1)])])):p("v-if",!0),e.userInfo?.isAdmin?p("v-if",!0):(l(),d("button",{key:2,class:"btn btn-sm",onClick:t[2]||(t[2]=s=>e.promoteUser())},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-shield"})],-1),v(" Promote to admin",-1)])])),e.userInfo?.isAdmin?(l(),d("button",{key:3,class:"btn btn-sm text-danger",onClick:t[3]||(t[3]=s=>e.demoteUser())},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-minus"})],-1),v(" Remove admin",-1)])])):p("v-if",!0)])])]),n("div",xk,[t[32]||(t[32]=n("div",{class:"detail-label"},"ID",-1)),n("div",e0,u(e.userInfo?._id),1),t[33]||(t[33]=n("div",{class:"detail-label"},"Email",-1)),n("div",t0,u(e.userInfo?.emails?.[0]?.email),1),t[34]||(t[34]=n("div",{class:"detail-label"},"Access token",-1)),e.userInfo?.accessTokens?.github?(l(),d("div",n0,u(e.userInfo?.accessTokens?.github),1)):p("v-if",!0),e.userInfo?.accessTokens?.github?p("v-if",!0):(l(),d("div",o0,"None stored")),t[35]||(t[35]=n("div",{class:"detail-label"},"GitHub",-1)),n("div",s0,[n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+e.userInfo?.username)},[t[30]||(t[30]=n("i",{class:"fab fa-github"},null,-1)),v(" "+u(e.userInfo?.username),1)],8,i0)]),t[36]||(t[36]=n("div",{class:"detail-label"},"Created",-1)),n("div",r0,u(e.fmt?.humanTime(e.userInfo?.dateOfEntry)),1),t[37]||(t[37]=n("div",{class:"detail-label"},"Last connection",-1)),n("div",a0,[e.userInfo?.accessTokenDates?.github?(l(),d("span",l0,u(e.fmt?.humanTime(e.userInfo?.accessTokenDates?.github)),1)):p("v-if",!0),e.userInfo?.accessTokenDates?.github?p("v-if",!0):(l(),d("span",d0,"never"))]),t[38]||(t[38]=n("div",{class:"detail-label"},"GitHub repos",-1)),n("div",u0,[v(u(e.userInfo?.repositories?.length)+" repositories ",1),n("button",{class:"btn btn-sm ml-2",onClick:t[4]||(t[4]=s=>e.showRepos=!e.showRepos)},u(e.showRepos?"Hide":"Show"),1),n("button",{class:"btn btn-sm ml-1",onClick:t[5]||(t[5]=s=>e.getGitHubRepositories())},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Refresh ",-1)])])])]),e.showRepos?(l(),d("div",c0,[t[41]||(t[41]=n("div",{class:"paper-section-eyebrow"},"GitHub repositories",-1)),n("div",p0,[(l(!0),d(K,null,te(e.userInfo?.repositories,(s,r)=>(l(),d("div",f0,[n("div",h0,[t[39]||(t[39]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",m0,[n("span",{class:"repo-name",textContent:u(s?.name)},null,8,v0)])]),n("div",g0,[t[40]||(t[40]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-database"})],-1)),v(" "+u(e.fmt?.humanFileSize(s?.size)),1)])]))),256))])])):p("v-if",!0)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",y0,[t[42]||(t[42]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),v(" API tokens")],-1)),n("span",b0,u(e.tokens?.length),1)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",w0,[t[48]||(t[48]=n("p",{class:"paper-page-lede"},[v("Personal API tokens for this admin account. Send as "),n("code",null,"Authorization: Bearer "),v(" to authenticate without GitHub OAuth (useful for development).")],-1)),D((l(),d("form",{class:"d-flex",style:{gap:"8px","margin-bottom":"12px"},onSubmit:t[6]||(t[6]=ae(s=>e.submitForm(s,()=>{e.createToken()}),["prevent"]))},[D(n("input",k0,null,512),[[o,{state:e.viewState,set:s=>{e.tokenForm.name=s},value:e.tokenForm?.name,form:null,options:{}}]]),t[43]||(t[43]=n("button",{type:"submit",class:"btn btn-ink"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})]),v(" Generate")],-1))],32)),[[i,e.viewState]]),e.tokenForm?.plaintext?(l(),d("div",E0,[t[44]||(t[44]=n("strong",null,"Copy this token now \u2014 it will not be shown again:",-1)),n("pre",C0,u(e.tokenForm?.plaintext),1),n("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=s=>e.tokenForm.plaintext=null)},"Dismiss")])):p("v-if",!0),e.tokens?.length?(l(),d("div",S0,[t[46]||(t[46]=n("div",{class:"paper-table-head",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},[n("div",{role:"columnheader"},"Name"),n("div",{role:"columnheader"},"Created"),n("div",{role:"columnheader"},"Last used"),n("div",{role:"columnheader","aria-label":"Actions"})],-1)),(l(!0),d(K,null,te(e.tokens,(s,r)=>(l(),d("div",_0,[n("div",{role:"cell",textContent:u(s?.name)},null,8,N0),n("div",{role:"cell",textContent:u(e.fmt?.humanTime(s?.createdAt))},null,8,R0),n("div",D0,[s?.lastUsedAt?(l(),d("span",T0,u(e.fmt?.humanTime(s?.lastUsedAt)),1)):p("v-if",!0),s?.lastUsedAt?p("v-if",!0):(l(),d("span",A0,"never"))]),n("div",O0,[n("button",{class:"btn btn-sm text-danger btn-icon",title:"Revoke","aria-label":"Revoke token",onClick:a=>e.revokeToken(s)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,P0)])]))),256))])):p("v-if",!0),e.tokens?.length?p("v-if",!0):(l(),d("div",I0,[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No tokens yet.",-1)])]))])):p("v-if",!0),n("div",V0,[t[49]||(t[49]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})]),v(" Anonymized repositories")],-1)),n("span",q0,u(e.repositories?.length),1)]),n("div",M0,[n("span",U0,u(e.fmt?.number(e.repositories?.length)),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.filters?.status?.ready===!1}]),title:"Toggle ready filter",onClick:t[8]||(t[8]=s=>e.filters.status.ready=!e.filters.status.ready),"aria-pressed":e.filters?.status?.ready===!1},[t[50]||(t[50]=v("Ready ",-1)),n("span",L0,u(e.fmt?.number(e.statusCountFor("ready"))),1)],10,$0),n("button",{type:"button",class:P(["summary-pill warn",{active:e.filters?.status?.preparing===!1}]),title:"Toggle preparing filter",onClick:t[9]||(t[9]=s=>e.filters.status.preparing=!e.filters.status.preparing),"aria-pressed":e.filters?.status?.preparing===!1},[t[51]||(t[51]=v("Preparing ",-1)),n("span",B0,u(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,F0),n("button",{type:"button",class:P(["summary-pill error",{active:e.filters?.status?.error===!1}]),title:"Toggle errored filter",onClick:t[10]||(t[10]=s=>e.filters.status.error=!e.filters.status.error),"aria-pressed":e.filters?.status?.error===!1},[t[52]||(t[52]=v("Errored ",-1)),n("span",z0,u(e.fmt?.number(e.statusCountFor("error"))),1)],10,H0),n("button",{type:"button",class:P(["summary-pill",{active:e.filters?.status?.expired===!1}]),title:"Toggle expired filter",onClick:t[11]||(t[11]=s=>e.filters.status.expired=!e.filters.status.expired),"aria-pressed":e.filters?.status?.expired===!1},[t[53]||(t[53]=v("Expired ",-1)),n("span",G0,u(e.fmt?.number(e.statusCountFor("expired"))),1)],10,j0),n("button",{type:"button",class:P(["summary-pill",{active:e.filters?.status?.removed===!1}]),title:"Toggle removed filter",onClick:t[12]||(t[12]=s=>e.filters.status.removed=!e.filters.status.removed),"aria-pressed":e.filters?.status?.removed===!1},[t[54]||(t[54]=v("Removed ",-1)),n("span",K0,u(e.fmt?.number(e.statusCountFor("removed"))),1)],10,W0)]),D((l(),d("form",Y0,[n("div",J0,[n("div",Q0,[D(n("input",X0,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),t[56]||(t[56]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[13]||(t[13]=s=>e.exportCsv())},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])])])])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",Z0,[n("span",null,[n("strong",null,u(e.selectedCount()),1),t[57]||(t[57]=v(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[14]||(t[14]=s=>e.bulkRefresh())},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[15]||(t[15]=s=>e.bulkRemoveCache())},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[16]||(t[16]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),n("div",x0,[n("div",eE,[n("div",tE,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[17]||(t[17]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,nE)]),n("div",oE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[18]||(t[18]=s=>e.sortBy("source.repositoryName"))},[t[61]||(t[61]=v("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[60]||(t[60]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",sE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[19]||(t[19]=s=>e.sortBy("status"))},[t[63]||(t[63]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[62]||(t[62]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",iE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[20]||(t[20]=s=>e.sortBy("pageView"))},[t[65]||(t[65]=v("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[64]||(t[64]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",rE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[21]||(t[21]=s=>e.sortBy("anonymizeDate"))},[t[67]||(t[67]=v("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[66]||(t[66]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[68]||(t[68]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,te(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",aE,[D(n("input",lE,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",dE,[t[73]||(t[73]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",uE,[n("a",{class:"repo-name",target:"_blank",textContent:u(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,cE),n("div",pE,[n("a",{textContent:u(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,fE),s?.options?.update?(l(),d("span",hE,[t[69]||(t[69]=v("\xA0\xB7\xA0",-1)),n("a",{textContent:u(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,mE)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",vE,[t[70]||(t[70]=v("\xA0\xB7\xA0@",-1)),n("a",{textContent:u(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,gE)])),s?.conference?(l(),d("span",yE,[t[71]||(t[71]=v("\xA0\xB7\xA0",-1)),t[72]||(t[72]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),v(" "+u(s?.conference),1)])):p("v-if",!0),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.humanFileSize(s?.size?.storage)),1),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.number(s?.options?.terms?.length))+" "+u(s?.options?.terms?.length===1?"term":"terms"),1)])])]),n("div",bE,[n("span",wE,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,kE)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:u(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,EE)):p("v-if",!0)]),n("div",{class:"cell-views num",role:"cell",textContent:u(e.fmt?.number(s?.pageView||0))},null,8,CE),n("div",{class:"cell-expires",role:"cell",textContent:u(e.fmt?.humanTime(s?.anonymizeDate))},null,8,SE),n("div",_E,[n("div",NE,[t[85]||(t[85]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",RE,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[74]||(t[74]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit",-1)])],8,DE),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[75]||(t[75]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View repo",-1)])],8,TE),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[76]||(t[76]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),v(" View page",-1)])],8,AE)):p("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.fetchGithubInfo(s),["prevent"])},[...t[77]||(t[77]=[n("i",{class:"fab fa-github"},null,-1),v(" Live GitHub info",-1)])],8,OE),t[83]||(t[83]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.updateRepository(s),["prevent"])},[...t[78]||(t[78]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force update",-1)])],8,PE),[[W,s?.status=="ready"||s?.status=="error"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.updateRepository(s),["prevent"])},[...t[79]||(t[79]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Enable",-1)])],8,IE),[[W,s?.status=="removed"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.showStatusMessage(s),["prevent"])},[...t[80]||(t[80]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),v(" View status message",-1)])],8,VE),[[W,s?.statusMessage]]),t[84]||(t[84]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.removeCache(s),["prevent"])},[...t[81]||(t[81]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])],8,qE),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ae(a=>e.removeRepository(s),["prevent"])},[...t[82]||(t[82]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,ME),[[W,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",UE,[...t[86]||(t[86]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)])])}var $E={class:"container paper-page admin-page"},LE={class:"admin-summary"},FE={class:"summary-total"},BE=["aria-pressed"],HE={class:"count"},zE=["aria-pressed"],jE={class:"count"},GE=["aria-pressed"],WE={class:"count"},KE={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},YE={class:"w-100 admin-filter-toolbar","aria-label":"Users","accept-charset":"UTF-8"},JE={class:"admin-filter-row"},QE={class:"search-wrap"},XE={type:"search",class:"form-control","aria-label":"Search users",placeholder:"Search username or email\u2026",autocomplete:"off"},ZE={key:0,class:"admin-search-hint"},xE={class:"admin-filter-inline"},eC={class:"form-control form-control-sm"},tC={class:"admin-filter-inline","aria-label":"Pagination"},nC=["disabled"],oC={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},sC=["disabled"],iC={key:0,class:"admin-filter-row"},rC={class:"admin-active-chips"},aC={class:"key"},lC=["onClick"],dC={key:1,class:"bulk-bar"},uC={class:"paper-table w-100",role:"table","aria-label":"Users",style:{"--cols":"28px minmax(280px, 2.4fr) 100px 140px 140px 52px"}},cC={class:"paper-table-head admin-users-row",role:"row"},pC={role:"columnheader",style:{width:"28px"}},fC=["checked"],hC={role:"columnheader"},mC={role:"columnheader"},vC={role:"cell",style:{width:"28px"}},gC={type:"checkbox","aria-label":"Select user"},yC={class:"cell-anon",role:"cell"},bC=["src"],wC={class:"anon-text"},kC=["textContent","href"],EC={class:"anon-sub"},CC={key:0},SC=["href"],_C={key:1},NC={class:"cell-views num",role:"cell"},RC=["textContent","href"],DC={class:"cell-status",role:"cell"},TC=["textContent"],AC={class:"cell-status",role:"cell"},OC={key:0,class:"type-badge type-repo"},PC={key:1,class:"empty-dash"},IC={class:"cell-actions",role:"cell"},VC={class:"dropdown"},qC={class:"dropdown-menu dropdown-menu-right"},MC=["href"],UC=["href"],$C=["onClick"],LC=["onClick"],FC={key:0,class:"paper-table-empty"},BC={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},HC={style:{"font-size":"12px",color:"var(--ink-muted)"}},zC={key:0,class:"pagination-compact"},jC=["disabled"],GC=["max"],WC=["disabled"],KC={class:"admin-filter-inline"},YC={class:"form-control form-control-sm"};function Ul(e,t){let o=ge("field"),i=ge("form");return l(),d("div",$E,[t[46]||(t[46]=fe('
Admin \xA0/\xA0 Users

Users

',3)),n("div",LE,[n("span",FE,u(e.total>=0?e.fmt.number(e.total):"\u2026"),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.status=="active"}]),onClick:t[0]||(t[0]=s=>{e.query.status=e.query.status=="active"?"":"active",e.query.page=1}),"aria-pressed":e.query?.status=="active"},[t[13]||(t[13]=v("Active ",-1)),n("span",HE,u(e.fmt?.number(e.statusCountFor("active"))),1)],10,BE),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.status=="banned"}]),onClick:t[1]||(t[1]=s=>{e.query.status=e.query.status=="banned"?"":"banned",e.query.page=1}),"aria-pressed":e.query?.status=="banned"},[t[14]||(t[14]=v("Banned ",-1)),n("span",jE,u(e.fmt?.number(e.statusCountFor("banned"))),1)],10,zE),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.status=="removed"}]),onClick:t[2]||(t[2]=s=>{e.query.status=e.query.status=="removed"?"":"removed",e.query.page=1}),"aria-pressed":e.query?.status=="removed"},[t[15]||(t[15]=v("Removed ",-1)),n("span",WE,u(e.fmt?.number(e.statusCountFor("removed"))),1)],10,GE)]),e.fetchError?(l(),d("div",KE,[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fetchError),1)])):p("v-if",!0),D((l(),d("form",YE,[n("div",JE,[n("div",QE,[D(n("input",XE,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",ZE,"/"))]),n("span",xE,[t[18]||(t[18]=n("label",null,"Role",-1)),D((l(),d("select",eC,[...t[17]||(t[17]=[n("option",{value:""},"Any",-1),n("option",{value:"admin"},"Admin",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.role=s},value:e.query?.role,form:null,options:{}}]])]),t[22]||(t[22]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",onClick:t[3]||(t[3]=s=>e.exportCsv())},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])]),n("span",tC,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[4]||(t[4]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,nC),n("span",oC,u(e.query?.page)+"/"+u(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[5]||(t[5]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,sC)])]),e.chips?.length?(l(),d("div",iC,[n("div",rC,[(l(!0),d(K,null,te(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",aC,u(s?.label),1),n("span",null,u(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,lC)]))),128))])])):p("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",dC,[n("span",null,[n("strong",null,u(e.selectedCount()),1),t[24]||(t[24]=v(" selected",-1))]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[6]||(t[6]=s=>e.bulkBan())},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),v(" Ban",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>{e.selected={},e.allSelected=!1})},"Clear")])):p("v-if",!0),n("div",uC,[n("div",cC,[n("div",pC,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[8]||(t[8]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,fC)]),n("div",hC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="username"}]),onClick:t[9]||(t[9]=s=>e.sortBy("username"))},[t[27]||(t[27]=v("User ",-1)),e.sortIcon("username")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("username")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=n("div",{role:"columnheader",class:"num"},"Repos",-1)),n("div",mC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[10]||(t[10]=s=>e.sortBy("status"))},[t[29]||(t[29]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=n("div",{role:"columnheader"},"Role",-1)),t[32]||(t[32]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,te(e.filteredUsers,(s,r)=>(l(),d("div",{class:P(["paper-table-row admin-users-row",{"row-selected":e.selected[s?.username]}]),role:"row"},[n("div",vC,[D(n("input",gC,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.username]=a},value:e.selected[s?.username],form:null,options:{}}]])]),n("div",yC,[s?.photo?(l(),d("img",{key:0,width:"28",height:"28",class:"rounded-circle",style:{"flex-shrink":"0"},src:e.safeUrl(s?.photo)},null,8,bC)):p("v-if",!0),n("div",wC,[n("a",{class:"repo-name",textContent:u(s?.username),href:e.safeUrl("/admin/users/"+s?.username)},null,8,kC),n("div",EC,[s?.emails?.[0]?.email?(l(),d("span",CC,u(s?.emails?.[0]?.email)+" \xB7 ",1)):p("v-if",!0),n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+s?.username)},[t[33]||(t[33]=n("i",{class:"fab fa-github"},null,-1)),v(" "+u(s?.username),1)],8,SC),s?.dateOfEntry?(l(),d("span",_C,"\xA0\xB7\xA0Joined "+u(e.fmt?.humanTime(s?.dateOfEntry)),1)):p("v-if",!0)])])]),n("div",NC,[t[34]||(t[34]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:"Show this user's repositories",textContent:u(e.fmt?.number(s?.repoCount||0)),href:e.safeUrl("/admin/repositories?owner="+s?.username)},null,8,RC)]),n("div",DC,[n("span",{class:P(["status-dot",{"status-ready":s?.status=="active","status-removed":s?.status=="removed"||s?.status=="banned"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,TC)]),n("div",AC,[s?.isAdmin?(l(),d("span",OC,"Admin")):p("v-if",!0),s?.isAdmin?p("v-if",!0):(l(),d("span",PC,"\u2014"))]),n("div",IC,[n("div",VC,[t[40]||(t[40]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",qC,[n("a",{class:"dropdown-item",href:e.safeUrl("/admin/users/"+s?.username)},[...t[35]||(t[35]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View details",-1)])],8,MC),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/repositories?owner="+s?.username)},[...t[36]||(t[36]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),v(" View repositories",-1)])],8,UC),t[39]||(t[39]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ae(a=>e.banUser(s),["prevent"])},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),v(" Ban",-1)])],8,$C),[[W,s?.status=="active"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.activateUser(s),["prevent"])},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Activate",-1)])],8,LC),[[W,s?.status=="removed"||s?.status=="banned"]])])])])],2))),256)),e.filteredUsers?.length==0?(l(),d("div",FC,[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No users match the current filters.",-1)])])):p("v-if",!0)]),n("div",BC,[n("span",HC,u(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",zC,[n("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),v(" Previous",-1)])],8,jC),D(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,GC),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+u(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[43]||(t[43]=[v("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,WC)])):p("v-if",!0),n("span",KC,[t[45]||(t[45]=n("label",null,"Per page",-1)),D((l(),d("select",YC,[...t[44]||(t[44]=[n("option",{value:"10"},"10",-1),n("option",{value:"25"},"25",-1),n("option",{value:"50"},"50",-1),n("option",{value:"100"},"100",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var JC={class:"anonymize-landing"},QC={class:"anonymize-landing-inner"},XC={class:"form-group mt-4 mb-2"},ZC={class:"source-url-label-row"},xC={key:0,class:"repo-access","aria-label":"GitHub access"},e2={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},t2=["aria-pressed","disabled"],n2=["aria-pressed","disabled"],o2={key:1,class:"connection-badge"},s2={id:"sourceUrl-landing",type:"text",class:"form-control form-control-lg",placeholder:"https://github.com/owner/repository"},i2={key:0,class:"draft-status",role:"status"},r2={key:1,class:"text-danger",role:"alert"},a2={key:2,class:"repo-access-details","aria-label":"GitHub access"},l2={class:"repo-access-main"},d2={class:"repo-access-controls"},u2={key:1,class:"connection-link",href:"/connections"},c2={class:"repo-access-note"},p2={key:0},f2={class:"anonymize-workspace"},h2={class:"anonymize-topbar"},m2={class:"anonymize-topbar-inner"},v2={class:"anonymize-topbar-head"},g2={class:"paper-page-title anonymize-topbar-title"},y2={key:0},b2={key:1},w2={key:0,class:"alert alert-info",role:"status"},k2={key:1,class:"alert alert-info",role:"status"},E2={key:1},C2={class:"anonymize-mobile-tabs",role:"tablist","aria-label":"Anonymization workspace"},S2=["aria-selected","tabindex"],_2=["aria-selected","tabindex"],N2={key:2,class:"anonymize-preview-empty",id:"workspace-preview",role:"status"},R2={class:"anonymize-split"},D2=["role","aria-labelledby"],T2={class:"form needs-validation paper-settings-main",name:"anonymize",novalidate:""},A2={class:"anonymize-fields"},O2={class:"paper-settings-section"},P2={class:"form-group"},I2={class:"source-url-label-row"},V2={key:0,class:"repo-access","aria-label":"GitHub access"},q2={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},M2=["aria-pressed","disabled"],U2=["aria-pressed","disabled"],$2={key:1,class:"connection-badge"},L2=["disabled"],F2={class:"invalid-feedback"},B2={class:"invalid-feedback"},H2={class:"invalid-feedback"},z2={class:"invalid-feedback"},j2={key:0,class:"repo-access-details","aria-label":"Previous repository configuration"},G2={key:0,class:"form-group"},W2=["value"],K2={key:1},Y2={class:"repo-access-controls"},J2=["href"],Q2={key:1,class:"repo-access-details","aria-label":"GitHub access"},X2={class:"repo-access-main"},Z2={class:"repo-access-controls"},x2={key:1,class:"connection-link",href:"/connections"},eS={class:"repo-access-note"},tS={key:0},nS={key:2,class:"repo-access-details"},oS=["disabled"],sS={key:0,role:"status"},iS={key:3,class:"repo-access-details"},rS={key:0,role:"status"},aS={key:4,class:"form-grid-2"},lS={class:"form-group"},dS={class:"input-group"},uS={class:"form-control",id:"branch",name:"branch"},cS=["textContent","value"],pS={class:"input-group-append"},fS={class:"form-group"},hS=["disabled"],mS={class:"invalid-feedback"},vS={class:"invalid-feedback"},gS={class:"form-check"},yS={class:"form-check-input",type:"checkbox",id:"update",name:"update"},bS={class:"paper-settings-section"},wS={class:"form-group"},kS=["disabled"],ES={class:"form-text text-muted"},CS={class:"invalid-feedback"},SS={class:"form-group"},_S=["disabled"],NS={class:"form-text text-muted"},RS={class:"invalid-feedback"},DS={class:"form-group"},TS=["disabled"],AS={class:"form-text text-muted"},OS={class:"invalid-feedback"},PS={class:"form-group"},IS={class:"redaction-syntax"},VS={class:"form-text text-muted"},qS={class:"warning-feedback"},MS={class:"invalid-feedback"},US={class:"paper-settings-section"},$S={class:"form-check"},LS={class:"form-check-input",type:"checkbox",id:"link",name:"link"},FS={class:"form-check"},BS={class:"form-check-input",type:"checkbox",id:"image",name:"image"},HS={class:"form-check"},zS={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},jS={class:"form-check"},GS={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},WS={class:"form-check"},KS=["disabled"],YS={key:0,class:"form-text text-muted"},JS={key:1,class:"form-text text-muted"},QS={key:0,class:"form-text text-muted"},XS={class:"form-check"},ZS={class:"form-check-input",type:"checkbox",id:"title-gist",name:"title-gist"},xS={class:"form-check"},e_={class:"form-check-input",type:"checkbox",id:"content-gist",name:"content-gist"},t_={class:"form-check"},n_={class:"form-check-input",type:"checkbox",id:"comments-gist",name:"comments-gist"},o_={class:"form-check"},s_={class:"form-check-input",type:"checkbox",id:"username-gist",name:"username-gist"},i_={class:"form-check"},r_={class:"form-check-input",type:"checkbox",id:"date-gist",name:"date-gist"},a_={class:"form-check"},l_={class:"form-check-input",type:"checkbox",id:"origin-gist",name:"origin-gist"},d_={class:"form-check"},u_={class:"form-check-input",type:"checkbox",id:"title",name:"title"},c_={class:"form-check"},p_={class:"form-check-input",type:"checkbox",id:"body",name:"body"},f_={class:"form-check"},h_={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},m_={class:"form-check"},v_={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},g_={class:"form-check"},y_={class:"form-check-input",type:"checkbox",id:"username",name:"username"},b_={class:"form-check"},w_={class:"form-check-input",type:"checkbox",id:"date",name:"date"},k_={class:"form-check"},E_={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},C_={class:"paper-settings-section hosting-settings",id:"repository-hosting","aria-labelledby":"hosting-heading"},S_={key:0,class:"hosting-usage"},__={key:0},N_={key:1},R_={key:2},D_={key:3},T_={class:"expiration-choices"},A_={class:"expiration-choice"},O_=["checked","disabled"],P_={key:0,class:"dated-options"},I_={key:0,class:"hosting-date"},V_=["min","max"],q_={class:"invalid-feedback"},M_={class:"invalid-feedback"},U_={class:"hosting-property"},$_={key:1,class:"expiration-choice"},L_=["checked","disabled"],F_={key:0},B_={key:1,class:"form-text text-muted"},H_={class:"form-group conference-field"},z_={class:"form-text text-muted"},j_=["href"],G_={class:"invalid-feedback"},W_={class:"form-text text-muted"},K_={key:2,class:"inline-hosting"},Y_={key:0,role:"alert",class:"text-danger"},J_={key:1,role:"alert",class:"text-danger"},Q_=["disabled"],X_={key:2,role:"status"},Z_={key:3,role:"status",class:"form-text text-muted"},x_={key:0,class:"capacity-reason"},eN={key:1,class:"subscription-choice"},tN={class:"billing-cycle"},nN=["value","checked","onChange"],oN={class:"hosting-terms"},sN={key:2,role:"status"},iN={key:3,class:"capacity-options"},rN=["disabled"],aN={key:5,class:"hosting-terms"},lN={key:6,class:"repository-pass"},dN=["disabled"],uN={class:"paper-settings-section"},cN={class:"form-group"},pN={style:{position:"relative"}},fN={type:"text",id:"coauthorSearch",class:"form-control",placeholder:"Search GitHub username\u2026",autocomplete:"off"},hN={class:"dropdown-menu show",style:{display:"block","max-height":"220px","overflow-y":"auto",width:"100%"}},mN=["onClick"],vN=["src"],gN=["textContent"],yN=["textContent"],bN={class:"coauthor-list"},wN={class:"coauthor-row d-flex align-items-center",style:{padding:"6px 0",gap:"8px"}},kN=["src"],EN=["textContent","href"],CN=["onClick"],SN={class:"form-text text-muted"},_N=["textContent"],NN={key:1,class:"draft-status",role:"status"},RN={key:2,class:"draft-status"},DN={class:"anonymize-submit-bar"},TN=["disabled"],AN=["disabled"],ON={key:2,class:"checkout-return-note"},PN=["disabled"],IN=["disabled"],VN=["disabled"],qN=["disabled"],MN=["role","aria-labelledby"],UN={class:"anonymize-preview-head"},$N={key:0,class:"anonymize-preview-status",role:"status"},LN={key:1,class:"anonymize-preview-status",role:"status"},FN={key:2,class:"anonymize-preview-status",role:"alert"},BN={key:3,class:"anonymize-preview-status"},HN=["innerHTML"],zN=["role","aria-labelledby"],jN={class:"anonymize-preview-head"},GN={key:0,class:"anonymize-preview-status",role:"status"},WN={key:1,class:"anonymize-preview-status",role:"status"},KN={key:2,class:"anonymize-preview-status",role:"alert"},YN={key:3,class:"anonymize-preview-body"},JN={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},QN={class:"pr-title mb-1"},XN={key:0},ZN=["textContent"],xN={key:0},eR={key:1},tR={key:2},nR={class:"pr-comments mt-3"},oR={class:"pr-comment"},sR={class:"pr-comment-head"},iR=["textContent"],rR={key:0,class:"pr-comment-date"},aR={key:3},lR={class:"pr-comments"},dR={class:"pr-comment"},uR={class:"pr-comment-head"},cR={key:0,class:"pr-comment-author"},pR=["textContent"],fR=["textContent"],hR={key:0,class:"pr-comment-body"},mR=["role","aria-labelledby"],vR={class:"anonymize-preview-head"},gR={key:0,class:"anonymize-preview-status",role:"status"},yR={key:1,class:"anonymize-preview-status",role:"status"},bR={key:2,class:"anonymize-preview-status",role:"alert"},wR={key:3,class:"anonymize-preview-body"},kR={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},ER={class:"pr-title mb-1"},CR={key:0},SR=["textContent"],_R={key:0},NR={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--paper-bg-alt)"}},RR={key:2,class:"paper-tabs",role:"tablist"},DR=["aria-selected","tabindex"],TR=["aria-selected","tabindex"],AR=["textContent"],OR={key:3,class:"anonymize-preview-status"},PR={class:"paper-tab-content"},IR={key:0,role:"tabpanel",id:"preview-pr-diff-panel","aria-labelledby":"preview-pr-diff-tab"},VR=["innerHTML"],qR={key:1,role:"tabpanel",id:"preview-pr-comments-panel","aria-labelledby":"preview-pr-comments-tab"},MR={class:"pr-comments"},UR={class:"pr-comment"},$R={class:"pr-comment-head"},LR={key:0,class:"pr-comment-author"},FR=["textContent"],BR=["textContent"],HR={key:0,class:"pr-comment-body"};function $l(e,t){let o=Ge("gist-file"),i=Ge("markdown"),s=ge("field"),r=ge("form");return l(),d("div",{class:P(["anonymize-page h-100",{"mobile-preview-active":e.mobilePane==="preview","preview-expanded":e.previewExpanded}])},[p(" ===== STATE 1: No URL \u2014 centered input ===== "),D(n("div",JC,[n("div",QC,[t[48]||(t[48]=n("div",{class:"paper-crumbs"},[v("My work \xA0/\xA0 "),n("span",{class:"here"},"New anonymization")],-1)),t[49]||(t[49]=n("h1",{class:"paper-page-title"},[v("New "),n("em",null,"anonymization")],-1)),t[50]||(t[50]=n("p",{class:"paper-page-lede"}," Paste a GitHub repository, pull-request, or gist URL. We\u2019ll fetch it, redact the terms you choose in text files, and give you a share link. Images and PDFs are served unchanged when enabled. Review them before sharing. ",-1)),n("div",XC,[n("div",ZC,[t[44]||(t[44]=n("label",{class:"paper-field-label",for:"sourceUrl-landing"},"Source URL",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",xC,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",e2,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[0]||(t[0]=a=>e.chooseGitHubConnection("github-app"))},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(),n("span",{class:"sr-only"},"Read-only ",-1),v("GitHub App",-1)])],8,t2),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[1]||(t[1]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,n2)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",o2,u((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),D(n("input",s2,null,512),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:null,options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]])]),e.draftRestored?(l(),d("div",i2,[t[45]||(t[45]=v("Your unsaved draft was restored. ",-1)),n("button",{type:"button",class:"draft-discard",onClick:t[2]||(t[2]=a=>e.discardDraft())},"Discard draft")])):p("v-if",!0),e.sourceUrlError?(l(),d("p",r2,u(e.sourceUrlError),1)):p("v-if",!0),t[51]||(t[51]=n("small",{class:"form-text",style:{color:"var(--ink-muted)"}}," Repository, pull request (\u2026/pull/42) and gist (gist.github.com/\u2026) URLs are all accepted. ",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",a2,[n("div",l2,[n("div",d2,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=a=>e.grantGitHubAccess())},[...t[46]||(t[46]=[v("Manage access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",u2,u(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),n("div",c2,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",p2,"Signing in does not grant access to private repositories. Use Manage access to select this repository, then return here. Organization access may require administrator approval.")):p("v-if",!0),t[47]||(t[47]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v(" Anonymized content is public, even from private repositories.")],-1))])])):p("v-if",!0)])],512),[[W,!e.workspaceOpen&&!e.isUpdate]]),p(" ===== STATE 2: URL provided \u2014 form (left) + preview (right) ===== "),D(n("div",f2,[n("header",h2,[n("div",m2,[n("div",v2,[n("h1",g2,[e.isUpdate?p("v-if",!0):(l(),d("span",y2,"New anonymization")),e.isUpdate?(l(),d("span",b2,"Edit anonymization")):p("v-if",!0)]),D(n("span",{class:P(["type-badge",{"type-repo":e.detectedType==="repo","type-pr":e.detectedType==="pr","type-gist":e.detectedType==="gist"}])},u(e.detectedType==="repo"?"Repo":e.detectedType==="pr"?"PR":"Gist"),3),[[W,e.detectedType]])])])]),e.detectedType==="gist"&&e.gistAppRequired?(l(),d("aside",w2,[t[52]||(t[52]=n("p",null,"Reconnect your GitHub account to read this gist. Your draft will be restored when you return.",-1)),n("button",{type:"button",class:"btn btn-ink",onClick:t[4]||(t[4]=a=>e.connectGistApp())},"Connect GitHub App to access gists")])):p("v-if",!0),e.detectedType==="gist"&&e.gistOAuthRequired?(l(),d("aside",k2,[t[53]||(t[53]=n("p",null,"Connect GitHub OAuth to access gists. Your account and existing anonymizations stay the same, and your draft will be restored when you return.",-1)),t[54]||(t[54]=n("p",null,"GitHub's legacy OAuth connection includes write access to private repositories.",-1)),e.githubConnections?.oauthEnabled?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[5]||(t[5]=a=>e.connectGistOAuth())},"Connect GitHub OAuth to access gists")):(l(),d("p",E2,"GitHub OAuth is currently unavailable. Please try again later."))])):p("v-if",!0),n("nav",C2,[n("button",{id:"workspace-settings-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="settings","aria-controls":"workspace-settings",tabindex:e.mobilePane==="settings"?0:-1,onKeydown:t[6]||(t[6]=a=>e.previewTabKeydown(a)),onClick:t[7]||(t[7]=a=>e.selectMobilePane("settings"))},"Settings",40,S2),n("button",{id:"workspace-preview-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="preview","aria-controls":"workspace-preview",tabindex:e.mobilePane==="preview"?0:-1,onKeydown:t[8]||(t[8]=a=>e.previewTabKeydown(a)),onClick:t[9]||(t[9]=a=>e.selectMobilePane("preview"))},"Reviewer preview",40,_2)]),e.detectedType!=="repo"&&!e.details?(l(),d("div",N2,u(e.sourceLoading?"Loading source\u2026":"Choose an accessible source to see its preview."),1)):p("v-if",!0),n("div",R2,[p(" Form column (left) "),n("div",{id:"workspace-settings",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-settings-tab":null,class:"anonymize-form-col overflow-auto"},[D((l(),d("form",T2,[n("div",A2,[n("section",O2,[t[69]||(t[69]=n("h2",{class:"paper-section-eyebrow"},"Source & access",-1)),n("div",P2,[n("div",I2,[t[56]||(t[56]=n("label",{class:"paper-field-label",for:"sourceUrl"},"GitHub URL",-1)),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",V2,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",q2,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[10]||(t[10]=a=>e.chooseGitHubConnection("github-app"))},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(),n("span",{class:"sr-only"},"Read-only ",-1),v("GitHub App",-1)])],8,M2),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[11]||(t[11]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,U2)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",$2,u((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.sourceUrl?.invalid}]),name:"sourceUrl",id:"sourceUrl",disabled:e.isUpdate&&e.detectedType!=="repo",placeholder:"Paste a GitHub repo or pull request URL"},null,10,L2),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),D(n("div",F2," Please provide a valid GitHub URL. ",512),[[W,e.anonymize?.sourceUrl?.errors?.github]]),D(n("div",B2," Not accessible. The organization may restrict access. ",512),[[W,e.anonymize?.sourceUrl?.errors?.access]]),D(n("div",H2," Does not exist or is not accessible. ",512),[[W,e.anonymize?.sourceUrl?.errors?.missing]]),D(n("div",z2," Already anonymized. ",512),[[W,e.anonymize?.sourceUrl?.errors?.used]])]),!e.isUpdate&&e.previousConfigurations.length?(l(),d("aside",j2,[t[58]||(t[58]=n("p",{role:"status"},"You have already anonymized this repository. Use the existing configuration to keep its anonymous link and avoid creating another repository.",-1)),e.previousConfigurations.length>1?(l(),d("div",G2,[t[57]||(t[57]=n("label",{class:"paper-field-label",for:"previousConfiguration"},"Previous anonymization",-1)),D(n("select",{id:"previousConfiguration",class:"form-control","onUpdate:modelValue":t[12]||(t[12]=a=>e.previousConfigurationId=a)},[(l(!0),d(K,null,te(e.previousConfigurations,a=>(l(),d("option",{key:a.repoId,value:a.repoId},u(a.repoId),9,W2))),128))],512),[[pn,e.previousConfigurationId]])])):(l(),d("p",K2,u(e.previousConfigurationId),1)),t[59]||(t[59]=n("p",null,"You can review and update its settings before saving.",-1)),n("div",Y2,[n("a",{class:"btn btn-ink",href:e.existingConfigurationUrl()},"Use existing configuration",8,J2),n("button",{type:"button",class:"btn btn-link",onClick:t[13]||(t[13]=a=>e.previousConfigurations=[])},"Create a separate anonymization")])])):p("v-if",!0),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",Q2,[n("div",X2,[n("div",Z2,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[14]||(t[14]=a=>e.grantGitHubAccess())},[...t[60]||(t[60]=[v("Manage access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",x2,u(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),n("div",eS,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",tS,"Signing in does not grant access to private repositories. Use Manage access to select this repository, then return here. Organization access may require administrator approval.")):p("v-if",!0),t[61]||(t[61]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v(" Anonymized content is public, even from private repositories.")],-1))])])):p("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.accessRepairAllowed&&e.githubConnections?.appEnabled&&e.githubConnection==="github-app"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",nS,[t[62]||(t[62]=n("p",null,"If this repository became private or its App installation changed, repair its access here. This keeps the same anonymous URL and published commit.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.repairingGitHubAccess,onClick:t[15]||(t[15]=a=>e.repairGitHubAccess())},"Repair GitHub access",8,oS),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[16]||(t[16]=a=>e.grantGitHubAccess())},"Manage access"),e.accessRepairMessage?(l(),d("p",sS,u(e.accessRepairMessage),1)):p("v-if",!0)])):p("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",iS,[t[63]||(t[63]=n("p",null,"If you deleted and recreated this repository, reconnect it before choosing a branch.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[17]||(t[17]=a=>e.reconnectSource())},"Reconnect source repository"),e.reconnectRepositoryId?(l(),d("p",rS,"Source reloaded. Review the branch, commit, and anonymization preview, then save to replace the published snapshot.")):p("v-if",!0)])):p("v-if",!0),e.detectedType==="repo"?(l(),d("div",aS,[n("div",lS,[t[65]||(t[65]=n("label",{class:"paper-field-label",for:"branch"},"Branch",-1)),n("div",dS,[D((l(),d("select",uS,[(l(!0),d(K,null,te(e.branches,(a,c)=>(l(),d("option",{textContent:u(a?.name),value:a?.name},null,8,cS))),256))])),[[s,{state:e.viewState,set:a=>{e.source.branch=a},value:e.source?.branch,form:"anonymize",options:{}}]]),n("div",pS,[n("button",{class:"btn btn-icon refresh-branches",type:"button",title:"Refresh branches",onClick:t[18]||(t[18]=a=>e.getBranches(!0)),"aria-label":"Refresh branches"},[...t[64]||(t[64]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])])]),n("div",fS,[t[66]||(t[66]=n("label",{class:"paper-field-label",for:"commit"},"Commit",-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.commit?.invalid}]),id:"commit",disabled:e.options.update,name:"commit",pattern:"[a-fA-Z0-9]{6,}",required:""},null,10,hS),[[s,{state:e.viewState,set:a=>{e.source.commit=a},value:e.source?.commit,form:"anonymize",options:{}}]]),D(n("div",mS," The commit SHA is not valid. ",512),[[W,e.anonymize?.commit?.errors?.pattern||e.anonymize?.commit?.errors?.required]]),D(n("div",vS," This commit no longer exists in the repository. Click refresh to get the latest. ",512),[[W,e.anonymize?.commit?.errors?.exists]])])])):p("v-if",!0),D(n("div",gS,[D(n("input",yS,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"anonymize",options:{}}]]),t[67]||(t[67]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[68]||(t[68]=n("small",{class:"form-text text-muted"},"Follows the latest version, at most once an hour.",-1))],512),[[W,e.detectedType]])]),D(n("section",bS,[t[87]||(t[87]=n("h2",{class:"paper-section-eyebrow"},"Anonymization",-1)),D(n("div",wS,[t[70]||(t[70]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.repoId?.invalid}]),name:"repoId",id:"repoId",disabled:e.isUpdate},null,10,kS),[[s,{state:e.viewState,set:a=>{e.repoId=a},value:e.repoId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",ES,"anonymous.4open.science/r/"+u(e.repoId),1),D(n("div",CS,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.repoId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.repoId)+" is already used.",513),[[W,e.anonymize?.repoId?.errors?.used]])],512),[[W,e.detectedType==="repo"]]),D(n("div",SS,[t[73]||(t[73]=n("label",{class:"paper-field-label",for:"pullRequestId"},"Anonymized pull request ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId",disabled:e.isUpdate},null,10,_S),[[s,{state:e.viewState,set:a=>{e.pullRequestId=a},value:e.pullRequestId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",NS,[t[71]||(t[71]=v("Your share link will be ",-1)),n("code",null,"anonymous.4open.science/pr/"+u(e.pullRequestId),1),t[72]||(t[72]=v(".",-1))]),D(n("div",RS,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.pullRequestId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestId)+" is already used.",513),[[W,e.anonymize?.pullRequestId?.errors?.used]])],512),[[W,e.detectedType==="pr"]]),D(n("div",DS,[t[76]||(t[76]=n("label",{class:"paper-field-label",for:"gistId"},"Anonymized gist ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.gistId?.invalid}]),name:"gistId",id:"gistId",disabled:e.isUpdate},null,10,TS),[[s,{state:e.viewState,set:a=>{e.gistId=a},value:e.gistId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",AS,[t[74]||(t[74]=v("Your share link will be ",-1)),n("code",null,"anonymous.4open.science/gist/"+u(e.gistId),1),t[75]||(t[75]=v(".",-1))]),D(n("div",OS,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.gistId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.gistId)+" is already used.",513),[[W,e.anonymize?.gistId?.errors?.used]])],512),[[W,e.detectedType==="gist"]]),n("div",PS,[t[85]||(t[85]=n("label",{class:"paper-field-label",for:"terms"},"Terms to redact",-1)),D(n("textarea",{class:P(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),t[86]||(t[86]=n("small",{class:"form-text text-muted"},"One term per line.",-1)),n("details",IS,[t[83]||(t[83]=n("summary",null,"Regex & replacement syntax",-1)),t[84]||(t[84]=v()),n("small",VS,[t[77]||(t[77]=v("Regex is supported. Replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[78]||(t[78]=v(", or use ",-1)),t[79]||(t[79]=n("code",null,"term=>replacement",-1)),t[80]||(t[80]=v(" to pick your own (e.g. ",-1)),t[81]||(t[81]=n("code",null,"Anonymous=>ABC",-1)),t[82]||(t[82]=v(").",-1))])]),D(n("div",qS,"Regex characters detected. Escape them if unintentional.",512),[[W,e.termsRegexWarning]]),D(n("div",MS,"Terms are in an invalid format.",512),[[W,e.anonymize?.terms?.errors?.format]])])],512),[[W,e.detectedType]]),D(n("section",US,[t[107]||(t[107]=n("h2",{class:"paper-section-eyebrow"},"Display",-1)),D(n("div",null,[n("div",$S,[D(n("input",LS,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[88]||(t[88]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",FS,[D(n("input",BS,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[89]||(t[89]=n("label",{class:"form-check-label",for:"image"},"Display images",-1))]),n("div",HS,[D(n("input",zS,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[90]||(t[90]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1))]),n("div",jS,[D(n("input",GS,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[91]||(t[91]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",WS,[D(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,KS),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[92]||(t[92]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?p("v-if",!0):(l(),d("small",YS,u(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",JS,u(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):p("v-if",!0)])],512),[[W,e.detectedType==="repo"]]),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",QS,[...t[93]||(t[93]=[v("Images and PDFs are served unchanged. Review their contents and metadata before sharing. ",-1),n("a",{href:"/faq#formats"},"Supported formats",-1)])])):p("v-if",!0),D(n("div",null,[n("div",XS,[D(n("input",ZS,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[94]||(t[94]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",xS,[D(n("input",e_,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[95]||(t[95]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",t_,[D(n("input",n_,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[96]||(t[96]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",o_,[D(n("input",s_,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[97]||(t[97]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",i_,[D(n("input",r_,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[98]||(t[98]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",a_,[D(n("input",l_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[99]||(t[99]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[W,e.detectedType==="gist"]]),D(n("div",null,[n("div",d_,[D(n("input",u_,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[100]||(t[100]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",c_,[D(n("input",p_,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[101]||(t[101]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",f_,[D(n("input",h_,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[102]||(t[102]=n("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),n("div",m_,[D(n("input",v_,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[103]||(t[103]=n("label",{class:"form-check-label",for:"comments"},"Comments",-1))]),n("div",g_,[D(n("input",y_,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[104]||(t[104]=n("label",{class:"form-check-label",for:"username"},"Usernames",-1))]),n("div",b_,[D(n("input",w_,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[105]||(t[105]=n("label",{class:"form-check-label",for:"date"},"Dates",-1))]),n("div",k_,[D(n("input",E_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[106]||(t[106]=n("label",{class:"form-check-label",for:"origin"},"Project name",-1))])],512),[[W,e.detectedType==="pr"]])],512),[[W,e.detectedType]]),D(n("section",C_,[t[123]||(t[123]=n("h2",{class:"paper-section-eyebrow",id:"hosting-heading"},"Hosting & expiration",-1)),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("p",S_,[e.isUpdate&&e.role!=="owner"?(l(),d("span",__,"Uses the owner's hosting")):e.hasAuthorHosting()?(l(),d("span",N_,"Your author subscription is active.")):e.conference?(l(),d("span",R_,"Conference hosting is checked on submission.")):e.hostingQuota?.repository?(l(),d("span",D_,u(e.hostingQuota.repository.used)+" of "+u(e.hostingQuota.repository.total)+" active repositories \xB7 Free",1)):p("v-if",!0)])):p("v-if",!0),n("fieldset",T_,[t[113]||(t[113]=n("legend",{class:"sr-only"},"Expiration",-1)),n("label",A_,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode!=="never",onChange:t[19]||(t[19]=a=>e.useDatedHosting()),disabled:e.billingPending},null,40,O_),t[108]||(t[108]=n("span",null,"Expire on a date",-1))]),e.options.expirationMode!=="never"?(l(),d("div",P_,[e.options?.expirationMode!=="never"?(l(),d("div",I_,[t[109]||(t[109]=n("label",{class:"paper-field-label",for:"expirationDate"},"Expires",-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.expirationDate?.invalid}]),type:"date",name:"expirationDate",id:"expirationDate",required:"",min:e.minExpirationDate,max:e.maxExpirationDate},null,10,V_),[[s,{state:e.viewState,set:a=>{e.options.expirationDate=a},value:e.options?.expirationDate,form:"anonymize",options:{}}]]),D(n("div",q_,"Pick a date in the future.",512),[[W,e.anonymize?.expirationDate?.errors?.min]]),D(n("div",{class:"invalid-feedback"},"Pick a date on or before "+u(e.fmt?.date(e.maxExpirationDate))+".",513),[[W,e.anonymize?.expirationDate?.errors?.max]]),D(n("div",M_,"Enter a valid expiration date.",512),[[W,e.anonymize?.expirationDate?.errors?.required||e.anonymize?.expirationDate?.errors?.date]])])):p("v-if",!0),n("div",U_,[t[111]||(t[111]=n("label",{for:"expiration"},"Then",-1)),D(n("select",{id:"expiration",class:"form-control","onUpdate:modelValue":t[20]||(t[20]=a=>e.options.expirationMode=a)},[...t[110]||(t[110]=[n("option",{value:"remove"},"Remove content",-1),n("option",{value:"redirect"},"Redirect to GitHub",-1)])],512),[[pn,e.options.expirationMode]])])])):p("v-if",!0),e.detectedType==="repo"?(l(),d("label",$_,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode==="never",onChange:t[21]||(t[21]=a=>e.options.expirationMode="never"),disabled:e.billingPending},null,40,L_),n("span",null,[t[112]||(t[112]=v("Never expire",-1)),e.options.expirationMode!=="never"||e.hasAuthorHosting()?(l(),d("small",F_,u(e.hasAuthorHosting()?"Included in your subscription":"Author subscription"),1)):p("v-if",!0)])])):p("v-if",!0)]),e.options.expirationMode==="redirect"?(l(),d("p",B_,"Visitors will be redirected to the original GitHub source on this date, revealing its identity.")):p("v-if",!0),n("div",H_,[t[114]||(t[114]=n("label",{class:"paper-field-label",for:"conference"},[v("Conference code "),n("span",{class:"paper-optional"},"(optional)")],-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[s,{state:e.viewState,set:a=>{e.conference=a},value:e.conference,form:"anonymize",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),D(n("small",z_,[n("a",{target:"_blank",href:e.safeUrl(e.conference_data?.url)},u(e.conference_data?.name),9,j_),v(" expires "+u(e.fmt?.date(e.conference_data?.endDate))+". ",1)],512),[[W,e.conference_data]]),D(n("div",G_,"The conference is not activated.",512),[[W,e.anonymize?.conference?.errors?.activated]]),D(n("small",W_,"Link to a conference to apply its shared defaults.",512),[[W,!e.conference_data]])]),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("div",K_,[e.taskValidationError?(l(),d("p",Y_,u(e.taskValidationError),1)):p("v-if",!0),e.billingError?(l(),d("p",J_,[v(u(e.billingError)+" ",1),n("button",{type:"button",class:"task-text-button",onClick:t[22]||(t[22]=a=>e.loadBilling()),disabled:e.billingBusy},"Reload billing",8,Q_)])):p("v-if",!0),e.billingPending?(l(),d("div",X_,[...t[115]||(t[115]=[n("p",null,[n("strong",null,"Confirming your payment\u2026")],-1),n("p",{class:"form-text text-muted"},"Your draft is saved. Please do not pay again.",-1)])])):e.billingNotice?(l(),d("p",Z_,u(e.billingNotice),1)):p("v-if",!0),e.hostingNeedsPayment()&&!e.billingPending?(l(),d(K,{key:4},[e.options.expirationMode!=="never"?(l(),d("p",x_,u(e.options.update&&!e.hostingQuotaBlocked&&e.hostingQuota?.repository?.used(l(),d("label",{class:P(["cycle-option",{selected:e.selectedHostingPlan()?.id===a.id}]),key:a.id},[n("input",{type:"radio",name:"hosting-plan",value:a.id,checked:e.selectedHostingPlan()?.id===a.id,onChange:c=>e.hostingPlan=a.id},null,40,nN),n("span",null,u(e.billingPrice(a)),1)],2))),128))]),n("p",null,u(e.selectedHostingPlan()?.repositories)+" repositories, "+u(e.billingBytes(e.selectedHostingPlan()?.storage))+". Coauthors included.",1),n("p",oN,"Renews "+u(e.selectedHostingPlan()?.interval==="year"?"annually":"monthly")+" until cancelled. Tax shown at checkout.",1),t[118]||(t[118]=n("p",{class:"hosting-terms"},"If paid access ends, never-expiring repositories expire after 90 days.",-1))])):(l(),d("p",sN,"New purchases are temporarily unavailable. Your draft is kept.")),e.options.expirationMode!=="never"?(l(),d("details",iN,[t[119]||(t[119]=n("summary",null,"Keep using free hosting",-1)),t[120]||(t[120]=n("p",null,"Remove a repository you no longer need, or use conference hosting. Removing a repository affects its review link.",-1)),t[121]||(t[121]=n("a",{href:"/dashboard"},"Review my repositories",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[23]||(t[23]=a=>e.anonymizeRepo(a)),disabled:e.sourceLoading||e.billingBusy},"Recheck capacity and submit",8,rN)])):p("v-if",!0)],64)):e.options.expirationMode==="never"&&!e.billingPending?(l(),d("p",aN,"No scheduled expiration while subscribed. A 90-day grace period applies if paid access ends.")):p("v-if",!0),e.isUpdate&&e.role==="owner"&&!e.hasAuthorHosting()?(l(),d("details",lN,[t[122]||(t[122]=n("summary",null,"Hosting just this repository?",-1)),(l(!0),d(K,null,te((e.billing?.plans||[]).filter(a=>a.id==="author_pass"),a=>(l(),d("div",{key:a.id},[n("p",null,u(e.billingPrice(a))+" \xB7 "+u(e.billingBytes(a.storage))+" for 180 days. No renewal. Does not include Never expire.",1),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.billingBusy||e.hostingSaving||e.sourceLoading||e.billing.checkoutEnabled===!1||e.billingPending,onClick:t[24]||(t[24]=c=>e.checkoutRepository(!0))},"Review repository pass",8,dN)]))),128))])):p("v-if",!0)])):p("v-if",!0)],512),[[W,e.detectedType]]),D(n("section",uN,[t[127]||(t[127]=n("h2",{class:"paper-section-eyebrow"},"Coauthors",-1)),t[128]||(t[128]=n("p",{class:"form-text text-muted",style:{"margin-bottom":"8px"}}," Co-authors can view and edit these settings. They cannot delete the anonymization or manage co-authors. ",-1)),D(n("div",cN,[t[124]||(t[124]=n("label",{class:"paper-field-label",for:"coauthorSearch"},"Add a GitHub user",-1)),n("div",pN,[D(n("input",fN,null,512),[[s,{state:e.viewState,set:a=>{e.coauthorSearch=a},value:e.coauthorSearch,form:"anonymize",options:{debounce:300},change:()=>{e.searchCoauthors()}}]]),D(n("div",hN,[(l(!0),d(K,null,te(e.coauthorResults,(a,c)=>(l(),d("a",{href:"#",class:"dropdown-item d-flex align-items-center",onClick:ae(f=>e.addCoauthor(a,f),["prevent"])},[n("img",{alt:"",style:{width:"22px",height:"22px","border-radius":"50%","margin-right":"8px"},src:e.safeUrl(a?.photo)},null,8,vN),n("span",{textContent:u(a?.username)},null,8,gN)],8,mN))),256))],512),[[W,e.coauthorResults?.length>0]])]),D(n("small",{class:"form-text text-muted",textContent:u(e.coauthorError)},null,8,yN),[[W,e.coauthorError]])],512),[[W,e.role==="owner"||e.role==="admin"]]),n("div",bN,[(l(!0),d(K,null,te(e.coauthors,(a,c)=>(l(),d("div",wN,[a?.photo?(l(),d("img",{key:0,alt:"",style:{width:"24px",height:"24px","border-radius":"50%"},src:e.safeUrl(a?.photo)},null,8,kN)):p("v-if",!0),n("a",{target:"_blank",textContent:u(a?.username),href:e.safeUrl("https://github.com/"+a?.username)},null,8,EN),t[126]||(t[126]=n("span",{class:"type-badge type-coauthor"},"Co-author",-1)),D(n("button",{type:"button",class:"btn btn-sm btn-icon",style:{"margin-left":"auto"},title:"Remove co-author",onClick:f=>e.removeCoauthor(a),"aria-label":"Remove co-author"},[...t[125]||(t[125]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,CN),[[W,e.role==="owner"||e.role==="admin"]])]))),256)),D(n("div",SN," No co-authors yet. ",512),[[W,!e.coauthors||e.coauthors?.length===0]])])],512),[[W,e.isUpdate&&e.detectedType==="repo"]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:u(e.error)},null,8,_N)):p("v-if",!0),e.draftRestored?(l(),d("div",NN,[t[129]||(t[129]=v("Your unsaved draft was restored. ",-1)),n("button",{type:"button",class:"draft-discard",onClick:t[25]||(t[25]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",RN,[v(u(e.draftSaved?"Draft saved in this tab for 30 minutes.":"Unsaved changes. Keep this tab open until you save.")+" ",1),n("button",{type:"button",class:"draft-discard",onClick:t[26]||(t[26]=a=>e.discardDraft())},u(e.isUpdate?"Restore saved settings":"Discard changes"),1)])):p("v-if",!0)]),D(n("div",DN,[e.detectedType==="repo"?(l(),d(K,{key:0},[e.billingPending?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[27]||(t[27]=a=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,TN)):(l(),d("button",{key:1,type:"submit",class:"btn btn-ink",disabled:e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingLoading||e.hostingNeedsPayment()&&(!e.authorPlans().length||e.billing?.checkoutEnabled===!1),onClick:t[28]||(t[28]=ae(a=>e.submitForm(a,()=>{e.submitRepository(a)}),["prevent"]))},u(e.hostingSaving?"Saving draft\u2026":e.hostingNeedsPayment()?"Continue to checkout":e.isUpdate?"Save changes":"Create anonymous link"),9,AN)),e.hostingNeedsPayment()&&!e.billingPending?(l(),d("p",ON,"Review payment in Stripe, then return to finish.")):p("v-if",!0)],64)):p("v-if",!0),e.detectedType==="pr"&&!e.isUpdate?(l(),d("button",{key:1,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[29]||(t[29]=ae(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[130]||(t[130]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize Pull Request ",-1)])],8,PN)):p("v-if",!0),e.detectedType==="pr"&&e.isUpdate?(l(),d("button",{key:2,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[30]||(t[30]=ae(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[131]||(t[131]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),v(" Update Pull Request ",-1)])],8,IN)):p("v-if",!0),e.detectedType==="gist"&&!e.isUpdate?(l(),d("button",{key:3,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[31]||(t[31]=ae(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[132]||(t[132]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize Gist ",-1)])],8,VN)):p("v-if",!0),e.detectedType==="gist"&&e.isUpdate?(l(),d("button",{key:4,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[32]||(t[32]=ae(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[133]||(t[133]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),v(" Update Gist ",-1)])],8,qN)):p("v-if",!0)],512),[[W,e.detectedType]])])),[[r,e.viewState]])],8,D2),p(" Preview column (right) "),e.detectedType==="repo"?(l(),d("div",{key:0,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",UN,[t[134]||(t[134]=n("strong",null,"README.md",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[33]||(t[33]=a=>e.previewExpanded=!e.previewExpanded)},u(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",$N,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",LN,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",FN,[t[135]||(t[135]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[34]||(t[34]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),!e.sourceLoading&&!e.readme&&e.previewStatus==="idle"?(l(),d("div",BN,"No README is available to preview. Review the published files before sharing.")):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",{key:4,class:"anonymize-preview-body markdown-body body",innerHTML:e.sanitize(e.html_readme)},null,8,HN)):p("v-if",!0)],8,MN)):p("v-if",!0),e.detectedType==="gist"&&e.details?(l(),d("div",{key:1,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",jN,[t[136]||(t[136]=n("strong",null,"Gist preview",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[35]||(t[35]=a=>e.previewExpanded=!e.previewExpanded)},u(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",GN,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",WN,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",KN,[t[137]||(t[137]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[36]||(t[36]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",YN,[n("div",JN,[n("h2",QN,[e.options?.title?(l(),d("span",XN,u(e.anonymizeGistContent(e.details?.gist?.description)||"Untitled gist"),1)):p("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.gist?.isPublic,"badge-secondary":!e.details?.gist?.isPublic}])},u(e.details?.gist?.isPublic?"public":"secret"),3)]),e.options?.date?(l(),d("small",{key:0,textContent:u(e.fmt?.date(e.details?.gist?.updatedDate))},null,8,ZN)):p("v-if",!0)]),e.options?.origin?(l(),d("small",xN,"Gist ID: "+u(e.details?.source?.gistId),1)):p("v-if",!0),e.options?.username&&e.details?.gist?.ownerLogin?(l(),d("small",eR,"By @"+u(e.anonymizeGistContent(e.details?.gist?.ownerLogin)),1)):p("v-if",!0),e.options?.content&&e.previewGistFiles?.length?(l(),d("div",tR,[n("ul",nR,[(l(!0),d(K,null,te(e.previewGistFiles,(a,c)=>(l(),d("li",oR,[n("div",sR,[n("strong",{textContent:u(a?.filename)},null,8,iR),a?.language?(l(),d("span",rR,u(a?.language),1)):p("v-if",!0)]),Ee(o,{file:a,terms:e.terms,options:e.options},null,8,["file","terms","options"])]))),256))])])):p("v-if",!0),e.options?.comments&&e.details?.gist?.comments&&e.details?.gist?.comments?.length?(l(),d("div",aR,[t[140]||(t[140]=n("h3",{class:"paper-section-eyebrow mt-3"},"Comments",-1)),n("ul",lR,[(l(!0),d(K,null,te(e.details?.gist?.comments,(a,c)=>(l(),d("li",dR,[n("div",uR,[e.options?.username?(l(),d("span",cR,[t[138]||(t[138]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[139]||(t[139]=v(" @",-1)),n("span",{textContent:u(e.anonymizeGistContent(a?.author))},null,8,pR)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(a?.updatedDate))},null,8,fR)):p("v-if",!0)]),e.options?.body?(l(),d("div",hR,[Ee(i,{content:e.anonymizeGistContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])):p("v-if",!0)],8,zN)):p("v-if",!0),e.detectedType==="pr"&&e.details?(l(),d("div",{key:2,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",vR,[t[141]||(t[141]=n("strong",null,"Pull request preview",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[37]||(t[37]=a=>e.previewExpanded=!e.previewExpanded)},u(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",gR,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",yR,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",bR,[t[142]||(t[142]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[38]||(t[38]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",wR,[n("div",kR,[n("h2",ER,[e.options?.title?(l(),d("span",CR,u(e.anonymizePrContent(e.details?.pullRequest?.title)),1)):p("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},u(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:u(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,SR)):p("v-if",!0)]),e.options?.origin?(l(),d("small",_R,"Pull Request on "+u(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",NR,[Ee(i,{content:e.anonymizePrContent(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),e.options?.diff||e.options?.comments?(l(),d("nav",RR,[e.options?.diff?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.prTabState?.active=="diff"}]),type:"button",role:"tab",id:"preview-pr-diff-tab","aria-selected":e.prTabState?.active==="diff","aria-controls":"preview-pr-diff-panel",tabindex:e.prTabState?.active==="diff"?0:-1,onKeydown:t[39]||(t[39]=a=>e.previewTabKeydown(a)),onClick:t[40]||(t[40]=a=>e.prTabState.active="diff")},[...t[143]||(t[143]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),v(" Diff ",-1)])],42,DR)):p("v-if",!0),e.options?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.prTabState?.active=="comments"}]),type:"button",role:"tab",id:"preview-pr-comments-tab","aria-selected":e.prTabState?.active==="comments","aria-controls":"preview-pr-comments-panel",tabindex:e.prTabState?.active==="comments"?0:-1,onKeydown:t[41]||(t[41]=a=>e.previewTabKeydown(a)),onClick:t[42]||(t[42]=a=>e.prTabState.active="comments")},[t[144]||(t[144]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,AR)],42,TR)):p("v-if",!0)])):p("v-if",!0),!e.options?.diff&&!e.options?.comments?(l(),d("div",OR,"Diff and comments are hidden by your display settings.")):p("v-if",!0),n("div",PR,[e.options?.diff&&e.prTabState?.active=="diff"?(l(),d("div",IR,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.anonymizePrContent(e.details?.pullRequest?.diff)))},null,8,VR)])):p("v-if",!0),e.options?.comments&&e.prTabState?.active=="comments"?(l(),d("div",qR,[n("ul",MR,[(l(!0),d(K,null,te(e.details?.pullRequest?.comments,(a,c)=>(l(),d("li",UR,[n("div",$R,[e.options?.username?(l(),d("span",LR,[t[145]||(t[145]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[146]||(t[146]=v(" @",-1)),n("span",{textContent:u(e.anonymizePrContent(a?.author))},null,8,FR)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(a?.updatedDate))},null,8,BR)):p("v-if",!0)]),e.options?.body?(l(),d("div",HR,[Ee(i,{content:e.anonymizePrContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])])):p("v-if",!0)],8,mR)):p("v-if",!0)])],512),[[W,e.workspaceOpen||e.isUpdate]])],2)}var zR={class:"container-fluid h-100 anonymize-page"},jR={class:"row h-100 flex-column flex-md-row"},GR={class:"col-md sidePanel shadow overflow-auto anonymize-form-col"},WR={class:"form-group"},KR={class:"form-group"},YR={class:"form-check"},JR={class:"form-check-input",type:"checkbox",id:"update",name:"update"},QR={class:"form-group"},XR={class:"form-text text-muted"},ZR=["href"],xR={class:"invalid-feedback"},eD={class:"form-text text-muted"},tD={class:"form-group"},nD={id:"idHelp",class:"form-text text-muted"},oD={class:"invalid-feedback"},sD={class:"form-group"},iD={class:"invalid-feedback"},rD={class:"form-group"},aD={class:"form-control",id:"expiration",name:"expiration"},lD={class:"form-group",id:"expiration-date-form"},dD={class:"form-control",type:"date",name:"expirationDate",id:"expirationDate"},uD={class:"accordion mb-3",id:"options"},cD={class:"card"},pD={id:"collapseOne",class:"collapse show","aria-labelledby":"headingOne","data-parent":"#options"},fD={class:"card-body"},hD={class:"form-group mb-0"},mD={class:"form-check"},vD={class:"form-check-input",type:"checkbox",id:"link",name:"link"},gD={class:"form-check"},yD={class:"form-check-input",type:"checkbox",id:"image",name:"image"},bD={class:"form-check"},wD={class:"form-check-input",type:"checkbox",id:"date",name:"date"},kD={class:"form-check"},ED={class:"form-check-input",type:"checkbox",id:"username",name:"username"},CD={class:"form-check"},SD={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},_D={class:"form-check"},ND={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},RD={class:"form-check"},DD={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},TD={class:"form-check"},AD={class:"form-check-input",type:"checkbox",id:"title",name:"title"},OD={class:"form-check"},PD={class:"form-check-input",type:"checkbox",id:"body",name:"body"},ID=["textContent"],VD={class:"anonymize-submit-bar"},qD={key:0,class:"col-md-8 p-2 overflow-auto anonymize-preview-col"},MD={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},UD={class:"pr-title mb-1"},$D={key:0},LD=["textContent"],FD={key:0},BD={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},HD={class:"nav nav-tabs",id:"myTab",role:"tablist"},zD={key:0,class:"nav-item",role:"presentation"},jD={key:1,class:"nav-item",role:"presentation"},GD=["textContent"],WD={class:"tab-content",id:"pills-tabContent"},KD={class:"tab-pane show active",id:"pills-diff",role:"tabpanel","aria-labelledby":"pills-diff-tab"},YD={key:0,class:"pr-diff shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},JD={style:{"overflow-x":"auto"}},QD=["innerHTML"],XD={key:0,class:"pr-comments list-group"},ZD={class:"pr-comment list-group-item"},xD={class:"d-flex w-100 justify-content-between flex-wrap"},eT={key:0,class:"mb-1"},tT=["textContent"],nT={class:"mb-1"};function Ll(e,t){let o=Ge("markdown"),i=ge("field"),s=ge("form");return l(),d("div",zR,[n("div",jR,[n("div",GR,[n("div",{class:P(["p-0 py-2 m-auto",{card:!e.pullRequestUrl,container:e.pullRequestUrl}])},[D((l(),d("form",{class:P(["form needs-validation",{"card-body":!e.pullRequestUrl}]),name:"anonymizeForm",novalidate:""},[t[30]||(t[30]=fe('
Anonymize \xA0/\xA0 Pull request

Anonymize a pull request

Fill in the details \u2014 it only takes a minute.

Source
',4)),p(" pullRequestUrl "),n("div",WR,[t[2]||(t[2]=n("label",{for:"pullRequestUrl"},"URL of your pull request",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestUrl?.invalid}]),name:"pullRequestUrl",id:"pullRequestUrl",placeholder:"https://github.com/owner/repo/pull/123"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestUrl=r},value:e.pullRequestUrl,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.pullRequestSelected()}}]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestUrl)+" is not accessible. Some organizations are restricting the access to the repositories. ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.access]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestUrl)+" does not exist or is not accessible ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.missing]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestUrl)+" is already anonymized ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.used]])]),D(n("div",null,[n("div",KR,[n("div",YR,[D(n("input",JR,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"anonymizeForm",options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"update"},"Auto update",-1)),t[4]||(t[4]=n("small",{id:"updateHelp",class:"form-text text-muted"},"Automatically update the anonymized pull request with the latest updates. The pull request is updated once per day maximum.",-1))])]),t[26]||(t[26]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})]),v(" Conference ID ")],-1)),p(" Conference "),n("div",QR,[t[5]||(t[5]=n("label",{for:"conference"},[v("Conference ID "),n("span",{class:"text-muted"},"(Optional)")],-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[i,{state:e.viewState,set:r=>{e.conference=r},value:e.conference,form:"anonymizeForm",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),D(n("small",XR,[n("a",{target:"_target",href:e.safeUrl(e.conference_data?.url)},u(e.conference_data?.name),9,ZR),v(" will expire on "+u(e.fmt?.date(e.conference_data?.endDate))+".",1)],512),[[W,e.conference_data]]),D(n("div",xR," The conference is not activated. ",512),[[W,e.anonymize?.conference?.errors?.activated]]),D(n("small",eD," Use the Conference ID that your conference provided you. This will update automatically the anonymization options based on the conference preferences. ",512),[[W,!e.conference_data]])]),t[27]||(t[27]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),v(" Anonymization Options ")],-1)),p(" Pull Request ID "),n("div",tD,[t[6]||(t[6]=n("label",{for:"pullRequestId"},"Anonymized pull request id",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestId=r},value:e.pullRequestId,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",nD,"Id used in the url: https://anonymous.4open.science/r/"+u(e.pullRequestId),1),D(n("div",oD," Repository id can only contain letters and numbers ",512),[[W,e.anonymize?.pullRequestId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestId)+" is already used ",513),[[W,e.anonymize?.pullRequestId?.errors?.used]])]),p(" Terms "),n("div",sD,[t[7]||(t[7]=n("label",{for:"terms"},"Terms to anonymize",-1)),D(n("textarea",{class:P(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"anonymizeForm",options:{debounce:250}}]]),t[8]||(t[8]=n("small",{id:"termsHelp",class:"form-text text-muted"},"One term per line. Each term will be replaced by XXX.",-1)),D(n("div",iD," Terms are in an invalid format ",512),[[W,e.anonymize?.terms?.errors?.format]])]),n("div",rD,[t[10]||(t[10]=n("label",{for:"expiration"},"Expiration strategy",-1)),D((l(),d("select",aD,[...t[9]||(t[9]=[n("option",{value:"never",selected:""},"Never expire",-1),n("option",{value:"redirect"}," Redirect to GitHub when expired ",-1),n("option",{value:"remove"},"Remove when expired",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"anonymizeForm",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},"Define the expiration strategy for the anonymized repository.",-1))]),D(n("div",lD,[t[12]||(t[12]=n("label",{for:"expirationDate"},"Expiration date of the anonymized repository",-1)),D(n("input",dD,null,512),[[i,{state:e.viewState,set:r=>{e.options.expirationDate=r},value:e.options?.expirationDate,form:"anonymizeForm",options:{}}]]),D(n("small",{class:"form-text text-muted"},"After "+u(e.fmt?.date(e.options?.expirationDate))+", the repository will be removed and the visitor will not be able to see the content of the repository.",513),[[W,e.options?.expirationMode=="remove"]]),D(n("small",{class:"form-text text-muted"},"After "+u(e.fmt?.date(e.options?.expirationDate))+", the visitors of the anonymized repository will be redirected to "+u(e.pullRequestUrl)+".",513),[[W,e.options?.expirationMode=="redirect"]])],512),[[W,e.options?.expirationMode!="never"]]),n("div",uD,[n("div",cD,[t[25]||(t[25]=fe('

',1)),n("div",pD,[n("div",fD,[n("div",hD,[n("div",mD,[D(n("input",vD,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"anonymizeForm",options:{}}]]),t[13]||(t[13]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Keep or remove all the links.",-1))]),n("div",gD,[D(n("input",yD,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"anonymizeForm",options:{}}]]),t[15]||(t[15]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"Images are not anonymized",-1))]),n("div",bD,[D(n("input",wD,null,512),[[i,{state:e.viewState,set:r=>{e.options.date=r},value:e.options?.date,form:"anonymizeForm",options:{}}]]),t[17]||(t[17]=n("label",{class:"form-check-label",for:"date"},"Display dates",-1)),t[18]||(t[18]=n("small",{class:"form-text text-muted"},"Display the date of the Pull Request and the date of the comments.",-1))]),n("div",kD,[D(n("input",ED,null,512),[[i,{state:e.viewState,set:r=>{e.options.username=r},value:e.options?.username,form:"anonymizeForm",options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"username"},"Display username",-1))]),n("div",CD,[D(n("input",SD,null,512),[[i,{state:e.viewState,set:r=>{e.options.comments=r},value:e.options?.comments,form:"anonymizeForm",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"comments"},"Display comments",-1))]),n("div",_D,[D(n("input",ND,null,512),[[i,{state:e.viewState,set:r=>{e.options.diff=r},value:e.options?.diff,form:"anonymizeForm",options:{}}]]),t[21]||(t[21]=n("label",{class:"form-check-label",for:"diff"},"Display diff",-1))]),n("div",RD,[D(n("input",DD,null,512),[[i,{state:e.viewState,set:r=>{e.options.origin=r},value:e.options?.origin,form:"anonymizeForm",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"origin"},"Display the project name",-1))]),n("div",TD,[D(n("input",AD,null,512),[[i,{state:e.viewState,set:r=>{e.options.title=r},value:e.options?.title,form:"anonymizeForm",options:{}}]]),t[23]||(t[23]=n("label",{class:"form-check-label",for:"title"},"Display the PR title",-1))]),n("div",OD,[D(n("input",PD,null,512),[[i,{state:e.viewState,set:r=>{e.options.body=r},value:e.options?.body,form:"anonymizeForm",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"body"},"Display the PR body and comment bodies",-1))])])])])])])],512),[[W,e.pullRequestUrl]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:u(e.error)},null,8,ID)):p("v-if",!0),D(n("div",VD,[e.isUpdate?p("v-if",!0):(l(),d("button",{key:0,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[0]||(t[0]=ae(r=>e.submitForm(r,()=>{e.anonymizePullRequest(r)}),["prevent"]))},[...t[28]||(t[28]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize ",-1)])])),e.isUpdate?(l(),d("button",{key:1,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[1]||(t[1]=ae(r=>e.submitForm(r,()=>{e.updatePullRequest(r)}),["prevent"]))},[...t[29]||(t[29]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),v(" Update ",-1)])])):p("v-if",!0)],512),[[W,e.pullRequestUrl]])],2)),[[s,e.viewState]])],2)]),e.details?(l(),d("div",qD,[n("div",MD,[n("h2",UD,[e.options?.title?(l(),d("span",$D,u(e.anonymize(e.details?.pullRequest?.title)),1)):p("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},u(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:u(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,LD)):p("v-if",!0)]),e.options?.origin?(l(),d("small",FD,"Pull Request on "+u(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",BD,[Ee(o,{content:e.anonymize(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),n("ul",HD,[e.options?.diff?(l(),d("li",zD,[...t[31]||(t[31]=[n("button",{class:"nav-link active",id:"pills-diff-tab","data-toggle":"pill","data-target":"#pills-diff",type:"button",role:"tab","aria-controls":"pills-diff","aria-selected":"true"}," Diff ",-1)])])):p("v-if",!0),e.options?.comments?(l(),d("li",jD,[n("button",{class:P(["nav-link",{active:!e.options?.diff}]),id:"pills-comments-tab","data-toggle":"pill","data-target":"#pills-comments",type:"button",role:"tab","aria-controls":"pills-comments","aria-selected":"false"},[n("span",{textContent:u(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comment",one:"One Comment",other:"{} Comments"}))},null,8,GD)],2)])):p("v-if",!0)]),n("div",WD,[n("div",KD,[e.options?.diff?(l(),d("div",YD,[n("pre",JD,[n("code",{innerHTML:e.sanitize(e.fmt?.diff(e.anonymize(e.details?.pullRequest?.diff)))},null,8,QD)])])):p("v-if",!0)]),n("div",{class:P(["tab-pane",{"show active":!e.options?.diff}]),id:"pills-comments",role:"tabpanel","aria-labelledby":"pills-comments-tab"},[e.options?.comments?(l(),d("ul",XD,[(l(!0),d(K,null,te(e.details?.pullRequest?.comments,(r,a)=>(l(),d("li",ZD,[n("div",xD,[e.options?.username?(l(),d("h5",eT," @"+u(e.anonymize(r?.author)),1)):p("v-if",!0),e.options?.date?(l(),d("small",{key:1,textContent:u(e.fmt?.date(r?.updatedDate))},null,8,tT)):p("v-if",!0)]),n("p",nT,[e.options?.body?(l(),Ft(o,{key:0,class:"pr-comment-body",content:e.anonymize(r?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])):p("v-if",!0)])]))),256))])):p("v-if",!0)],2)])])):p("v-if",!0)])])}var oT={class:"container paper-page claim-page"},sT={class:"paper-settings-main claim-form"},iT={class:"form-group"},rT={class:"invalid-feedback"},aT={class:"form-group"};function Fl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",oT,[t[6]||(t[6]=fe('
My work \xA0/\xA0 Claim

Claim an anonymization

Take ownership of an existing anonymized repository so it appears on your dashboard.

',3)),n("div",sT,[t[5]||(t[5]=n("p",{class:"paper-section-copy"},"Use this when an anonymization was created by a co-author or from another account. You must have access to the GitHub repository it was made from.",-1)),D((l(),d("form",{class:"form needs-validation",name:"claimForm",novalidate:"",onSubmit:t[0]||(t[0]=ae(s=>e.submitForm(s,()=>{e.claim()}),["prevent"]))},[n("div",iT,[t[1]||(t[1]=n("label",{class:"paper-field-label",for:"repoUrl"},"GitHub repository URL",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.claimForm?.repoUrl?.invalid&&(e.claimForm?.repoUrl?.touched||e.claimForm?.submitted)}]),name:"repoUrl",id:"repoUrl",placeholder:"https://github.com/owner/repository",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoUrl=s},value:e.repoUrl,form:"claimForm",options:{}}]]),D(n("div",rT," No anonymization matches this repository and ID. Check both values and that you can access the repository on GitHub. ",512),[[W,e.claimForm?.repoUrl?.errors?.not_found]])]),n("div",aT,[t[2]||(t[2]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.claimForm?.repoId?.invalid&&(e.claimForm?.repoId?.touched||e.claimForm?.submitted)}]),name:"repoId",id:"repoId",placeholder:"e.g. my-paper-7F2A","aria-describedby":"idHelp",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoId=s},value:e.repoId,form:"claimForm",options:{}}]]),t[3]||(t[3]=n("small",{id:"idHelp",class:"form-text text-muted"},[v("The ID is the last part of the anonymized URL: "),n("code",null,"anonymous.4open.science/r/"),v(".")],-1))]),t[4]||(t[4]=n("button",{id:"submit",type:"submit",class:"btn btn-ink"}," Claim anonymization ",-1))],32)),[[i,e.viewState]])])])}var lT={class:"container page paper-page conference-page"},dT={class:"paper-crumbs"},uT={class:"here"},cT={class:"d-flex align-items-end flex-wrap",style:{gap:"12px","justify-content":"space-between"}},pT=["textContent"],fT={key:0,class:"paper-page-lede"},hT=["textContent","href"],mT={class:"d-flex align-items-center flex-wrap",style:{gap:"10px"}},vT=["textContent"],gT=["href"],yT={class:"paper-meta-rule"},bT=["textContent"],wT=["textContent"],kT={key:0},ET={key:0,class:"conference-payment-status",role:"status"},CT=["disabled"],ST={key:1,role:"alert"},_T={key:2,class:"paper-settings-section","aria-labelledby":"conference-payment-heading"},NT={key:0,role:"status"},RT={key:1,role:"alert"},DT=["disabled"],TT={class:"search-wrap"},AT={type:"search",id:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search by ID or source repository\u2026",autocomplete:"off"},OT={class:"dashboard-filter-controls"},PT={class:"dropdown"},IT={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},VT={class:"filter-btn-value"},qT={class:"dropdown-menu","aria-labelledby":"dropdownSort"},MT={class:"form-check dropdown-item"},UT={class:"form-check-input",type:"radio",name:"sort",id:"anonymizeDate",value:"-anonymizeDate"},$T={class:"form-check dropdown-item"},LT={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"repoId"},FT={class:"form-check dropdown-item"},BT={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},HT={class:"form-check dropdown-item"},zT={class:"form-check-input",type:"radio",name:"sort",id:"sortViews",value:"-pageView"},jT={class:"dropdown"},GT={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},WT={key:0,class:"filter-btn-value"},KT={key:1,class:"filter-btn-value"},YT={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},JT={class:"form-check dropdown-item"},QT=["id"],XT=["for"],ZT={class:"dashboard-meta"},xT={class:"dashboard-count"},eA={key:0},tA={key:0},nA={key:1},oA={key:1},sA={key:0,class:"filter-chip"},iA=["onClick","aria-label"],rA={class:"paper-table paper-table-repos w-100",role:"table","aria-label":"Repositories"},aA={class:"cell-anon",role:"cell"},lA={class:"anon-text"},dA=["textContent","href"],uA={class:"anon-sub"},cA={class:"anon-source"},pA=["textContent","href"],fA={key:0},hA=["textContent","href"],mA={key:1},vA=["href"],gA={class:"cell-status",role:"cell"},yA={class:"status-line"},bA=["textContent"],wA={key:0,class:"status-sub"},kA={class:"cell-views num",role:"cell"},EA=["textContent"],CA={class:"cell-expires",role:"cell"},SA={key:0,class:"expires-never"},_A=["textContent"],NA={key:2,class:"expires-past"},RA={key:0},DA={key:3,class:"empty-dash","aria-label":"Not applicable"},TA={class:"cell-actions",role:"cell"},AA={class:"dropdown"},OA=["aria-label"],PA={class:"dropdown-menu dropdown-menu-right"},IA=["href"],VA=["href"],qA={key:0,class:"paper-table-empty"},MA={key:0},UA={key:1},$A={key:2,class:"paper-table-empty-actions"};function Bl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",lT,[n("div",null,[n("div",dT,[t[4]||(t[4]=n("a",{href:"/dashboard"},"My work",-1)),t[5]||(t[5]=v(" \xA0/\xA0 ",-1)),t[6]||(t[6]=n("a",{href:"/conferences"},"Conferences",-1)),t[7]||(t[7]=v(" \xA0/\xA0 ",-1)),n("span",uT,u(e.conference?.conferenceID),1)]),n("div",cT,[n("div",null,[n("h1",{class:"paper-page-title",textContent:u(e.conference?.name)},null,8,pT),e.conference?.url?(l(),d("p",fT,[n("a",{target:"_blank",rel:"noopener",textContent:u(e.conference?.url),href:e.safeUrl(e.conference?.url)},null,8,hT)])):p("v-if",!0)]),n("div",mT,[n("span",{class:P(["status-pill",{"status-pill-ready":e.conference?.status=="ready","status-pill-removed":e.conference?.status=="removed"||e.conference?.status=="expired"}])},[n("span",{class:P(["status-dot","status-"+e.conference?.status]),"aria-hidden":"true"},null,2),n("span",{textContent:u(e.fmt?.statusLabel(e.conference?.status))},null,8,vT)],2),n("a",{class:"btn btn-outline-ink",href:e.safeUrl("/conference/"+e.conference?.conferenceID+"/edit")},[...t[8]||(t[8]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit conference",-1)])],8,gT)])]),n("div",yT,[n("span",null,[t[9]||(t[9]=v("ID ",-1)),n("b",{class:"commit-hash",textContent:u(e.conference?.conferenceID)},null,8,bT)]),n("span",null,[t[10]||(t[10]=v("Review window ",-1)),n("b",null,u(e.fmt?.date(e.conference?.startDate,"mediumDate"))+" \u2013 "+u(e.fmt?.date(e.conference?.endDate,"mediumDate")),1)]),n("span",null,[t[11]||(t[11]=v("Repositories ",-1)),n("b",null,u(e.fmt?.number(e.conference?.repositories?.length)),1)]),n("span",null,[t[12]||(t[12]=v("Plan ",-1)),n("b",{textContent:u(e.conference?.plan?.name||e.conference?.plan?.planID||"Free")},null,8,wT)]),e.conference?.price?(l(),d("span",kT,[t[13]||(t[13]=v("Cost so far ",-1)),n("b",null,u(e.fmt?.number(e.conference?.price,2))+" \u20AC",1)])):p("v-if",!0)]),e.billingNotice?(l(),d("div",ET,[n("p",null,u(e.billingNotice),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[0]||(t[0]=s=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,CT)])):p("v-if",!0),e.billingError&&e.conference?.status!=="pending_payment"?(l(),d("p",ST,u(e.billingError),1)):p("v-if",!0),e.conference?.status==="pending_payment"?(l(),d("section",_T,[t[14]||(t[14]=n("h2",{id:"conference-payment-heading"},"Activate your review package",-1)),t[15]||(t[15]=n("p",null,"This conference is waiting for payment. Authors can join after payment is confirmed. Checkout returns to this conference. Authors within the package do not pay separately.",-1)),e.billingLoading?(l(),d("p",NT,"Loading payment options\u2026")):p("v-if",!0),e.billingError?(l(),d("p",RT,u(e.billingError),1)):p("v-if",!0),(l(!0),d(K,null,te((e.billing?.plans||[]).filter(s=>s.id==="conference"),s=>(l(),d("div",{key:s.id},[n("p",null,u(e.billingPrice(s))+" for up to "+u(s.repositories)+" repositories and "+u(e.billingBytes(s.storage))+" of source files during the review window. Taxes, if applicable, appear at checkout.",1),n("button",{type:"button",class:"btn btn-primary",onClick:t[1]||(t[1]=r=>e.checkout("conference",e.conference.conferenceID)),disabled:e.billingBusy||e.billingPending||e.billing?.checkoutEnabled===!1},u(e.billingBusy?"Please wait\u2026":"Pay for review package"),9,DT)]))),128)),t[16]||(t[16]=n("p",null,[n("a",{href:"/profile#settings-billing"},"Manage invoices")],-1))])):p("v-if",!0),t[37]||(t[37]=n("div",{class:"paper-section-eyebrow"},"Repositories",-1)),D((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter repositories","accept-charset":"UTF-8",onSubmit:t[2]||(t[2]=ae(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",TT,[D(n("input",AT,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",OT,[n("div",PT,[n("button",IT,[t[17]||(t[17]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",VT,u({"-anonymizeDate":"Anonymize date",repoId:"ID","-status":"Status","-pageView":"Views"}[e.orderBy]||"Custom"),1)]),n("div",qT,[t[22]||(t[22]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",MT,[D(n("input",UT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"anonymizeDate"},"Anonymize date",-1))]),n("div",$T,[D(n("input",LT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",FT,[D(n("input",BT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",HT,[D(n("input",zT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[21]||(t[21]=n("label",{class:"form-check-label",for:"sortViews"},"Views",-1))])])]),n("div",jT,[n("button",GT,[t[23]||(t[23]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",WT,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",KT,u((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",YT,[t[24]||(t[24]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(K,null,te(e.statusLabels,(s,r,a)=>(l(),d("div",JT,[D(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,QT),[[o,{state:e.viewState,set:c=>{e.filters.status[r]=c},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},u(s),9,XT)]))),256))])])])],32)),[[i,e.viewState]]),n("div",ZT,[n("span",xT,[e.filteredRepositories?.length===e.conference?.repositories?.length?(l(),d("span",eA,[v(u(e.fmt?.number(e.conference?.repositories?.length))+" repositor",1),e.conference?.repositories?.length===1?(l(),d("span",tA,"y")):p("v-if",!0),e.conference?.repositories?.length!==1?(l(),d("span",nA,"ies")):p("v-if",!0)])):p("v-if",!0),e.filteredRepositories?.length!==e.conference?.repositories?.length?(l(),d("span",oA,u(e.fmt?.number(e.filteredRepositories?.length))+" of "+u(e.fmt?.number(e.conference?.repositories?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(K,null,te(e.filters?.status,(s,r,a)=>(l(),d(K,null,[s===!1?(l(),d("span",sA,[v(" Hiding "+u(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:c=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,iA)])):p("v-if",!0)],64))),256))]),n("div",rA,[t[36]||(t[36]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Repository"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Views"),n("div",{role:"columnheader"},"Expires"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(K,null,te(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error"}]),role:"row",key:s?.repoId},[n("div",aA,[t[27]||(t[27]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",lA,[n("a",{class:"repo-name",textContent:u(s?.repoId),href:e.safeUrl("/r/"+s?.repoId+"/")},null,8,dA),n("div",uA,[n("span",cA,[n("a",{target:"_blank",rel:"noopener",textContent:u(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,pA),s?.options?.update&&s?.source?.branch?(l(),d("span",fA,[t[25]||(t[25]=v(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:u(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,hA)])):p("v-if",!0),s?.source?.commit?(l(),d("span",mA,[t[26]||(t[26]=v(" \xB7 ",-1)),n("a",{class:"commit-hash",target:"_blank",rel:"noopener",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},"@"+u(s?.source?.commit?.substring(0,8)),9,vA)])):p("v-if",!0)])])])]),n("div",gA,[n("div",yA,[n("span",{class:P(["status-dot","status-"+(s?.status=="error"?"error":s?.status=="ready"?"ready":s?.status=="expired"||s?.status=="removed"?s?.status:"progress")]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:u(e.fmt?.statusLabel(s?.status))},null,8,bA)]),s?.anonymizeDate?(l(),d("div",wA,"anonymized "+u(e.fmt?.humanTime(s?.anonymizeDate)),1)):p("v-if",!0)]),n("div",kA,[t[28]||(t[28]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[29]||(t[29]=v()),n("span",{textContent:u(e.fmt?.number(s?.pageView))},null,8,EA)]),n("div",CA,[t[31]||(t[31]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.status=="ready"&&(s?.options?.expirationMode==="never"||!s?.options?.expirationDate)?(l(),d("span",SA,"Never")):p("v-if",!0),s?.status=="ready"&&s?.options?.expirationMode!=="never"&&s?.options?.expirationDate?(l(),d("span",{key:1,textContent:u(e.fmt?.humanTime(s?.options?.expirationDate))},null,8,_A)):p("v-if",!0),s?.status=="expired"?(l(),d("span",NA,[t[30]||(t[30]=v("Expired",-1)),s?.options?.expirationDate?(l(),d("span",RA,u(e.fmt?.humanTime(s?.options?.expirationDate)),1)):p("v-if",!0)])):p("v-if",!0),s?.status!="ready"&&s?.status!="expired"?(l(),d("span",DA,"\u2014")):p("v-if",!0)]),n("div",TA,[n("div",AA,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions for "+s?.repoId},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,OA),n("div",PA,[n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View ",-1)])],8,IA),n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[34]||(t[34]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit ",-1)])],8,VA)])])])],2))),128)),e.filteredRepositories?.length==0?(l(),d("div",qA,[t[35]||(t[35]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conference?.repositories?.length?p("v-if",!0):(l(),d("span",MA,"No repository has been submitted to this conference yet.")),e.conference?.repositories?.length?(l(),d("span",UA,"Nothing matches the current filters.")):p("v-if",!0),e.conference?.repositories?.length?(l(),d("div",$A,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")])):p("v-if",!0)])):p("v-if",!0)])])])}var LA={class:"container page paper-page conferences-page"},FA={class:"row"},BA={class:"w-100"},HA={class:"search-wrap"},zA={type:"search",id:"search",class:"form-control","aria-label":"Search conferences",placeholder:"Search by name or ID\u2026",autocomplete:"off"},jA={class:"dashboard-filter-controls"},GA={class:"dropdown"},WA={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},KA={class:"filter-btn-value"},YA={class:"dropdown-menu","aria-labelledby":"dropdownSort"},JA={class:"form-check dropdown-item"},QA={class:"form-check-input",type:"radio",name:"sort",id:"sortName",value:"name"},XA={class:"form-check dropdown-item"},ZA={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"conferenceID"},xA={class:"form-check dropdown-item"},eO={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},tO={class:"dropdown"},nO={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},oO={key:0,class:"filter-btn-value"},sO={key:1,class:"filter-btn-value"},iO={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},rO={class:"form-check dropdown-item"},aO=["id"],lO=["for"],dO={class:"dashboard-meta"},uO={class:"dashboard-count"},cO={key:0},pO={key:0},fO={key:1},hO={key:0,class:"filter-chip"},mO=["onClick","aria-label"],vO={key:0,class:"conference-feedback",role:"alert"},gO={key:1,class:"conference-feedback",role:"status"},yO={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},bO={class:"cell-anon",role:"cell"},wO={class:"anon-text"},kO=["textContent","href"],EO={class:"anon-sub"},CO={class:"anon-source"},SO=["textContent"],_O={key:0},NO=["textContent","href"],RO={class:"cell-status",role:"cell"},DO={class:"status-line"},TO=["textContent"],AO={class:"cell-views num",role:"cell"},OO=["textContent"],PO={class:"cell-expires",role:"cell"},IO={key:0},VO={key:1,class:"empty-dash","aria-label":"No review window"},qO={class:"cell-actions",role:"cell"},MO={class:"dropdown"},UO=["disabled","aria-label"],$O={class:"dropdown-menu dropdown-menu-right"},LO=["href"],FO=["href"],BO={key:0},HO=["onClick"],zO={key:0,class:"paper-table-empty"},jO={key:0},GO={key:1},WO={class:"paper-table-empty-actions"},KO={key:1,href:"/conference/new",class:"btn btn-ink"};function Hl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",LA,[n("div",FA,[n("div",BA,[t[10]||(t[10]=fe('
My work \xA0/\xA0 Conferences

Your conferences

Group anonymizations by venue, give chairs a shared dashboard, and set one expiry for every submission.

New conference
',2)),D((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter conferences","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=ae(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",HA,[D(n("input",zA,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",jA,[n("div",GA,[n("button",WA,[t[3]||(t[3]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",KA,u({name:"Name",conferenceID:"ID","-status":"Status"}[e.orderBy]||"Custom"),1)]),n("div",YA,[t[7]||(t[7]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",JA,[D(n("input",QA,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortName"},"Name",-1))]),n("div",XA,[D(n("input",ZA,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[5]||(t[5]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",xA,[D(n("input",eO,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[6]||(t[6]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))])])]),n("div",tO,[n("button",nO,[t[8]||(t[8]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",oO,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",sO,u((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",iO,[t[9]||(t[9]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(K,null,te(e.statusLabels,(s,r,a)=>(l(),d("div",rO,[D(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,aO),[[o,{state:e.viewState,set:c=>{e.filters.status[r]=c},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},u(s),9,lO)]))),256))])])])],32)),[[i,e.viewState]]),n("div",dO,[n("span",uO,[e.filteredConferences?.length===e.conferences?.length?(l(),d("span",cO,[v(u(e.fmt?.number(e.conferences?.length))+" conference",1),e.conferences?.length!==1?(l(),d("span",pO,"s")):p("v-if",!0)])):p("v-if",!0),e.filteredConferences?.length!==e.conferences?.length?(l(),d("span",fO,u(e.fmt?.number(e.filteredConferences?.length))+" of "+u(e.fmt?.number(e.conferences?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(K,null,te(e.filters?.status,(s,r,a)=>(l(),d(K,null,[s===!1?(l(),d("span",hO,[v(" Hiding "+u(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:c=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,mO)])):p("v-if",!0)],64))),256))])]),e.error?(l(),d("div",vO,[n("span",null,u(e.error),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>e.loadConferences())},"Retry")])):p("v-if",!0),e.loading?(l(),d("div",gO,"Loading conferences\u2026")):p("v-if",!0),n("div",yO,[t[24]||(t[24]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Conference"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Repos"),n("div",{role:"columnheader"},"Review window"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(K,null,te(e.filteredConferences,(s,r)=>(l(),d("div",{class:P(["paper-table-row row-clickable",{"repo-inactive":s?.status=="expired"||s?.status=="removed"}]),role:"row",key:s?.conferenceID},[n("div",bO,[t[13]||(t[13]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",wO,[n("a",{class:"repo-name",textContent:u(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,kO),n("div",EO,[n("span",CO,[t[12]||(t[12]=v("ID ",-1)),n("span",{class:"commit-hash",textContent:u(s?.conferenceID)},null,8,SO),s?.url?(l(),d("span",_O,[t[11]||(t[11]=v(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:u(e.fmt?.limitTo(s?.url,60)),href:e.safeUrl(s?.url)},null,8,NO)])):p("v-if",!0)])])])]),n("div",RO,[n("div",DO,[n("span",{class:P(["status-dot","status-"+s?.status]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:u(e.fmt?.statusLabel(s?.status))},null,8,TO)])]),n("div",AO,[t[14]||(t[14]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),t[15]||(t[15]=v()),n("span",{textContent:u(e.fmt?.number(s?.nbRepositories||0))},null,8,OO)]),n("div",PO,[t[16]||(t[16]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.startDate?(l(),d("span",IO,u(e.fmt?.date(s?.startDate,"mediumDate"))+" \u2013 "+u(e.fmt?.date(s?.endDate,"mediumDate")),1)):p("v-if",!0),s?.startDate?p("v-if",!0):(l(),d("span",VO,"\u2014"))]),n("div",qO,[n("div",MO,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:s?.removing,"aria-label":"Actions for "+s?.name},[...t[17]||(t[17]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,UO),n("div",$O,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[18]||(t[18]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View ",-1)])],8,LO),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit ",-1)])],8,FO),s?.status!="removed"?(l(),d("div",BO,[t[21]||(t[21]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:a=>e.removeConference(s)},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove ",-1)])],8,HO)])):p("v-if",!0)])])])],2))),128)),!e.loading&&!e.error&&e.filteredConferences?.length==0?(l(),d("div",zO,[t[23]||(t[23]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conferences?.length==0?(l(),d("span",jO,"You have not created a conference yet.")):p("v-if",!0),e.conferences?.length>0?(l(),d("span",GO,"Nothing matches the current filters.")):p("v-if",!0),n("div",WO,[e.conferences?.length>0?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")):p("v-if",!0),e.conferences?.length==0?(l(),d("a",KO,[...t[22]||(t[22]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),v(" New conference",-1)])])):p("v-if",!0)])])):p("v-if",!0)])])])}var YO={class:"container page dashboard-page paper-page"},JO={class:"row"},QO={class:"w-100"},XO={class:"dashboard-heading"},ZO=["open"],xO=["aria-expanded"],eP=["stroke-dasharray"],tP={key:1,d:"M7 12c0-4 4-4 5 0s5 4 5 0-4-4-5 0-5 4-5 0",class:"quota-ring-unlimited"},nP={key:0,class:"quota-summary-value"},oP={key:0},sP={class:"quota-panel",id:"dashboard-usage"},iP={class:"quota-panel-heading"},rP={key:1,class:"quota-loading",role:"status"},aP={class:"search-wrap"},lP={type:"search",id:"search",class:"form-control","aria-label":"Search anonymizations",placeholder:"Search projects, IDs, or conferences\u2026",autocomplete:"off"},dP=["aria-expanded"],uP={class:"btn-group",role:"group","aria-label":"Type"},cP=["aria-pressed"],pP=["aria-pressed"],fP=["aria-pressed"],hP=["aria-pressed"],mP={class:"dropdown"},vP={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},gP={class:"filter-btn-value"},yP={class:"sr-only"},bP={class:"dropdown-menu","aria-labelledby":"dropdownSort"},wP={class:"form-check dropdown-item"},kP=["onClick","checked","id"],EP=["for"],CP={class:"dropdown"},SP={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},_P={key:0,class:"filter-btn-value"},NP={key:1,class:"filter-btn-value"},RP={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},DP={class:"form-check dropdown-item"},TP=["id"],AP=["for"],OP={key:0,class:"dashboard-meta"},PP={class:"dashboard-view-tabs",role:"group","aria-label":"Project view"},IP=["aria-pressed"],VP=["aria-pressed","aria-label"],qP={class:"dashboard-count"},MP={key:0},UP={key:0},$P={key:1},LP={class:"dashboard-active-filters"},FP=["onClick","aria-label","title"],BP=["aria-busy"],HP={class:"paper-table-head",role:"row"},zP=["aria-sort"],jP=["aria-sort"],GP=["aria-sort"],WP=["aria-sort"],KP={key:0,class:"paper-table-row paper-table-skeleton",role:"row","aria-hidden":"true"},YP=["onClick"],JP={class:"cell-anon",role:"cell"},QP=["aria-label","title"],XP={class:"project-type-svg","aria-hidden":"true"},ZP=["href"],xP={class:"anon-text"},eI={class:"anon-title"},tI=["title","textContent","href"],nI=["textContent"],oI={key:2,class:"type-badge type-coauthor",title:"You are a co-author on this anonymization"},sI={class:"anon-sub"},iI=["title"],rI=["title"],aI=["title"],lI=["textContent"],dI={class:"dashboard-row-meta",role:"presentation"},uI={class:"cell-status",role:"cell"},cI={class:"status-line"},pI=["textContent"],fI=["textContent","title"],hI=["title"],mI=["href"],vI=["onClick"],gI={key:4,class:"status-sub status-sub-date"},yI=["aria-label"],bI={class:"cell-expires",role:"cell"},wI={key:0,class:"expires-never"},kI=["textContent"],EI={key:2,class:"expires-past"},CI={key:3,class:"expires-past"},SI={key:4,class:"empty-dash","aria-label":"Not applicable"},_I={class:"cell-actions",role:"cell"},NI=["onClick","disabled","title","aria-label"],RI=["onClick","data-project-actions","aria-controls","aria-expanded"],DI={key:2,class:"dropdown"},TI=["data-project-actions","aria-label"],AI={class:"dropdown-menu dropdown-menu-right"},OI=["onClick","aria-controls","aria-expanded"],PI=["href"],II=["href"],VI=["onClick","disabled"],qI=["href"],MI=["onClick"],UI=["onClick"],$I=["onClick"],LI={key:5},FI=["onClick"],BI={key:1,class:"project-details-row",role:"row"},HI=["id","onKeydown"],zI={class:"project-details-heading"},jI=["onClick"],GI={class:"project-details-list"},WI={key:0},KI={key:1},YI={key:0},JI={key:2},QI={key:0,class:"project-progress-help"},XI=["href"],ZI=["onSubmit"],xI=["for"],e4=["id"],t4={class:"project-name-controls"},n4=["id","aria-describedby","disabled"],o4=["disabled"],s4={key:0,class:"project-name-error",role:"alert"},i4={key:1,role:"status"},r4={key:0,class:"paper-table-empty"},a4={key:0},l4={key:1},d4={class:"paper-table-empty-actions"},u4={key:1,href:"/anonymize",class:"btn btn-ink"},c4={key:0,class:"dashboard-pagination"},p4={key:0,role:"alert"},f4=["disabled"];function zl(e,t){let o=Ge("quota-usage"),i=ge("field"),s=ge("form");return l(),d("div",YO,[n("div",JO,[n("div",QO,[n("div",XO,[n("div",null,[t[27]||(t[27]=n("h1",{class:"paper-page-title"},"Projects",-1)),t[28]||(t[28]=n("p",{class:"paper-page-lede"},"Manage your anonymous links.",-1)),n("details",{class:"dashboard-quota",open:e.quotaExpanded,onToggle:t[1]||(t[1]=r=>e.quotaExpanded=r.target.open),onKeydown:t[2]||(t[2]=An(ae(r=>e.closeQuota(),["prevent","stop"]),["esc"]))},[n("summary",{"aria-controls":"dashboard-usage","aria-expanded":e.quotaExpanded},[(l(),d("svg",{class:P(["quota-summary-ring",e.quota?"quota-"+e.quota.repository.level:""]),viewBox:"0 0 24 24","aria-hidden":"true"},[t[21]||(t[21]=n("circle",{class:"quota-ring-track",cx:"12",cy:"12",r:"9"},null,-1)),e.quota&&!e.quota.repository.unlimited?(l(),d("circle",{key:0,class:"quota-ring-fill",cx:"12",cy:"12",r:"9",pathLength:"100","stroke-dasharray":e.quota.repository.percent+" 100"},null,8,eP)):p("v-if",!0),e.quota?.repository.unlimited?(l(),d("path",tP)):p("v-if",!0)],2)),t[23]||(t[23]=n("span",{class:"quota-summary-label"},"Usage",-1)),e.quota?(l(),d("span",nP,[v(u(e.fmt.number(e.quota.repository.used)),1),e.quota.repository.unlimited?p("v-if",!0):(l(),d("span",oP," / "+u(e.fmt.number(e.quota.repository.total)),1)),t[22]||(t[22]=v(" repos",-1))])):p("v-if",!0),t[24]||(t[24]=n("svg",{class:"project-type-svg quota-summary-chevron","aria-hidden":"true"},[n("use",{href:"#project-icon-chevron"})],-1))],8,xO),n("div",sP,[n("div",iP,[t[26]||(t[26]=n("h2",null,"Account usage",-1)),n("button",{type:"button",class:"project-close","aria-label":"Close usage",onClick:t[0]||(t[0]=r=>e.closeQuota())},[...t[25]||(t[25]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),e.quota?(l(),Ft(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",rP,"Loading usage\u2026"))])],40,ZO)]),t[29]||(t[29]=fe('',1))]),p(" Search + filters "),D((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter anonymizations","accept-charset":"UTF-8",onSubmit:t[9]||(t[9]=ae(r=>e.submitForm(r,()=>{r.preventDefault()}),["prevent"]))},[n("div",aP,[D(n("input",lP,null,512),[[i,{state:e.viewState,set:r=>{e.search=r},value:e.search,form:null,options:{}}]])]),n("button",{class:"btn dashboard-filters-toggle",type:"button","aria-expanded":e.filtersExpanded,"aria-controls":"dashboard-filter-controls",onClick:t[3]||(t[3]=r=>e.filtersExpanded=!e.filtersExpanded)},[...t[30]||(t[30]=[v("Filters",-1),n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})],-1)])],8,dP),n("div",{id:"dashboard-filter-controls",class:P(["dashboard-filter-controls",{expanded:e.filtersExpanded}])},[n("div",uP,[n("button",{type:"button",class:P(["btn",{"btn-primary":e.typeFilter==="all"}]),onClick:t[4]||(t[4]=r=>e.typeFilter="all"),"aria-pressed":e.typeFilter==="all"},"All",10,cP),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="repo"}]),title:"Repositories",onClick:t[5]||(t[5]=r=>e.typeFilter="repo"),"aria-pressed":e.typeFilter==="repo"},[...t[31]||(t[31]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("span",{class:"type-filter-label"},"Repos",-1)])],10,pP),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="pr"}]),title:"Pull requests",onClick:t[6]||(t[6]=r=>e.typeFilter="pr"),"aria-pressed":e.typeFilter==="pr"},[...t[32]||(t[32]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-pr"})],-1),n("span",{class:"type-filter-label"},"PRs",-1)])],10,fP),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="gist"}]),title:"Gists",onClick:t[7]||(t[7]=r=>e.typeFilter="gist"),"aria-pressed":e.typeFilter==="gist"},[...t[33]||(t[33]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1),n("span",{class:"type-filter-label"},"Gists",-1)])],10,hP)]),n("div",{id:"dashboard-extra-filters",class:P(["dashboard-extra-filters",{expanded:e.filtersExpanded}])},[n("div",mP,[n("button",vP,[t[35]||(t[35]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",gP,u(e.sortLabel()),1),(l(),d("svg",{class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)),n("span",yP,u(e.sortDesc()?"descending":"ascending"),1)]),n("div",bP,[t[36]||(t[36]=n("h6",{class:"dropdown-header"},"Order by",-1)),(l(!0),d(K,null,te(e.sortFields,(r,a,c)=>(l(),d("div",wP,[n("input",{class:"form-check-input",type:"radio",name:"sort",onClick:f=>e.setSort(a,r.defaultDesc),checked:e.isSortedBy(a),id:"sort-"+c},null,8,kP),n("label",{class:"form-check-label",for:"sort-"+c},u(r?.label),9,EP)]))),256)),t[37]||(t[37]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item",onClick:t[8]||(t[8]=r=>e.toggleSortDirection())},u(e.sortDesc()?"Switch to ascending":"Switch to descending"),1)])]),n("div",CP,[n("button",SP,[t[38]||(t[38]=n("span",{class:"filter-btn-label"},"Status",-1)),e.hasHiddenStatus()?p("v-if",!0):(l(),d("span",_P,"All")),e.hasHiddenStatus()?(l(),d("span",NP,u(e.hiddenStatusCount())+" hidden",1)):p("v-if",!0)]),n("div",RP,[t[39]||(t[39]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(K,null,te(e.statusKeyLabels,(r,a,c)=>(l(),d("div",DP,[D(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+a},null,8,TP),[[i,{state:e.viewState,set:f=>{e.filters.status[a]=f},value:e.filters?.status[a],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+a},u(r),9,AP)]))),256))])])],2)],2)],32)),[[s,e.viewState]]),p(" Result count + active filter chips "),e.loading?p("v-if",!0):(l(),d("div",OP,[n("div",PP,[n("button",{type:"button","aria-pressed":e.projectView==="all",onClick:t[10]||(t[10]=r=>e.setProjectView("all")),"aria-label":"All projects"},[...t[40]||(t[40]=[n("span",{class:"dashboard-view-long"},"All projects",-1),n("span",{class:"dashboard-view-short","aria-hidden":"true"},"All",-1)])],8,IP),n("button",{type:"button","aria-pressed":e.projectView==="attention",onClick:t[11]||(t[11]=r=>e.setProjectView("attention")),"aria-label":"Needs attention "+e.attentionCount()},[t[41]||(t[41]=n("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[42]||(t[42]=n("span",null,"attention",-1)),t[43]||(t[43]=v()),n("span",{class:P(["attention-count",{"has-attention":e.attentionCount()>0}])},u(e.attentionCount()),3)],8,VP)]),n("span",qP,[(e.dashboardTotals?.filtered??e.filteredItems?.length)===(e.dashboardTotals?.total??e.items?.length)?(l(),d("span",MP,[v(u(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" project",1),(e.dashboardTotals?.total??e.items?.length)!==1?(l(),d("span",UP,"s")):p("v-if",!0)])):(l(),d("span",$P,u(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" of "+u(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" shown",1))]),n("div",LP,[(l(!0),d(K,null,te(e.filters?.status,(r,a,c)=>(l(),d(K,null,[r===!1?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:f=>e.filters.status[a]=!0,"aria-label":"Show "+e.statusKeyLabels[a]+" again",title:"Show "+e.statusKeyLabels[a]+" again"},[v(u(e.statusKeyLabels[a])+" hidden",1),t[44]||(t[44]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))],8,FP)):p("v-if",!0)],64))),256)),e.typeFilter!=="all"?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:t[12]||(t[12]=r=>e.typeFilter="all"),"aria-label":"Show all project types"},[v(u(e.typeFilter==="repo"?"Repositories":e.typeFilter==="pr"?"Pull requests":"Gists"),1),t[45]||(t[45]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))])):p("v-if",!0),e.showClearFilters()?(l(),d("button",{key:1,type:"button",class:"btn-link-inline",onClick:t[13]||(t[13]=r=>e.clearFilters())},"Clear filters")):p("v-if",!0)])]))]),p(" Table "),n("div",{class:"paper-table paper-table-dashboard",role:"table","aria-label":"Anonymizations","aria-busy":e.loading},[n("div",HP,[n("div",{role:"columnheader","aria-sort":e.isSortedBy("_label")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("_label")}]),onClick:t[14]||(t[14]=r=>e.setSort("_label"))},[t[47]||(t[47]=v(" Project ",-1)),e.isSortedBy("_label")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[46]||(t[46]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,zP),n("div",{role:"columnheader","aria-sort":e.isSortedBy("status")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("status")}]),onClick:t[15]||(t[15]=r=>e.setSort("status"))},[t[49]||(t[49]=v(" Status ",-1)),e.isSortedBy("status")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[48]||(t[48]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,jP),n("div",{role:"columnheader",class:"num","aria-sort":e.isSortedBy("pageView")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("pageView")}]),onClick:t[16]||(t[16]=r=>e.setSort("pageView"))},[t[51]||(t[51]=v(" Views ",-1)),e.isSortedBy("pageView")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[50]||(t[50]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,GP),n("div",{role:"columnheader","aria-sort":e.isSortedBy("options.expirationDate")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("options.expirationDate")}]),onClick:t[17]||(t[17]=r=>e.setSort("options.expirationDate"))},[t[53]||(t[53]=v(" Expires ",-1)),e.isSortedBy("options.expirationDate")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[52]||(t[52]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,WP),t[54]||(t[54]=n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")],-1))]),p(" Loading skeleton: keeps the layout stable while the three lists load "),(l(),d(K,null,te([1,2,3,4],(r,a)=>(l(),d(K,null,[e.loading?(l(),d("div",KP,[...t[55]||(t[55]=[n("div",{class:"cell-anon",role:"cell"},[n("span",{class:"skeleton skeleton-badge"}),n("div",{class:"anon-text"},[n("span",{class:"skeleton skeleton-line",style:{width:"38%"}}),n("span",{class:"skeleton skeleton-line skeleton-line-sm",style:{width:"56%"}})])],-1),n("div",{class:"cell-status",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"60%"}})],-1),n("div",{class:"cell-views num",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"40%"}})],-1),n("div",{class:"cell-expires",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"55%"}})],-1),n("div",{class:"cell-actions",role:"cell"},null,-1)])])):p("v-if",!0)],64))),64)),(l(!0),d(K,null,te(e.filteredItems,(r,a)=>(l(),d(K,{key:r?._type+":"+(r?._id||a)},[e.loading?p("v-if",!0):(l(),d("div",{key:0,class:P(["paper-table-row",{"repo-inactive":r?._statusKey=="expired"||r?._statusKey=="removed","repo-error":r?.status=="error","row-clickable":!!r?._viewUrl}]),role:"row",onClick:c=>e.openItem(r,c)},[n("div",JP,[n("span",{class:"project-type-icon",role:"img","aria-label":r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist",title:r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist"},[(l(),d("svg",XP,[n("use",{href:"#project-type-"+r._type},null,8,ZP)]))],8,QP),n("div",xP,[n("div",eI,[r?._viewUrl?(l(),d("a",{key:0,class:"repo-name",title:r._label,textContent:u(r?._label),href:e.safeUrl(r?._viewUrl)},null,8,tI)):p("v-if",!0),r?._viewUrl?p("v-if",!0):(l(),d("span",{key:1,class:"repo-name repo-name-static",textContent:u(r?._label)},null,8,nI)),r?.role==="coauthor"?(l(),d("span",oI,"Co-author")):p("v-if",!0)]),n("div",sI,[r?._id?(l(),d("code",{key:0,class:"anonymous-id",title:r._id},u(r._id),9,iI)):p("v-if",!0),r?._type==="repo"&&r?.source?.commit?(l(),d("span",{key:1,class:"commit-hash",title:r.source.commit},u(r.source.commit.substring(0,8)),9,rI)):p("v-if",!0),r?.conference?(l(),d("span",{key:2,class:"cell-conf conf-tag",title:r?.conference},[t[56]||(t[56]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),t[57]||(t[57]=v()),n("span",{textContent:u(r?.conference)},null,8,lI)],8,aI)):p("v-if",!0)])])]),n("div",dI,[n("div",uI,[n("div",cI,[n("span",{class:P(["status-dot","status-"+r?._statusKey]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:u(e.fmt?.statusLabel(r?.status))},null,8,pI)]),r?.status=="error"&&r?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:u(e.fmt?.statusMsg(r?.statusMessage)),title:r?.statusMessage},null,8,fI)):p("v-if",!0),r?._stale?(l(),d("div",{key:1,class:"status-sub status-sub-warn",title:"Last activity "+e.fmt?.humanTime(r?.anonymizeDate||r?.lastView)}," Last activity "+u(e.fmt?.humanTime(r?.anonymizeDate||r?.lastView))+" \xB7 may be stuck ",9,hI)):p("v-if",!0),r.status==="error"&&r._editUrl?(l(),d("a",{key:2,class:"project-attention-action",href:e.safeUrl(r._editUrl)},"Fix source",8,mI)):p("v-if",!0),r._stale||r._broken?(l(),d("button",{key:3,type:"button",class:"project-attention-action",onClick:ae(c=>e.showProjectDetails(r),["stop"])},u(r._broken?"Review details":"Check progress"),9,vI)):p("v-if",!0),r?.status!="error"&&!r?._stale&&r?.anonymizeDate?(l(),d("div",gI," anonymized "+u(e.fmt?.humanTime(r?.anonymizeDate)),1)):p("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","aria-label":e.fmt.number(r.pageView)+" views"},[t[58]||(t[58]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),n("span",null,u(e.fmt.number(r.pageView)),1)],8,yI),n("div",bI,[t[59]||(t[59]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),r?._expiry?.kind==="never"?(l(),d("span",wI,"Never")):p("v-if",!0),r?._expiry?.kind==="date"?(l(),d("span",{key:1,textContent:u(e.fmt?.humanTime(r?._expiry?.date))},null,8,kI)):p("v-if",!0),r?._expiry?.kind==="expired"&&r?._expiry?.date?(l(),d("span",EI,"Expired "+u(e.fmt?.humanTime(r?._expiry?.date)),1)):p("v-if",!0),r?._expiry?.kind==="expired"&&!r?._expiry?.date?(l(),d("span",CI,"Expired")):p("v-if",!0),r?._expiry?.kind==="none"?(l(),d("span",SI,"\u2014")):p("v-if",!0)])]),n("div",_I,[r._viewUrl?(l(),d("button",{key:0,type:"button",class:"copy-link-inline",onClick:ae(c=>e.copyLink(r),["stop"]),disabled:!!e.copyingId,title:"Copy anonymous link for "+r._label,"aria-label":"Copy anonymous link for "+r._label},[...t[60]||(t[60]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-copy"})],-1)])],8,NI)):p("v-if",!0),r._broken?(l(),d("button",{key:1,type:"button",class:"project-details-button",onClick:ae(c=>e.showProjectDetails(r),["stop"]),"data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Details",8,RI)):p("v-if",!0),r?._broken?p("v-if",!0):(l(),d("div",DI,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-label":"Actions for "+r?._name},[...t[61]||(t[61]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,TI),n("div",AI,[n("button",{type:"button",class:"dropdown-item",onClick:c=>e.showProjectDetails(r),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Project details & name",8,OI),n("a",{class:"dropdown-item",href:e.safeUrl(r?._viewUrl)}," View ",8,PI),r?._type==="repo"&&r?.options?.page&&r?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+r?.repoId+"/")}," View page ",8,II)):p("v-if",!0),r?._viewUrl?(l(),d("button",{key:1,type:"button",class:"dropdown-item",onClick:c=>e.copyLink(r),disabled:!!e.copyingId}," Copy anonymous link ",8,VI)):p("v-if",!0),n("a",{class:"dropdown-item",href:e.safeUrl(r?._editUrl)}," Edit ",8,qI),r?.status=="ready"||r?.status=="error"?(l(),d("button",{key:2,type:"button",class:"dropdown-item",onClick:c=>e.refreshItem(r)}," Force update ",8,MI)):p("v-if",!0),r?.status=="removed"?(l(),d("button",{key:3,type:"button",class:"dropdown-item",onClick:c=>e.refreshItem(r)}," Enable ",8,UI)):p("v-if",!0),r?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"dropdown-item",onClick:c=>e.extendItem(r)}," Extend 6 months ",8,$I)):p("v-if",!0),(r?.status=="ready"||r?.status=="expired"||r?.status=="error")&&r?.role!=="coauthor"?(l(),d("div",LI,[t[62]||(t[62]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:c=>e.removeItem(r)}," Remove ",8,FI)])):p("v-if",!0)])]))])],10,YP)),!e.loading&&e.selectedProject===r?(l(),d("div",BI,[n("div",{class:"project-details",role:"cell","aria-colspan":"5",id:e.projectDetailsId(r),tabindex:"-1",onKeydown:An(ae(c=>e.closeProjectDetails(r),["stop"]),["esc"])},[n("div",zI,[t[64]||(t[64]=n("h2",null,"Project details",-1)),n("button",{type:"button",class:"project-close",onClick:c=>e.closeProjectDetails(r),"aria-label":"Close project details"},[...t[63]||(t[63]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,jI)]),n("dl",GI,[n("div",null,[t[65]||(t[65]=n("dt",null,"Source",-1)),n("dd",null,u(r._source||"Not available"),1)]),n("div",null,[t[66]||(t[66]=n("dt",null,"Anonymous ID",-1)),n("dd",null,[n("code",null,u(r._id||"Missing identifier"),1)])]),r.source?.commit?(l(),d("div",WI,[t[67]||(t[67]=n("dt",null,"Commit",-1)),n("dd",null,[n("code",null,u(r.source.commit),1)])])):p("v-if",!0),r.conference?(l(),d("div",KI,[t[68]||(t[68]=n("dt",null,"Conference",-1)),n("dd",null,u(r.conference),1)])):p("v-if",!0),n("div",null,[t[69]||(t[69]=n("dt",null,"Status",-1)),n("dd",null,[v(u(e.fmt.statusLabel(r.status)),1),r.statusMessage?(l(),d("span",YI," \xB7 "+u(e.fmt.statusMsg(r.statusMessage)),1)):p("v-if",!0)])]),r.anonymizeDate?(l(),d("div",JI,[t[70]||(t[70]=n("dt",null,"Last anonymized",-1)),n("dd",null,u(e.fmt.humanTime(r.anonymizeDate)),1)])):p("v-if",!0)]),r._stale?(l(),d("p",QI,"This download has not progressed recently. Check the source access and selected branch before retrying.")):p("v-if",!0),r._editUrl?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl(r._editUrl)},u(e.needsAttention(r)?"Check source settings":"Edit anonymization settings"),9,XI)):p("v-if",!0),r._id?(l(),d("form",{key:2,class:"project-name-form",onSubmit:ae(c=>e.saveProjectName(r),["prevent"])},[n("label",{for:"project-name-"+r._type+"-"+r._id},"Project name",8,xI),n("p",{id:"project-name-help-"+r._type+"-"+r._id},"Only you see this name. Leave it blank to use the default.",8,e4),n("div",t4,[D(n("input",{class:"form-control",type:"text",id:"project-name-"+r._type+"-"+r._id,"aria-describedby":"project-name-help-"+r._type+"-"+r._id,maxlength:"100","onUpdate:modelValue":t[18]||(t[18]=c=>e.projectName=c),disabled:e.nameSaving},null,8,n4),[[wt,e.projectName]]),n("button",{class:"btn btn-ink",type:"submit",disabled:e.nameSaving},u(e.nameSaving?"Saving\u2026":"Save name"),9,o4)]),e.nameError?(l(),d("p",s4,u(e.nameError),1)):p("v-if",!0),e.nameMessage?(l(),d("p",i4,u(e.nameMessage),1)):p("v-if",!0)],40,ZI)):p("v-if",!0)],40,HI)])):p("v-if",!0)],64))),128)),!e.loading&&e.filteredItems?.length==0?(l(),d("div",r4,[t[72]||(t[72]=n("svg",{class:"project-type-svg project-empty-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.hasProjects()?p("v-if",!0):(l(),d("span",a4,"You have no anonymizations yet.")),e.hasProjects()?(l(),d("span",l4,"Nothing matches the current filters.")):p("v-if",!0),n("div",d4,[e.hasActiveFilters()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=r=>e.clearFilters())},"Clear filters")):p("v-if",!0),e.hasProjects()?p("v-if",!0):(l(),d("a",u4,[...t[71]||(t[71]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),v(" New anonymization",-1)])]))])])):p("v-if",!0)],8,BP)]),e.dashboardCursor||e.dashboardError?(l(),d("div",c4,[e.dashboardError?(l(),d("p",p4,u(e.dashboardError),1)):p("v-if",!0),e.dashboardCursor?(l(),d("button",{key:1,type:"button",class:"btn",onClick:t[20]||(t[20]=r=>e.loadMoreProjects()),disabled:e.loadingMore},u(e.loadingMore?"Loading\u2026":"Load more projects"),9,f4)):p("v-if",!0)])):p("v-if",!0)])}var h4={class:"explorer-page"},m4=["aria-label"],v4={class:"ui-icon","aria-hidden":"true"},g4=["href"],y4=["textContent"],b4={class:"leftCol-head"},w4={class:"leftCol-search"},k4={class:"tree-search-box"},E4=["href"],C4={type:"text",class:"tree-search-input",placeholder:"Search files","aria-label":"Search files"},S4={class:"leftCol-project-header"},_4=["textContent","title"],N4={class:"project-file-count"},R4=["title"],D4={class:"leftCol-body"},T4={key:0,class:"paper-inline-warning",role:"alert"},A4={key:1,class:"paper-inline-warning",role:"alert"},O4={class:"leftCol-foot"},P4=["title"],I4=["title"],V4=["title"],q4={key:2,class:"last-update",title:"Older repositories have no recorded publication date. The source commit date does not establish when files became available here."},M4={class:"explorer-main"},U4={class:"status-bar"},$4={class:"breadcrumb paths","aria-label":"Path"},L4=["textContent"],F4={class:"status-bar-actions"},B4=["href"],H4={class:"d-none d-md-inline"},z4={class:"ui-icon","aria-hidden":"true"},j4=["href"],G4={class:"d-none d-md-inline"},W4=["href"],K4=["href"],Y4=["href"],J4=["href"],Q4={class:"explorer-content"};function jl(e,t){let o=Ge("tree"),i=Ge("partial-view"),s=ge("field");return l(),d("div",h4,[D(n("button",{class:"sidebar-toggle",onClick:t[0]||(t[0]=r=>e.sidebarCollapsed=!e.sidebarCollapsed),"aria-label":e.sidebarCollapsed?"Show files":"Hide files"},[(l(),d("svg",v4,[n("use",{href:e.sidebarCollapsed?"#ui-icon-folder":"#project-icon-close"},null,8,g4)])),n("span",{textContent:u(e.sidebarCollapsed?"Files":"Close")},null,8,y4)],8,m4),[[W,e.files?.length]]),D(n("div",{class:P(["leftCol",{collapsed:e.sidebarCollapsed}])},[n("div",b4,[t[7]||(t[7]=n("span",{class:"leftCol-eyebrow"},"Files",-1)),n("button",{class:"leftCol-close","aria-label":"Close files",onClick:t[1]||(t[1]=r=>e.sidebarCollapsed=!0)},[...t[6]||(t[6]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),n("div",w4,[n("div",k4,[(l(),d("svg",{class:P(["ui-icon tree-search-icon",{"fa-spin":e.fileSearchLoading}]),"aria-hidden":"true"},[n("use",{href:e.fileSearchLoading?"#ui-icon-spinner":"#ui-icon-search"},null,8,E4)],2)),D(n("input",C4,null,512),[[s,{state:e.viewState,set:r=>{e.fileSearchQuery=r},value:e.fileSearchQuery,form:null,options:{debounce:300},change:()=>{e.onFileSearchChange()}}]]),D(n("kbd",{class:"tree-search-kbd"},u(e.isMac?"\u2318":"Ctrl+")+"K",513),[[W,!e.fileSearchQuery]]),D(n("button",{class:"tree-search-clear","aria-label":"Clear search",onClick:t[2]||(t[2]=r=>{e.fileSearchQuery="",e.onFileSearchChange()})},"\xD7",512),[[W,e.fileSearchQuery]])])]),n("div",S4,[n("span",{class:"project-name",textContent:u(e.repoId),title:e.repoId},null,8,_4),n("span",N4,u(e.fileCounts?.[""]||e.files?.length)+" files",1),e.options?.expirationDate?(l(),d("span",{key:0,class:"project-expiry",title:e.options.expirationDate},[t[8]||(t[8]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),v(" Available until "+u(e.fmt?.date(e.options.expirationDate)),1)],8,R4)):p("v-if",!0)]),n("div",D4,[e.options?.truncatedFolders?.length>0?(l(),d("div",T4,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fmt?.translate("WARNINGS.repo_truncated")),1)])):p("v-if",!0),e.options?.hasSubmodules?(l(),d("div",A4,[t[10]||(t[10]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fmt?.translate("WARNINGS.submodules_not_included")),1)])):p("v-if",!0),Ee(o,{class:"files",file:e.files,"search-query":e.fileSearchQuery,"search-results":e.fileSearchResults,page:e.viewState},null,8,["file","search-query","search-results","page"])]),n("div",O4,[n("span",{class:"last-update",title:e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate},u(e.options?.sourceCommitDate?"Source commit":e.options?.anonymizedAt?"Anonymized":"Updated")+" "+u(e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),9,P4),e.options?.settingsSavedAt?(l(),d("span",{key:0,class:"last-update",title:e.options.settingsSavedAt}," Settings saved "+u(e.fmt?.date(e.options.settingsSavedAt)),9,I4)):p("v-if",!0),e.options?.publishedAt?(l(),d("span",{key:1,class:"last-update",title:e.options.publishedAt}," Snapshot ready "+u(e.fmt?.date(e.options.publishedAt)),9,V4)):p("v-if",!0),e.options?.anonymizedAt&&!e.options?.publishedAt?(l(),d("span",q4," Snapshot ready date not recorded ")):p("v-if",!0)])],2),[[W,e.files?.length]]),D(n("div",{class:"leftCol-backdrop",onClick:t[3]||(t[3]=r=>e.sidebarCollapsed=!0)},null,512),[[W,e.files?.length&&!e.sidebarCollapsed]]),n("div",M4,[D(n("div",U4,[n("ol",$4,[(l(!0),d(K,null,te(e.paths,(r,a)=>(l(),d("li",{class:"breadcrumb-item",textContent:u(r)},null,8,L4))),256))]),n("div",F4,[e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[11]||(t[11]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,B4)):p("v-if",!0),e.type=="html-doc"&&!e.showSource?(l(),d("button",{key:1,class:P(["btn btn-sm",{"btn-active":e.allowScripts}]),"aria-label":"Allow this document to run JavaScript",title:"Scripts in this file are blocked by default. Enable them only if you trust the repository \u2014 the document stays isolated from your session either way.",onClick:t[4]||(t[4]=r=>e.toggleAllowScripts())},[t[12]||(t[12]=n("i",{class:"fab fa-js"},null,-1)),n("span",H4,u(e.allowScripts?"JS on":"JS off"),1)],2)):p("v-if",!0),e.type=="html-doc"?(l(),d("button",{key:2,class:"btn btn-sm","aria-label":"Toggle between the rendered document and its source",title:"Toggle between the rendered document and its source",onClick:t[5]||(t[5]=r=>e.toggleSource())},[(l(),d("svg",z4,[n("use",{href:e.showSource?"#project-icon-eye":"#ui-icon-code"},null,8,j4)])),n("span",G4,u(e.showSource?"Rendered":"Source"),1)])):p("v-if",!0),D(n("a",{target:"_self",class:"btn btn-sm btn-icon-only","aria-label":"View raw current file",title:"View raw file",href:e.safeUrl(e.url)},[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1)])],8,W4),[[W,e.content!=null&&e.type!="error"&&e.type!="rate_limited"]]),D(n("a",{target:"_self",class:"btn btn-sm btn-icon-only","aria-label":"Download current file",title:"Download this file",href:e.safeUrl(e.url+"&download=true")},[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,K4),[[W,e.content!=null&&e.type!="error"&&e.type!="rate_limited"]]),e.options?.download?(l(),d("a",{key:3,target:"_self",class:"btn btn-sm btn-ink","aria-label":"Download repository as ZIP",title:"Download the whole repository as a ZIP archive",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),n("span",{class:"d-none d-md-inline"}," Download repository",-1)])],8,Y4)):p("v-if",!0),e.options?.hasWebsite?(l(),d("a",{key:4,target:"_self",class:"btn btn-sm","aria-label":"Website",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),n("span",{class:"d-none d-md-inline"}," Website",-1)])],8,J4)):p("v-if",!0)])],512),[[W,e.type!="error"||e.files?.length]]),n("div",Q4,[Ee(i,{name:"partials/pageView.htm",state:e.viewState},null,8,["state"])])])])}var X4={class:"paper-faq"};function Gl(e,t){return l(),d("div",X4,[...t[0]||(t[0]=[fe('
Help

Answers to the questions that come up most.

If something's missing, write to us \u2014 report a bug on GitHub.

',1),n("div",{class:"paper-faq-body"},[n("aside",{class:"paper-faq-toc"},[n("div",{class:"paper-faq-toc-head"},"Contents"),n("nav",null,[n("a",{href:"#faq-general"},"General"),n("a",{href:"#faq-plans"},"Plans and billing"),n("a",{href:"#faq-features"},"Features"),n("a",{href:"#faq-limitations"},"Limitations"),n("a",{href:"#faq-privacy"},"Privacy & Security"),n("a",{href:"#faq-hosting"},"Self-Hosting")])]),n("section",{class:"faq-section","aria-label":"FAQs"},[n("div",null,[p(" General "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v("General ")]),n("div",{class:"panel-group",id:"faq-general",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingWhatIs"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#whatIs","aria-expanded":"false","aria-controls":"whatIs"}," What is Anonymous GitHub? ")])]),n("div",{id:"whatIs",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingWhatIs"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub is an open-source tool with free hosting and optional paid plans that anonymizes GitHub repositories and pull requests for double-anonymous (double-blind) peer review. It replaces identifying information \u2014 such as the repository owner, organization name, and custom terms \u2014 so that reviewers cannot determine the identity of the authors through the code repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingHowWork"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#howWork","aria-expanded":"false","aria-controls":"howWork"}," How does Anonymous GitHub work? ")])]),n("div",{id:"howWork",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingHowWork"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies requests to GitHub on the fly. In both cases, the original and anonymized versions of files are cached on the server. The system automatically detects and replaces the repository owner, organization name, and repository name. You can also specify additional custom terms to anonymize using one-per-line regex patterns. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingScope"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#scope","aria-expanded":"false","aria-controls":"scope"}," What is the scope of anonymization? ")])]),n("div",{id:"scope",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingScope"},[n("div",{class:"panel-body p-3"},[n("p",null," In double-anonymous peer review, the boundary of anonymization is the paper plus its online appendix \u2014 not the entire internet. Searching for any part of the paper or the online appendix can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the repository owner, organization, repository name, file and directory names, and file contents across all text-based file types. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCost"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#cost","aria-expanded":"false","aria-controls":"cost"}," How much does it cost? ")])]),n("div",{id:"cost",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCost"},[n("div",{class:"panel-body p-3"},[n("p",null," A free account includes 5 owned repositories and 2 GiB of source files. Optional paid plans offer more capacity, automatic refresh, and, with an author subscription, never-expiring repositories. Reviewers can read shared repositories without an account or payment. "),n("p",null,[v(" See "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(" for available plans and current prices. Offers depend on whether payments are enabled on this instance; the checkout shows the amount before you pay. Subscriptions help fund hosting, storage, backups, and continued maintenance. ")]),n("p",null,[v(" You can also support development through "),n("a",{href:"https://github.com/sponsors/tdurieux/",target:"_blank",rel:"noopener"},"GitHub Sponsors"),v(" or "),n("a",{href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener"},"Ko-fi"),v(". Donations are separate from subscriptions and do not automatically unlock paid features. ")])])])])]),p(" Plans and billing "),n("h4",{class:"faq-cat",id:"faq-plans-title"},"Plans and billing"),n("div",{class:"panel-group",id:"faq-plans",role:"tablist","aria-label":"Plans and billing","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFreePlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#freePlan","aria-expanded":"false","aria-controls":"freePlan"},"What is included in a free account?")])]),n("div",{id:"freePlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFreePlan"},[n("div",{class:"panel-body p-3"},[n("p",null,"The default free allowance is 5 repositories you own and 2 GiB of source files in total. Core anonymization and reviewer access remain free. You can manually refresh a repository within your allowance and choose a dated expiration up to one year ahead."),n("p",null,"Repositories shared with you as a coauthor do not use your own slots. Gists and pull requests are not included in these repository quotas. The usage shown in your account is the allowance available on this instance.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingAuthorPlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#authorPlans","aria-expanded":"false","aria-controls":"authorPlans"},"What do monthly and annual author subscriptions include?")])]),n("div",{id:"authorPlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingAuthorPlans"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Both include 20 owned repositories and 10 GiB of source files in total. They also allow automatic refresh when enabled in repository settings and let the owner choose "),n("strong",null,"Never expire"),v(".")]),n("p",null,[v("Monthly and annual plans offer the same features with different billing periods. They renew automatically until you cancel renewal. Current prices are shown in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(".")]),n("p",null,"Paid plans do not change how anonymization works. File-size limits and other service safeguards still apply. Review your anonymized content before sharing it.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingReviewPass"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#reviewPass","aria-expanded":"false","aria-controls":"reviewPass"},"Can I pay for one repository without subscribing?")])]),n("div",{id:"reviewPass",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingReviewPass"},[n("div",{class:"panel-body p-3"},[n("p",null,"The author review pass covers one selected repository for 180 days, with a separate 2 GiB allowance and automatic refresh when enabled. It is a one-time purchase and does not renew automatically."),n("p",null,[v("Enter the anonymized ID of an existing repository you own in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(". A pass does not unlock Never expire and does not override the repository's chosen expiration date.")])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConferencePlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#conferencePlans","aria-expanded":"false","aria-controls":"conferencePlans"},"Can a conference or lab pay for a group?")])]),n("div",{id:"conferencePlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConferencePlans"},[n("div",{class:"panel-body p-3"},[n("p",null,"A conference review package provides a shared allowance of 100 repositories and 50 GiB for a review window of up to 180 days. The organizer pays once; the package does not renew automatically. A lab organizing a review can use this shared package too."),n("p",null,"The paid conference must be activated by payment before authors can submit under its Conference ID. Eligible repositories use the conference allowance before an author's personal allowance, so authors do not each need a subscription for that capacity."),n("p",null,"The package has a fixed review window. Never expire still requires the repository owner's monthly or annual author subscription. See the available offer when creating a conference.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaidCoauthors"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paidCoauthors","aria-expanded":"false","aria-controls":"paidCoauthors"},"Does every coauthor need to pay?")])]),n("div",{id:"paidCoauthors",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaidCoauthors"},[n("div",{class:"panel-body p-3"},[n("p",null,"No. Coauthors can collaborate without buying a subscription. A shared repository uses its owner's allowance, unless a repository pass or paid conference covers it. It does not consume each coauthor's personal allowance."),n("p",null,"A coauthor's subscription does not increase the owner's allowance. If the owner's available capacity is exhausted, a coauthor's refresh or edit may also be blocked. Reviewers never need a paid account.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCapacity"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#capacity","aria-expanded":"false","aria-controls":"capacity"},"What counts toward my allowance, and what happens at the limit?")])]),n("div",{id:"capacity",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCapacity"},[n("div",{class:"panel-body p-3"},[n("p",null,"The repository limit counts work you own. Storage counts the source-file sizes reserved for those repositories, not just files a reviewer opens. Archived or failed repositories can still reserve capacity, and a refresh does not automatically reduce a previous storage reservation."),n("p",null,"At the repository limit you cannot add another repository to that allowance. An edit or refresh must also fit the available storage. Remove work you no longer need, choose a paid plan, or use an eligible conference allowance."),n("p",null,"Removing a repository releases its reservation when capacity is next checked. Expired repositories may continue to reserve capacity until cleanup. Reaching a limit does not itself delete existing review links.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingNeverExpire"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#neverExpire","aria-expanded":"false","aria-controls":"neverExpire"},"What happens to Never expire repositories if I stop subscribing?")])]),n("div",{id:"neverExpire",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingNeverExpire"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Never expire is available to monthly and annual author subscribers. If paid access ends, these repositories remain available for a "),n("strong",null,"90-day grace period"),v(", then expire and their hosted content is removed.")]),n("p",null,"Renewing during the grace period keeps them active. After expiration, you must renew and explicitly reactivate the repository; restoring content also requires access to its GitHub source. A repository does not become public on GitHub when it expires."),n("p",null,"Existing never-expiring repositories created before this billing policy retain their settings. Never expire is not a guarantee of perpetual service availability.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCancelPlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#cancelPlan","aria-expanded":"false","aria-controls":"cancelPlan"},"How do I cancel, and what happens after paid access ends?")])]),n("div",{id:"cancelPlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCancelPlan"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Open "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(" and choose "),n("strong",null,"Manage billing and invoices"),v(" to manage renewal. Cancelling renewal keeps subscription benefits until the end of the paid period.")]),n("p",null,"After paid access ends, repositories fall back to another eligible allowance or the free allowance. Automatic refresh pauses on the free allowance; manual refresh remains available within its limits. Existing review links keep their configured expiration dates, except paid Never expire repositories, which follow the 90-day grace period described above."),n("p",null,"A repository pass or conference package ends after its paid window without automatic renewal.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaymentHandling"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paymentHandling","aria-expanded":"false","aria-controls":"paymentHandling"},"How are payments handled?")])]),n("div",{id:"paymentHandling",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaymentHandling"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Stripe processes checkout and billing management. Anonymous GitHub does not store your card details. You can access billing management and invoices from "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(".")]),n("p",null,[v("Paid access is activated after payment is confirmed. If checkout succeeds but your account has not updated, choose "),n("strong",null,"Refresh payment status"),v(" before trying another purchase. If paid plans are unavailable on this instance, no checkout is offered.")])])])])]),p(" Features "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})]),v("Features ")]),n("div",{class:"panel-group",id:"faq-features",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFormats"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#formats","aria-expanded":"false","aria-controls":"formats"}," Which file formats are supported? ")])]),n("div",{id:"formats",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFormats"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub can display and render a wide variety of file types: "),n("ul",null,[n("li",null,[n("strong",null,"Text and source code"),v(" \u2014 displayed with syntax highlighting")]),n("li",null,[n("strong",null,"Markdown"),v(" \u2014 rendered as formatted HTML")]),n("li",null,[n("strong",null,"Images"),v(" (PNG, JPG, SVG, etc.) \u2014 displayed inline")]),n("li",null,[n("strong",null,"PDFs"),v(" \u2014 rendered directly in the browser")]),n("li",null,[n("strong",null,"Jupyter Notebooks"),v(" \u2014 rendered with code cells and outputs")])]),n("p",null," Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to determine whether it is textual or binary. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPR"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#pullRequests","aria-expanded":"false","aria-controls":"pullRequests"}," Can I anonymize pull requests? ")])]),n("div",{id:"pullRequests",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPR"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository, and the system will automatically detect that it is a pull request and anonymize it accordingly. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConference"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#conference","aria-expanded":"false","aria-controls":"conference"}," What is the Conference ID feature? ")])]),n("div",{id:"conference",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConference"},[n("div",{class:"panel-body p-3"},[n("p",null," When creating an anonymized repository, you can associate it with a Conference ID. This allows conferences to define default anonymization settings (such as expiration dates) that are automatically applied to repositories submitted under that conference. If your conference provides a Conference ID, enter it during the anonymization setup. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingExpiration"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#expiration","aria-expanded":"false","aria-controls":"expiration"}," What happens when an anonymized repository expires? ")])]),n("div",{id:"expiration",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingExpiration"},[n("div",{class:"panel-body p-3"},[n("p",null," You can configure one of three expiration strategies when creating your anonymized repository: "),n("ul",null,[n("li",null,[n("strong",null,"Never expire"),v(": with a monthly or annual author subscription, no scheduled expiration while subscribed. A 90-day grace period applies after paid access ends. See "),n("a",{href:"#neverExpire"},"the subscription expiration policy"),v(".")]),n("li",null,[n("strong",null,"Redirect to GitHub"),v(" \u2014 after expiration, visitors are redirected to the original GitHub repository.")]),n("li",null,[n("strong",null,"Remove content"),v(" \u2014 after expiration, the anonymized content is deleted from the server.")])])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDownload"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#download","aria-expanded":"false","aria-controls":"download"}," Can I download an anonymized repository? ")])]),n("div",{id:"download",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDownload"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers want to build or test the code locally. The downloaded archive contains the fully anonymized version of the repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingUpdates"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#updates","aria-expanded":"false","aria-controls":"updates"}," Are updates to the original repository reflected in the anonymized version? ")])]),n("div",{id:"updates",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingUpdates"},[n("div",{class:"panel-body p-3"},[n("p",null," You can refresh the anonymized repository from GitHub without creating a new share link. Free accounts can request a manual refresh within their allowance. Automatic refresh requires an eligible paid allowance and must be enabled in repository settings. It pauses when the repository falls back to the free allowance. "),n("p",null," After changing files or contributor names, review your anonymization terms before sharing the updated content. If GitHub access is revoked or the source is deleted, the service cannot fetch updates. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCLI"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#cli","aria-expanded":"false","aria-controls":"cli"}," Is there a command-line tool? ")])]),n("div",{id:"cli",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCLI"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally, generating an anonymized ZIP file on your machine. Install it via npm: "),n("pre",{style:{"background-color":"var(--hover-bg-color)",padding:"12px","border-radius":"4px","margin-top":"8px",color:"var(--color)"}},[n("code",null,`npm install -g @tdurieux/anonymous_github -anonymous_github`)])])])])]),p(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),v("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),p(" Privacy & Security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),v("Privacy & Security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Repository data is used to provide the anonymization service. If you purchase a plan, Stripe processes payment and billing information. When a repository is removed or expires, only its configuration is retained \u2014 this makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),v(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),p(" Self-Hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),v("Self-Hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[v(" Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment. Billing is optional and disabled by default for self-hosted instances; paid hosted plans are not required to run your own server. You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup instructions are available on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/",target:"_blank"},"GitHub repository"),v(". ")]),n("p",null," The basic steps are: "),n("ol",null,[n("li",null,"Clone the repository and install dependencies"),n("li",null,[v("Create a "),n("code",null,".env"),v(" file with your GitHub token, OAuth client ID, and client secret")]),n("li",null,[v("Run "),n("code",null,"docker-compose up -d")])])])])])]),n("div",{class:"text-center mt-5 mb-5 p-4",style:{"background-color":"var(--hover-bg-color)","border-radius":"8px"}},[n("p",{class:"mb-2",style:{"font-size":"1.1rem"}}," Still have questions? "),n("p",{class:"text-muted mb-0"},[v(" Open an issue on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/issues",target:"_blank"},"GitHub repository"),v(" and we'll be happy to help. ")])])])])],-1)])])}var Z4={class:"pr-page"},x4={class:"container paper-page pr-page-inner"},e3={class:"pr-header"},t3={class:"pr-title-row"},n3={class:"paper-page-title pr-title"},o3=["textContent"],s3={key:1,class:"text-muted"},i3=["href"],r3={class:"pr-header-meta"},a3={key:0,class:"pr-meta-item"},l3=["textContent"],d3={key:1,class:"pr-meta-item"},u3=["textContent"],c3={key:2,class:"pr-meta-item"},p3=["textContent"],f3={key:0,class:"paper-tabs",role:"tablist"},h3=["aria-selected","tabindex"],m3=["textContent"],v3=["aria-selected","tabindex"],g3=["textContent"],y3={class:"paper-tab-content"},b3={key:0,role:"tabpanel",id:"gist-files-panel","aria-labelledby":"gist-files-tab"},w3={class:"pr-comments"},k3={class:"pr-comment"},E3={class:"pr-comment-head"},C3=["textContent"],S3={key:0,class:"pr-comment-date"},_3={key:0,class:"paper-table-empty"},N3={key:1,role:"tabpanel",id:"gist-comments-panel","aria-labelledby":"gist-comments-tab"},R3={class:"pr-comments"},D3={class:"pr-comment"},T3={class:"pr-comment-head"},A3={key:0,class:"pr-comment-author"},O3=["textContent"],P3=["textContent"],I3={key:0,class:"pr-comment-body"},V3={key:0,class:"paper-table-empty"};function Wl(e,t){let o=Ge("gist-file"),i=Ge("markdown");return l(),d("div",Z4,[n("div",x4,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),v(" \xA0/\xA0 "),n("span",{class:"here"},"Gist")],-1)),n("header",e3,[n("div",t3,[n("h1",n3,[e.details?.description?(l(),d("span",{key:0,textContent:u(e.details?.description)},null,8,o3)):p("v-if",!0),e.details?.description?p("v-if",!0):(l(),d("span",s3,"Untitled gist"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/gist-anonymize/"+e.gistId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,i3)):p("v-if",!0)]),n("div",r3,[n("span",{class:P(["paper-pill",{good:e.details?.isPublic,warn:!e.details?.isPublic}])},u(e.details?.isPublic?"Public":"Secret"),3),e.details?.ownerLogin?(l(),d("span",a3,[t[5]||(t[5]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[6]||(t[6]=v(" @",-1)),n("span",{textContent:u(e.details?.ownerLogin)},null,8,l3)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",d3,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=v()),n("span",{textContent:u(e.fmt?.date(e.details?.updatedDate))},null,8,u3)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",c3,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=v(" Anonymized ",-1)),n("span",{textContent:u(e.fmt?.date(e.details?.anonymizeDate))},null,8,p3)])):p("v-if",!0)])]),e.details?.files&&e.details?.files?.length||e.details?.comments&&e.details?.comments?.length?(l(),d("nav",f3,[e.details?.files?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.tabState?.active=="files"}]),type:"button",role:"tab",id:"gist-files-tab","aria-selected":e.tabState?.active==="files","aria-controls":"gist-files-panel",tabindex:e.tabState?.active==="files"?0:-1,onKeydown:t[0]||(t[0]=s=>e.previewTabKeydown(s)),onClick:t[1]||(t[1]=s=>e.tabState.active="files")},[t[11]||(t[11]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.files?.length,{0:"No files",one:"1 file",other:"{} files"}))},null,8,m3)],42,h3)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"gist-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"gist-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=s=>e.previewTabKeydown(s)),onClick:t[3]||(t[3]=s=>e.tabState.active="comments")},[t[12]||(t[12]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,g3)],42,v3)):p("v-if",!0)])):p("v-if",!0),n("div",y3,[e.details?.files&&e.tabState?.active=="files"?(l(),d("div",b3,[n("ul",w3,[(l(!0),d(K,null,te(e.details?.files,(s,r)=>(l(),d("li",k3,[n("div",E3,[n("strong",{textContent:u(s?.filename)},null,8,C3),s?.language?(l(),d("span",S3,u(s?.language),1)):p("v-if",!0)]),Ee(o,{file:s},null,8,["file"])]))),256)),e.details?.files?.length?p("v-if",!0):(l(),d("li",_3,[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1),n("span",null,"No files in this gist.",-1)])]))])])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",N3,[n("ul",R3,[(l(!0),d(K,null,te(e.details?.comments,(s,r)=>(l(),d("li",D3,[n("div",T3,[s?.author?(l(),d("span",A3,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=v(" @",-1)),n("span",{textContent:u(s?.author)},null,8,O3)])):p("v-if",!0),s?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(s?.updatedDate))},null,8,P3)):p("v-if",!0)]),s?.body?(l(),d("div",I3,[Ee(i,{content:s?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",V3,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this gist.",-1)])]))])])):p("v-if",!0)])])])}var q3={class:"collapse navbar-collapse",id:"navbarSupportedContent"},M3={class:"navbar-nav mr-auto smooth-scroll"},U3={key:0,class:"nav-item"},$3={key:1,class:"nav-item"},L3={key:2,class:"nav-item"},F3={key:3,class:"nav-item"},B3={class:"nav-item"},H3={key:4,class:"nav-item"},z3={class:"navbar-nav"},j3={key:0,class:"nav-item"},G3={key:1,class:"nav-item"},W3={key:2,class:"nav-item"},K3={key:3,class:"nav-item"},Y3={key:4,class:"nav-item"},J3={key:5,class:"nav-item dropdown user-chip-wrap"},Q3={class:"nav-link user-chip dropdown-toggle",href:"#",id:"navbarDropdownMenuLink",role:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},X3=["src"],Z3={class:"user-chip-name"},x3={class:"dropdown-menu dropdown-menu-right user-menu","aria-labelledby":"navbarDropdownMenuLink"},e5={class:"dropdown-header"},t5=["innerHTML"],n5=["disabled"],o5={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},s5={class:"email-prompt-actions"},i5=["disabled"],r5=["disabled"],a5=["disabled"];function Kl(e,t){return l(),d(K,null,[n("nav",{class:P(["navbar navbar-expand-lg",{"navbar-dark":e.isDarkMode}])},[t[19]||(t[19]=fe('Anonymous GitHubSupport',3)),n("div",q3,[n("ul",M3,[e.user?p("v-if",!0):(l(),d("li",U3,[n("a",{class:P(["nav-link",{active:e.path=="/"}]),href:"/"}," Home ",2)])),e.user?(l(),d("li",$3,[n("a",{class:P(["nav-link",{active:e.path=="/dashboard"}]),href:"/dashboard"},[...t[8]||(t[8]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-grid"})],-1),v(" My work ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",L3,[n("a",{class:P(["nav-link",{active:e.path=="/anonymize"||e.path=="/pull-request-anonymize"}]),href:"/anonymize"},[...t[9]||(t[9]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",F3,[n("a",{class:P(["nav-link",{active:e.path=="/conferences"}]),href:"/conferences"},[...t[10]||(t[10]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1),v(" Conferences ",-1)])],2)])):p("v-if",!0),n("li",B3,[n("a",{class:P(["nav-link",{active:e.path=="/faq"}]),href:"/faq"},[...t[11]||(t[11]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})],-1),v("FAQ",-1)])],2)]),e.user&&e.user?.isAdmin?(l(),d("li",H3,[n("a",{class:P(["nav-link",{active:e.path?.indexOf("/admin")===0}]),href:"/admin/"},[...t[12]||(t[12]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})],-1),v(" Admin ",-1)])],2)])):p("v-if",!0)]),n("ul",z3,[e.user||!e.isReviewerRoute?(l(),d("li",j3,[...t[13]||(t[13]=[n("a",{class:"nav-link nav-icon",target:"_blank",href:"https://github.com/tdurieux/anonymous_github/",title:"Anonymous GitHub source code","aria-label":"Anonymous GitHub source code on GitHub",rel:"noopener","data-offset":"30"},[n("i",{class:"fab fa-github","aria-hidden":"true"})],-1)])])):p("v-if",!0),p(` "Report a bug" is about this service. Reviewers who land on an +`)],{type:"text/csv"}),N=document.createElement("a");N.href=URL.createObjectURL(C),N.download=i.username+"-repositories.csv",N.click()},e.showStatusMessage=h=>{let E=h.statusMessage||"(no message)";window.prompt(`Status message for ${h.repoId} (${h.status}):`,E)},e.fetchGithubInfo=h=>{let E=window.open("","_blank");E&&E.document.write("
Loading GitHub info for "+h.repoId+"...
"),t.get("/api/admin/repos/"+h.repoId+"/github").then(_=>{E&&(E.document.open(),E.document.write('
'+JSON.stringify(_.data,null,2).replace(/[<>]/g,m=>m==="<"?"<":">")+"
"),E.document.close())},_=>{let m=_&&_.data?JSON.stringify(_.data,null,2):String(_);E&&(E.document.body.innerHTML='
'+m+"
")})};function f(h){t.get("/api/admin/users/"+h+"/repos",{}).then(E=>{e.repositories=E.data},E=>{console.error(E)})}function g(h){t.get("/api/admin/users/"+h,{}).then(E=>{e.userInfo=E.data},E=>{console.error(E)})}g(i.username),f(i.username),e.banUser=()=>{confirm(`Ban user ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/ban`).then(()=>g(i.username),h=>console.error(h))},e.activateUser=()=>{t.post(`/api/admin/users/${i.username}/activate`).then(()=>g(i.username),h=>console.error(h))},e.promoteUser=()=>{confirm(`Promote ${i.username} to admin?`)&&t.post(`/api/admin/users/${i.username}/promote`).then(()=>g(i.username),h=>console.error(h))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/demote`).then(()=>g(i.username),h=>console.error(h))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function y(){t.get("/api/admin/tokens").then(h=>{e.tokens=h.data||[]},h=>{h.status!==401&&h.status!==403&&console.error(h)})}y(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(h=>{e.tokenForm.plaintext=h.data.token,e.tokenForm.name="",y()},h=>console.error(h))},e.revokeToken=h=>{confirm(`Revoke token "${h.name}"?`)&&t.delete("/api/admin/tokens/"+h.id).then(()=>y(),E=>console.error(E))},e.removeCache=h=>{confirm("Remove cached files for "+h.repoId+"?")&&t.delete("/api/admin/repos/"+h.repoId).then(()=>f(i.username),E=>console.error(E))},e.removeRepository=h=>{confirm("Remove repository "+h.repoId+"?")&&t.delete("/api/repo/"+h.repoId+"/").then(()=>f(i.username),E=>console.error(E))},e.updateRepository=h=>{let E=Fe({title:`Refreshing ${h.repoId}...`,date:new Date,body:`The repository ${h.repoId} is going to be refreshed.`});e.toasts.push(E),t.post(`/api/repo/${h.repoId}/refresh`).then(_=>{_.data.status=="ready"?E.title=`${h.repoId} is refreshed.`:E.title=`Refreshing of ${h.repoId}.`},_=>{E.title=`Error during the refresh of ${h.repoId}.`,E.body=_.body})},e.getGitHubRepositories=h=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(E=>{e.userInfo.repositories=E.data})};let b=null;e.watch("query",()=>{s.timeout.cancel(b),b=s.timeout(()=>{f(i.username)},500)},!0)},El=function(e,t,o){let i=ut(),s=Zt();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let r=_=>{if(_.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){_.preventDefault();let m=document.querySelector('.admin-filter-toolbar input[type="search"]');m&&m.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=_=>{_==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[_]="",e.query.page=1},e.chips=[];let a=()=>{let _=[];(e.query.dateFrom||e.query.dateTo)&&_.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=_};e.statusCountFor=_=>{let m=(e.statusCounts||[]).find(C=>C._id===_);return m?m.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=_=>{e.query.sort===_?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=_,e.query.direction="desc"),e.query.page=1},e.sortIcon=_=>e.query.sort===_?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let c="admin.conferences.filterPrefs",f={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},g=loadFilterPrefs(c)||{};e.query=Object.assign({},f,g,{page:1,search:""});let y=o.search();y.search&&(e.query.search=y.search);let b="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let _=window.prompt("Preset name:");if(!_)return;let m=Object.assign({},e.query);delete m.page,e.presets=(e.presets||[]).filter(C=>C.name!==_),e.presets.push({name:_,query:m}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=_=>{Object.assign(e.query,_.query,{page:1})},e.deletePreset=_=>{e.presets=(e.presets||[]).filter(m=>m.name!==_.name),localStorage.setItem(b,JSON.stringify(e.presets))},e.removeConference=_=>{confirm("Remove conference "+_.conferenceID+"?")&&t.delete("/api/admin/conferences/"+_.conferenceID).then(()=>h(),m=>console.error(m))},e.exportCsv=()=>{let _=new URLSearchParams(Object.entries(e.query).filter(([,m])=>m!==""&&m!==!1&&m!=null));_.set("format","csv"),_.set("limit","10000"),window.open("/api/admin/conferences?"+_.toString(),"_blank")},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/conferences",{params:e.query}).then(_=>{e.total=_.data.total,e.totalPage=Math.ceil(_.data.total/e.query.limit),e.conferences=_.data.results,e.statusCounts=_.data.statusCounts||[]},_=>{e.fetchError=_&&_.data&&_.data.error||"Failed to load conferences",console.error(_)})}h();let E=null;e.watch("query",()=>{i.timeout.cancel(E),E=i.timeout(h,500);let{page:_,search:m,...C}=e.query;saveFilterPrefs(c,C),a()},!0),a()},Cl=function(e,t,o,i,s){let r=ut();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.queueList=[],e.jobs=[],e.selectedQueue="download",e.selectedStats=null,e.range="1h",e.allStates=["active","waiting","delayed","failed","completed"],e.stateFilter={active:!0,waiting:!0,delayed:!0,failed:!0,completed:!0},e.query={search:"",autoRefresh:!0},e.filteredJobs=()=>(e.jobs||[]).filter(m=>e.stateFilter[m._state]),e.jobProgressPct=m=>m&&m.progress&&typeof m.progress=="object"&&typeof m.progress.percent=="number"?Math.max(0,Math.min(100,Math.round(m.progress.percent))):typeof m.progress=="number"?Math.max(0,Math.min(100,Math.round(m.progress))):null,e.jobDuration=m=>{if(!m.processedOn)return"-";let N=(m.finishedOn||Date.now())-m.processedOn;return N<1e3?N+"ms":(N/1e3).toFixed(1)+"s"},e.metricsPoints=[],e.selectQueue=m=>{e.selectedQueue=m,a(),c()},e.setRange=m=>{e.range=m,c()};function a(){let m={queue:e.selectedQueue,search:e.query.search};t.get("/api/admin/queues",{params:m}).then(C=>{e.queueList=C.data.queues||[],e.jobs=C.data.jobs||[],e.selectedStats=e.queueList.find(N=>N.key===e.selectedQueue)||e.queueList[0]||null},C=>console.error(C))}function c(){t.get("/api/admin/queues/metrics",{params:{queue:e.selectedQueue,range:e.range}}).then(m=>{e.metricsPoints=m.data.points||[],s(h,0)},m=>console.error(m))}a(),c();let f=i(()=>{e.query.autoRefresh&&(a(),c())},15e3);e.on("dispose",()=>i.cancel(f)),e.refreshNow=function(){a(),c()};function g(m){let C=m&&m.data&&(m.data.message||m.data.error)||"Request failed";e.actionError=C,s(()=>{e.actionError=null},5e3),console.error(m)}e.actionError=null,e.removeJob=m=>{t.delete(`/api/admin/queue/${e.selectedQueue}/${m.id}`).then(a,g)},e.retryJob=m=>{t.post(`/api/admin/queue/${e.selectedQueue}/${m.id}`).then(a,g)},e.retryFailed=()=>{confirm(`Retry all failed jobs in ${e.selectedQueue}?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/retry-failed`).then(a,m=>console.error(m))},e.drainSelected=()=>{confirm(`Drain the ${e.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/drain`).then(a,m=>console.error(m))},e.togglePause=()=>{let m=e.selectedStats&&e.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${e.selectedQueue}/${m}`).then(a,C=>console.error(C))},e.emptyQueue=()=>{confirm(`Empty the ${e.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${e.selectedQueue}/empty`).then(a,m=>console.error(m))},e.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(a,m=>console.error(m))};let y=null;e.watch("query.search",()=>{r.timeout.cancel(y),y=r.timeout(a,350)}),e.expanded={},e.toggleJob=m=>{e.expanded[m.id]=!e.expanded[m.id]},e.humanTime=m=>{if(!m)return"";let C=new Date(m);return C.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})+" "+C.toLocaleDateString([],{month:"short",day:"numeric"})},e.delayCountdown=m=>{if(!m)return"";var C=Math.max(0,Math.ceil((m-Date.now())/1e3));if(C<=0)return"resuming soon";var N=Math.floor(C/60),A=C%60;return"in "+(N>0?N+"m "+A+"s":A+"s")};function b(m){if(m<=0)return{ticks:[0],niceMax:1};let C=Math.pow(10,Math.floor(Math.log10(m))),N=C;m/N<2?N=C/2:m/N>5&&(N=C*2);let A=Math.ceil(m/N)*N,M=[];for(let U=0;U<=A;U+=N)M.push(U);return{ticks:M,niceMax:A}}function h(){var m=document.getElementById("q-throughput-chart");if(!m)return;var C=m.getContext("2d"),N=window.devicePixelRatio||1,A=m.parentElement.getBoundingClientRect(),M=44,U=50,q=20,B=A.width-40,oe=180,ee=B-M-U,R=oe-q;m.width=B*N,m.height=oe*N,m.style.width=B+"px",m.style.height=oe+"px",C.setTransform(N,0,0,N,0,0);var j=document.body.classList.contains("dark-mode"),ie="#8A857C",ve=j?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",z=j?"#A7B2FF":"#3B4AD6",J=j?"rgba(167,178,255,0.12)":"rgba(59,74,214,0.08)",Q=j?"#F08A82":"#B42318",te=j?"rgba(240,138,130,0.08)":"rgba(180,35,24,0.06)",X=j?"#F5C842":"#B8860B",re=e.metricsPoints||[];if(re.length===0){C.fillStyle=ie,C.font="12px monospace",C.textAlign="center",C.fillText("No metrics data yet",B/2,oe/2),E=null;return}var Ee=re.map(function(O){return O.completed}),Te=re.map(function(O){return O.failed}),Ae=re.map(function(O){return O.avgMs}),Se=re.length,_e=ee/(Se-1||1),ze=Math.max(1,Math.max.apply(null,Ee),Math.max.apply(null,Te)),Ue=b(ze),Ie=Math.max.apply(null,Ae),H=Ie>0?b(Ie):{ticks:[0],niceMax:1},se=function(O){return R-O/Ue.niceMax*(R-10)},Y=function(O){return R-O/H.niceMax*(R-10)},Z=function(O){return M+O*_e};C.textAlign="right",C.textBaseline="middle",C.font="10px monospace",Ue.ticks.forEach(function(O){var I=se(O);C.strokeStyle=ve,C.lineWidth=1,C.beginPath(),C.moveTo(M,I),C.lineTo(B-U,I),C.stroke(),C.fillStyle=ie,C.fillText(O>=1e3?(O/1e3).toFixed(1)+"k":String(O),M-6,I)}),Ie>0&&(C.textAlign="left",H.ticks.forEach(function(O){var I=Y(O);C.fillStyle=X,C.fillText(O>=1e3?(O/1e3).toFixed(1)+"s":O+"ms",B-U+6,I)}));var ue=Date.now(),be=Math.min(6,Se);C.textAlign="center",C.textBaseline="top";for(var k=0;k0&&(C.beginPath(),Ae.forEach(function(O,I){var F=Z(I),L=Y(O);if(I===0)C.moveTo(F,L);else{var ae=(Z(I-1)+F)/2;C.bezierCurveTo(ae,Y(Ae[I-1]),ae,L,F,L)}}),C.strokeStyle=X,C.lineWidth=1,C.setLineDash([4,3]),C.stroke(),C.setLineDash([])),E={pts:re,maxLen:Se,marginLeft:M,step:_e,totalW:B,toX:Z}}var E=null;function _(){var m=document.getElementById("q-throughput-chart");if(!(!m||m._tipBound)){m._tipBound=!0;var C=document.getElementById("q-chart-tooltip"),N=document.getElementById("q-chart-crosshair");m.addEventListener("mousemove",function(A){if(!(!E||!C||!N)){var M=E,U=m.getBoundingClientRect(),q=A.clientX-U.left,B=Math.round((q-M.marginLeft)/M.step);if(B<0||B>=M.maxLen){C.style.display="none",N.style.display="none";return}var oe=M.pts[B],ee=Date.now(),R=Math.round((ee-oe.ts)/6e4),j;if(R<=0)j="now";else if(R<60)j=R+"m ago";else if(R<1440){var ie=Math.floor(R/60),ve=R%60;j=ie+"h"+(ve?" "+ve+"m":"")+" ago"}else j=Math.round(R/1440)+"d ago";var z='
'+j+'
● completed: '+oe.completed+'/min
● failed: '+oe.failed+"/min
";if(oe.avgMs>0){var J=oe.avgMs>=1e3?(oe.avgMs/1e3).toFixed(1)+"s":oe.avgMs+"ms";z+='
● avg time: '+J+"
"}C.innerHTML=z;var Q=M.toX(B),te=C.offsetWidth,X=Q+10;X+te>M.totalW&&(X=Q-te-10),C.style.display="block",C.style.left=X+"px",C.style.top="8px",N.style.display="block",N.style.left=Q+"px"}}),m.addEventListener("mouseleave",function(){C&&(C.style.display="none"),N&&(N.style.display="none")})}}e.watch("metricsPoints",function(){s(_,50)})},Sl=function(e,t,o,i){let s=ut();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.entries=[],e.visible=[],e.available=!0,e.cap=1e3,e.total=0,e.pageSize=250,e.expanded={},e.detailTab={},e.copyHint="",e.parsedFilterCount=0,e.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},e.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},e.relTime=N=>{if(!N)return"";let A=new Date(N).getTime();if(isNaN(A))return N;let M=Math.max(0,Date.now()-A),U=Math.floor(M/1e3);if(U<5)return"just now";if(U<60)return`${U}s ago`;let q=Math.floor(U/60);if(q<60)return`${q}m ago`;let B=Math.floor(q/60);if(B<24)return`${B}h ago`;let oe=Math.floor(B/24);return oe<7?`${oe}d ago`:new Date(N).toLocaleDateString()},e.absTime=N=>{if(!N)return"";let A=new Date(N);return isNaN(A.getTime())?N:A.toLocaleString()},e.absTimeShort=N=>{if(!N)return"";let A=new Date(N);return isNaN(A.getTime())?N:A.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})};let r=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function a(N,A){let M=N&&(N.httpStatus||N.status)||null;if(typeof M=="number"){if(M>=500)return"error";if(M===401||M===403||M===404)return"info";if(M>=400)return"warn"}return A==="error"?"error":A==="warn"?"warn":"info"}function c(N){let A=(N.raw||[]).find(B=>B&&typeof B=="object"&&!Array.isArray(B));if(A){A.message&&r.test(A.message)?(N.displayMessage=A.message,N.displayContext=N.message):A.code&&r.test(String(A.code))?(N.displayMessage=String(A.code),N.displayContext=N.message):A.name&&A.name!=="AnonymousError"&&A.name!=="Error"?(N.displayMessage=A.name,N.displayContext=A.message||N.message):N.displayMessage=N.message,N._status=A.httpStatus||A.status||null,N._url=A.url||null,N._method=A.method||null,N._repoId=A.repoId||A.detail||null,N._detail=A.detail&&A.detail!==N._repoId?A.detail:null;let B=typeof A.stack=="string"?A.stack:null;for(var M=[A.cause,A.err].filter(Boolean),U=0;!B&&U{R==null||R===""||M.push([ee,R])};U("name",A&&A.name),U("code",N.displayMessage||A&&A.message),N._bucket&&U("kind",N._bucket),U("httpStatus",A&&A.httpStatus),A&&A.status&&!A.httpStatus&&U("status",A.status),U("module",N.module);let q=A&&A.detail;if(typeof q=="string"){let ee=q.trim();if(ee[0]==="{"||ee[0]==="[")try{q=JSON.parse(q)}catch{}}if(U("detail",q),U("repoId",A&&A.repoId),U("filePath",A&&A.filePath),U("upstreamStatus",A&&A.upstreamStatus),U("upstreamBody",A&&A.upstreamBody),U("url",N._url),U("err",A&&A.err),U("cause",A&&!A.err&&A.cause),U("ts",N.ts),!M.length)return JSON.stringify(N,null,2);let B=M.reduce((ee,R)=>Math.max(ee,R[0].length),0),oe=["{"];return M.forEach(([ee,R],j)=>{let ve=` ${`"${ee}":`.padEnd(B+3," ")} `,z=jX===0?te:Q+te).join(` +`)}else typeof R=="number"||typeof R=="boolean"?J=String(R):J=JSON.stringify(R);oe.push(`${ve}${J}${z}`)}),oe.push("}"),oe.join(` +`)}function g(N){let A=[],M="",U=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,q=0,B;for(;B=U.exec(N);)M+=N.slice(q,B.index),q=U.lastIndex,A.push({key:B[1],op:B[2]||"=",val:B[3]});return M+=N.slice(q),{filters:A,free:M.trim().toLowerCase()}}function y(N,A){for(let M of A.filters){let U=(B,oe,ee)=>{let R=parseFloat(B),j=parseFloat(oe);return ee==="="?String(B)===String(oe):ee==="!="?String(B)!==String(oe):ee===">="?R>=j:ee==="<="?R<=j:ee===">"?R>j:ee==="<"?RA&&q._bucket!==A?!1:y(q,N)),U=e.query.group;if(U){let q=ee=>U==="module"?ee.module:ee.displayMessage||ee.message||"_",B=new Map;for(let ee of M){let R=q(ee);if(B.has(R)){let j=B.get(R);j.count++,j._related.push(ee),new Date(ee.ts)>new Date(j.ts)&&(j.ts=ee.ts,j._url=ee._url,j._status=ee._status),new Date(ee.ts)new Date(R.ts).getTime()>=oe).length;M=Array.from(B.values())}else M=M.map((q,B)=>(q._key="row:"+B+":"+q.ts,q._related=[q],q._firstSeen=q.ts,q._lastHourCount=0,q.count=1,q));e.query.sort==="count"?M.sort((q,B)=>B.count-q.count||new Date(B.ts)-new Date(q.ts)):M.sort((q,B)=>new Date(B.ts)-new Date(q.ts)),e.visible=M}function h(N){let A=N?e.entries.length:0,M=N?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:A,limit:M}}).then(U=>{let q=(U.data.entries||[]).map(c);e.entries=N?e.entries.concat(q):q,e.available=!!U.data.available,e.cap=U.data.max||e.cap,e.total=U.data.total||e.entries.length,b()},U=>console.error(U))}e.loadMore=()=>h(!0),e.canLoadMore=()=>e.entries.length{let A=N.data||{},M=A.prev24h?Math.round((A.last24h-A.prev24h)/A.prev24h*100):0;e.stats={last24h:A.last24h||0,prev24h:A.prev24h||0,delta:M,severity:A.severity||{error:0,warn:0,info:0},unique:A.unique||{error:0,warn:0,info:0},buckets:A.buckets||[],dropped:A.dropped||0}},N=>console.error(N))}function _(){h(),E()}e.barPx=(N,A)=>{let M=e.stats.buckets||[],U=0;for(let ee of M)U=Math.max(U,(ee.error||0)+(ee.warn||0)+(ee.info||0));if(!U)return 0;let q=(N.error||0)+(N.warn||0)+(N.info||0);if(!q)return 0;let B=Math.round(q/U*60),oe=N[A]||0;return Math.round(oe/q*B)},e.bucketTitle=N=>`${new Date(N.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${N.error||0} err \xB7 ${N.warn||0} warn \xB7 ${N.info||0} info`,e.toggle=N=>{e.expanded[N._key]=!e.expanded[N._key]},e.setBucket=N=>{e.query.bucket=N},e.refreshNow=_,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(_,N=>console.error(N))},e.exportCsv=()=>{let N=["ts","level","module","displayMessage","_status","_url","_repoId"],A=[N.join(",")];for(let B of e.visible)A.push(N.map(oe=>{let ee=B[oe]==null?"":String(B[oe]);return/[",\n]/.test(ee)?`"${ee.replace(/"/g,'""')}"`:ee}).join(","));let M=new Blob([A.join(` +`)],{type:"text/csv;charset=utf-8"}),U=URL.createObjectURL(M),q=document.createElement("a");q.href=U,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(U)};function m(N){e.copyHint=`${N} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=N=>{navigator.clipboard.writeText(N._detailJson).then(()=>m("JSON"))},e.copyCurl=N=>{if(!N._url)return;let M=`curl -X ${N._method||"GET"} '${window.location.origin}${N._url}'`;navigator.clipboard.writeText(M).then(()=>m("curl"))},_();let C=i(()=>{e.query.autoRefresh&&_()},15e3);e.on("dispose",()=>i.cancel(C)),e.watch("query.search",b),e.watch("query.bucket",b),e.watch("query.sort",b),e.watch("query.group",b)},_l=function(e,t,o,i){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null){o.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all";var s=!1;e.loadCache=function(){if(!s){s=!0;var m=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:m}}).then(function(C){m===e.cacheMinutes&&(e.cacheReport=C.data,e.cacheError=C.data.available?null:C.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){s=!1,m!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(m){return e.cacheTraffic==="all"||m.traffic===e.cacheTraffic})},e.cacheRate=function(m,C){var N=e.cacheRows(),A=function(q){return N.filter(function(B){return B.name===q}).reduce(function(B,oe){return B+oe[C]},0)},M=A(m+"_hit"),U=A(m+"_miss");return M+U?(100*M/(M+U)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(m){return m.replaceAll("_"," ")},e.cacheP95=function(m){var C=0,N=e.cacheReport?.latencyBucketsMs||[];if(!m.count)return"No samples";if(!m.ms)return"Not timed";for(var A=0;A<=N.length;A++)if(C+=m["b"+A]||0,C>=Math.ceil(m.count*.95))return A 10 s";return"No samples"},e.performanceError=null,e.formatMs=function(m){return m==null?"":m<1e3?m+" ms":+(m/1e3).toFixed(1)+" s"},e.latencyBound=function(m,C){return m.count?m[C]==null?"> 60 s":"\u2264 "+e.formatMs(m[C]):"No samples"},e.firstByteBound=function(m){return e.latencyBound({count:m.firstByteCount,p95UpperMs:m.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(m){return Math.max(0,Math.round((Date.now()-m.sampledAt)/1e3))},e.peakRss=function(m){return(e.performance.runtimeSeries||[]).filter(function(C){return C.instance===m.instance}).reduce(function(C,N){return Math.max(C,N.rss)},m.memory.rss)},e.performanceWarning=function(m){return e.sampleAge(m)>45||m.droppedBatches||m.droppedMetrics||m.sockets?.closeWait>0||m.eventLoop.p95Ms>100||m.memoryLimitBytes&&m.memory.rss>m.memoryLimitBytes*.8};var r=!1;e.loadPerformance=function(){var m=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==m&&(e.performance=null),!r&&(r=!0,t.get("/api/admin/performance",{params:{minutes:m}}).then(function(C){m===e.performanceMinutes&&(e.performance=C.data,e.performanceError=C.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){m===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){r=!1,m!==e.performanceMinutes&&e.loadPerformance()}))};function a(m){if(m==null)return"\u2014";for(var C=["B","KB","MB","GB","TB"],N=0,A=m;A>=1024&&N0?1:0)+" "+C[N]}e.humanBytes=a;function c(m){if(!m)return"\u2014";var C=Math.floor(m/86400),N=Math.floor(m%86400/3600),A=Math.floor(m%3600/60);return C>0?C+"d "+(N<10?"0":"")+N+"h":N>0?N+"h "+(A<10?"0":"")+A+"m":A+"m"}e.humanDuration=c;function f(m){return m==null?"\u2014":m>=1e6?(m/1e6).toFixed(1)+"M":m>=1e3?(m/1e3).toFixed(1)+"K":String(m)}e.humanNum=f,e.queueTotal=function(m){return m?(m.waiting||0)+(m.active||0)+(m.delayed||0)+(m.failed||0):0},e.statusCount=function(m){if(!e.data||!e.data.repos)return 0;for(var C=e.data.repos.statusBreakdown||[],N=0;Nb[N])&&(b[N]=C[N]),(h[N]==null||C[N]Ci(e,t)},{path:"/connections",template:"partials/connections.htm",title:"GitHub connections \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>gl(e,t.http)},{path:"/signin",template:"partials/signin.htm",title:"Sign in \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>yl(e,t.http)},{path:"/",template:"partials/home.htm",title:"Anonymous GitHub \u2013 Share the code, not the author",preserveExplorer:!1,setup:(e,t)=>ul(e,t.http,t.location,t.window,t.timeout)},{path:"/dashboard",template:"partials/dashboard.htm",title:"Your anonymizations \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>cl(e,t.http,t.location,t.promises,t.window,t.quotaService)},{path:"/pr-dashboard",redirect:"/dashboard"},{path:"/anonymize/:repoId?",template:"partials/anonymize.htm",title:"New anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ds(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/pull-request-anonymize/:pullRequestId?",template:"partials/anonymize.htm",title:"Anonymize a pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ds(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/gist-anonymize/:gistId?",template:"partials/anonymize.htm",title:"Anonymize a gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ds(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/status/:repoId",template:"partials/status.htm",title:"Repository status \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>pl(e,t.http,t.params)},{path:"/conferences",template:"partials/conferences.htm",title:"Your conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ml(e,t.http,t.location)},{path:"/conference/new",template:"partials/newConference.htm",title:"New conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vi(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId/edit",template:"partials/newConference.htm",title:"Edit conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vi(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId",template:"partials/conference.htm",title:"Conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vl(e,t.http,t.location,t.params)},{path:"/faq",template:"partials/faq.htm",title:"FAQ \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>al(e,t.http)},{path:"/profile",template:"partials/profile.htm",title:"Your settings \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ll(e,t.http,t.translate,t.timeout,t.quotaService)},{path:"/claim",template:"partials/claim.htm",title:"Claim an anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>dl(e,t.http,t.location)},{path:"/pr/:pullRequestId/:path(.*)*",template:"partials/pullRequest.htm",title:"Anonymous pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>fl(e,t.http,t.location,t.params,t.html)},{path:"/gist/:gistId/:path(.*)*",template:"partials/gist.htm",title:"Anonymous gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>hl(e,t.http,t.location,t.params,t.html)},{path:"/r/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>mi(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/repository/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>mi(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/admin/",template:"partials/admin/overview.htm",title:"Admin \xB7 Overview \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>_l(e,t.http,t.location,t.interval)},{path:"/admin/repositories",template:"partials/admin/repositories.htm",title:"Admin \xB7 Repositories \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>bl(e,t.http,t.location)},{path:"/admin/users",template:"partials/admin/users.htm",title:"Admin \xB7 Users \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>wl(e,t.http,t.location)},{path:"/admin/users/:username",template:"partials/admin/user.htm",title:"Admin \xB7 User details \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>kl(e,t.http,t.location,t.params)},{path:"/admin/conferences",template:"partials/admin/conferences.htm",title:"Admin \xB7 Conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>El(e,t.http,t.location)},{path:"/admin/queues",template:"partials/admin/queues.htm",title:"Admin \xB7 Queues \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Cl(e,t.http,t.location,t.interval,t.timeout)},{path:"/admin/errors",template:"partials/admin/errors.htm",title:"Admin \xB7 Errors \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Sl(e,t.http,t.location,t.interval)},{path:"/404",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",preserveExplorer:!1,setup:()=>{}},{path:"/:pathMatch(.*)*",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",setup:()=>{}}];var Pp={class:"container py-4",style:{"max-width":"48rem","overflow-wrap":"anywhere"}},Ip={key:0},Vp={key:1,role:"alert"},qp={key:2,role:"status"},Mp={key:0},Up={key:1},$p=["disabled"],Lp=["disabled"],Fp=["disabled"],Bp={key:5,class:"mt-4","aria-labelledby":"review-policy-title"},Hp={id:"review-policy-title"},zp={key:0,role:"alert"},jp=["disabled"],Gp=["disabled"],Wp=["disabled"],Kp={key:6,role:"status"};function Rl(e,t){return l(),d("section",Pp,[t[12]||(t[12]=n("a",{href:"/"},"Anonymous GitHub",-1)),t[13]||(t[13]=n("h1",{class:"mt-3"},"Approve artifact access",-1)),t[14]||(t[14]=n("p",null,"This records your approval as the repository owner or an authorized coauthor.",-1)),e.user?.username?p("v-if",!0):(l(),d("p",Ip,[...t[6]||(t[6]=[v("Sign in first, then reopen the artifact link from your submission. ",-1),n("a",{href:"/signin"},"Sign in",-1)])])),e.error?(l(),d("p",Vp,u(e.error),1)):p("v-if",!0),e.saved?(l(),d("p",qp,[t[7]||(t[7]=v("Consent recorded. ",-1)),e.handoffEnabled?(l(),d("span",Mp,"Continue to review to finish linking.")):(l(),d("span",Up,"Artifact linking is not complete. Return to your submission to check its status."))])):p("v-if",!0),e.saved&&e.handoffEnabled?(l(),d("button",{key:3,class:"btn btn-primary",type:"button",onClick:t[0]||(t[0]=(...o)=>e.continueReview&&e.continueReview(...o)),disabled:e.busy},"Continue to review",8,$p)):p("v-if",!0),e.user?.username&&!e.saved?(l(),d("form",{key:4,onSubmit:t[2]||(t[2]=de((...o)=>e.loadPreview&&e.loadPreview(...o),["prevent"]))},[t[8]||(t[8]=n("label",{for:"review-repository"},"Anonymous repository ID",-1)),D(n("input",{id:"review-repository",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=o=>e.repositoryId=o),maxlength:"128",autocomplete:"off",disabled:e.busy||e.uncertain,"aria-describedby":"review-repository-help"},null,8,Lp),[[wt,e.repositoryId]]),t[9]||(t[9]=n("p",{id:"review-repository-help"},"Use the ID after /r/ in the anonymous repository URL.",-1)),n("button",{type:"submit",class:"btn btn-primary",disabled:e.busy||e.uncertain},"Preview access and retention",8,Fp)],32)):p("v-if",!0),e.preview&&!e.saved?(l(),d("section",Bp,[n("h2",Hp,u(e.preview.repositoryName),1),n("p",null,"Access: "+u(e.preview.policy.access==="anonymous-link"?"Anyone with the anonymous link":"Restricted review access")+".",1),n("p",null,"Retain until "+u(e.preview.policy.retainUntil)+". Policy version "+u(e.preview.policy.version)+".",1),e.expired?(l(),d("p",zp,"This preview expired. Open a new artifact link from your submission.")):p("v-if",!0),n("div",null,[n("label",null,[D(n("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=o=>e.acceptAccess=o),disabled:e.busy||e.uncertain||e.expired},null,8,jp),[[xs,e.acceptAccess]]),t[10]||(t[10]=v(" I approve the access policy above.",-1))])]),n("div",null,[n("label",null,[D(n("input",{type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=o=>e.acceptRetention=o),disabled:e.busy||e.uncertain||e.expired},null,8,Gp),[[xs,e.acceptRetention]]),t[11]||(t[11]=v(" I approve retention until the date above.",-1))])]),n("button",{class:"btn btn-primary",type:"button",onClick:t[5]||(t[5]=(...o)=>e.confirmConsent&&e.confirmConsent(...o)),disabled:e.busy||e.expired||!e.acceptAccess||!e.acceptRetention},u(e.uncertain?"Retry confirmation":"Confirm consent"),9,Wp)])):p("v-if",!0),e.busy?(l(),d("p",Kp,"Waiting for the server\u2026")):p("v-if",!0)])}var Yp={class:"container paper-page connections-page"},Jp={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Qp={key:1,role:"status"},Xp=["disabled"],Zp={key:3},xp={key:0,class:"connection-resources"},ef=["disabled"],tf=["disabled"],nf={key:0,role:"status"},of={class:"connections-grid"},sf={key:0},rf={class:"connection-title"},af={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},lf={class:"connection-actions"},df={key:0,class:"btn btn-ink",target:"_self",href:"/github/app/install"},uf={key:1,class:"connection-installations"},cf={key:0},pf=["href"],ff={class:"sr-only"},hf=["disabled"],mf={class:"connection-title"},vf={key:0,target:"_self",href:"/github/login",class:"btn btn-outline-ink"},gf={key:1,class:"connection-revoke"},yf={key:0},bf=["disabled"],wf={class:"connection-resources"},kf={class:"connection-title"},Ef={class:"connection-count"},Cf={key:0,class:"connection-empty"},Sf={class:"connection-resource-name"},_f={key:0,class:"connection-resource-actions"},Nf=["disabled","onClick"],Rf=["disabled","onClick"],Df={key:1,class:"connection-help",role:"status"},Tf=["disabled","onClick"];function Dl(e,t){return l(),d("div",Yp,[t[25]||(t[25]=fe('
My work / GitHub connections

GitHub connections

Manage how GitHub shares your code. Your anonymizations and URLs stay the same.

',2)),e.connectionError?(l(),d("p",Jp,u(e.connectionError),1)):p("v-if",!0),!e.connections&&!e.connectionError?(l(),d("p",Qp,"Loading your connections\u2026")):p("v-if",!0),!e.connections&&e.connectionError?(l(),d("button",{key:2,class:"btn btn-outline-ink",disabled:e.busy,onClick:t[0]||(t[0]=o=>e.loadConnections())},"Try again",8,Xp)):p("v-if",!0),e.connections?(l(),d("div",Zp,[e.connections.emailNotificationsEnabled?(l(),d("section",xp,[t[6]||(t[6]=n("h2",null,"Email alerts",-1)),t[7]||(t[7]=n("p",null,"We will email you if your GitHub connection stops working or a repository becomes inaccessible. Your address is never shown on anonymous pages.",-1)),n("form",{onSubmit:t[2]||(t[2]=de(o=>e.saveNotificationEmail(),["prevent"]))},[t[5]||(t[5]=n("label",{for:"notification-email"},"Email address",-1)),D(n("input",{id:"notification-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.notificationEmail=o),disabled:e.busy},null,8,ef),[[wt,e.notificationEmail]]),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.busy},"Save email address",8,tf),e.emailSaved?(l(),d("p",nf,"Email address saved.")):p("v-if",!0)],32)])):p("v-if",!0),n("div",of,[e.connections.appEnabled?(l(),d("section",sf,[t[13]||(t[13]=n("div",{class:"connection-top"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",{class:"connection-badge"},"Recommended")],-1)),n("div",rf,[t[8]||(t[8]=n("h2",null,"GitHub App",-1)),n("span",{class:P(["connection-status",{"is-connected":e.connections.appConnected&&!e.connections.appError}])},u(e.connections.appError?"Needs attention":e.connections.appConnected?"Connected":"Not connected"),3)]),t[14]||(t[14]=n("p",null,"Read-only access to gists and the repositories you choose.",-1)),e.connections.appError?(l(),d("p",af,u(e.connections.appError)+". Reconnect to restore access.",1)):p("v-if",!0),n("div",lf,[e.connections.appConnected&&!e.connections.appError?(l(),d("a",df,[...t[9]||(t[9]=[v("Manage repository access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),n("a",{class:P(e.connections.appConnected&&!e.connections.appError?"connection-link":"btn btn-ink"),target:"_self",href:"/github/app/login"},u(e.connections.appConnected?"Reconnect account":"Connect GitHub account"),3)]),t[15]||(t[15]=n("p",{class:"connection-help"},"Choose repositories on GitHub. Organization access may need an administrator's approval.",-1)),e.connections.installations?.length?(l(),d("ul",uf,[(l(!0),d(K,null,ne(e.connections.installations,o=>(l(),d("li",{key:o.id},[n("div",null,[n("strong",null,u(o.account),1),o.suspended?(l(),d("span",cf," \xB7 Suspended")):p("v-if",!0)]),n("a",{target:"_self",href:"/github/app/install?installationId="+o.id},[t[10]||(t[10]=v("Manage access ",-1)),n("span",ff,"for "+u(o.account),1),t[11]||(t[11]=v(" \u2192",-1))],8,pf)]))),128))])):p("v-if",!0),n("button",{class:"connection-link",disabled:e.busy,onClick:t[3]||(t[3]=o=>e.loadConnections())},[...t[12]||(t[12]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Refresh access",-1)])],8,hf)])):p("v-if",!0),n("section",null,[t[18]||(t[18]=n("div",{class:"connection-top"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),n("span",{class:"connection-badge connection-badge-muted"},"Legacy")],-1)),n("div",mf,[t[16]||(t[16]=n("h2",null,"GitHub OAuth",-1)),n("span",{class:P(["connection-status",{"is-connected":e.connections.oauthConnected}])},u(e.connections.oauthConnected?"Connected":"Not connected"),3)]),t[19]||(t[19]=n("p",null,"For existing OAuth anonymizations.",-1)),t[20]||(t[20]=n("p",{class:"connection-help"},"This connection uses GitHub's broader repository permissions. Existing work keeps using it until you switch below.",-1)),e.connections.oauthEnabled?(l(),d("a",vf,u(e.connections.oauthConnected?"Reconnect OAuth":"Connect legacy OAuth"),1)):p("v-if",!0),e.connections.oauthConnected?(l(),d("div",gf,[e.connections.gistCount?(l(),d("p",yf,u(e.connections.gistCount)+" gist(s) use your GitHub App connection when available.",1)):p("v-if",!0),t[17]||(t[17]=n("p",null,"Switch all dependent repositories before revoking access. Gists can use your GitHub App connection.",-1)),e.connections.appConnected?(l(),d("button",{key:1,class:"connection-link connection-danger",disabled:e.busy||e.connections.resources.some(o=>o.connection==="oauth"),onClick:t[4]||(t[4]=o=>e.disconnectOAuth())},"Revoke OAuth access",8,bf)):p("v-if",!0)])):p("v-if",!0)])]),n("section",wf,[n("div",kf,[t[21]||(t[21]=n("h2",null,"Repository connections",-1)),n("span",Ef,u(e.connections.resources?.length||0)+" resources",1)]),t[23]||(t[23]=n("p",null,"Check access, then switch each resource to the GitHub App. After reinstalling the App, reconnect existing resources here to keep their anonymous URLs and published snapshots.",-1)),e.connections.resources?.length?p("v-if",!0):(l(),d("div",Cf,[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("div",null,[n("h3",null,"No repository connections yet"),n("p",null,"Your repositories and pull requests will appear here once you anonymize them.")],-1),n("a",{class:"connection-link",href:"/anonymize"},"New anonymization \u2192",-1)])])),(l(!0),d(K,null,ne(e.connections.resources,o=>(l(),d("div",{class:"connection-resource",key:o.type+o.id},[n("div",Sf,[n("strong",null,u(o.name||o.id),1),n("small",null,u(o.type)+" \xB7 "+u(o.id),1)]),n("span",{class:P(["connection-badge",{"connection-badge-muted":o.connection==="oauth"}])},u(o.connection==="github-app"?"Read-only App":"Legacy OAuth"),3),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&e.connections.appEnabled&&e.connections.appConnected?(l(),d("div",_f,[n("button",{class:"btn btn-outline-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!0)},"Check read-only access",8,Nf),o.eligible?(l(),d("button",{key:0,class:"btn btn-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!1)},u(o.connection==="github-app"?"Reconnect read-only access":"Switch to read-only access"),9,Rf)):p("v-if",!0),o.eligible===!1?(l(),d("span",Df,"Access unavailable. Allow this repository on GitHub, then check again.")):p("v-if",!0)])):p("v-if",!0),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&o.connection==="github-app"&&e.connections.oauthConnected?(l(),d("button",{key:1,class:"connection-link",disabled:e.busy,onClick:i=>e.changeConnection(o,"oauth",!1)},"Use OAuth",8,Tf)):p("v-if",!0)]))),128)),t[24]||(t[24]=n("p",{class:"connection-footnote"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v(" Removing access stops new fetches from GitHub. Published content keeps its current expiration and removal settings.")],-1))])])):p("v-if",!0)])}var Af={class:"container paper-page auth-page"},Of={class:"auth-layout"},Pf={class:"auth-options"},If={key:0},Vf={key:0,class:"btn btn-ink auth-continue",target:"_self",href:"/github/login?recover=1"},qf={key:1},Mf={key:1},Uf={key:2,class:"auth-legacy"},$f={key:3,role:"status"};function Tl(e,t){return l(),d("div",Af,[t[5]||(t[5]=n("a",{class:"auth-back",href:"/"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-left"})]),v(" Anonymous GitHub")],-1)),n("div",Of,[t[4]||(t[4]=fe('
Your research, ready for review

Your code.
Your identity,
protected.
Sign in to GitHub

Sign in to create and manage your anonymizations.

',1)),n("div",Pf,[e.accountRecovery?(l(),d("section",If,[t[0]||(t[0]=n("h2",null,"Verify your existing account",-1)),t[1]||(t[1]=n("p",null,"We found an existing account. Verify it with your previous GitHub connection to keep your anonymizations. Future sign-ins will use the GitHub App.",-1)),e.site_options?.GITHUB_OAUTH_ENABLED?(l(),d("a",Vf,"Verify with previous GitHub connection")):(l(),d("p",qf,"Account verification is currently unavailable. Please try again later."))])):p("v-if",!0),e.site_options?.GITHUB_APP_ENABLED&&!e.accountRecovery?(l(),d("section",Mf,[...t[2]||(t[2]=[fe('
Read-only access

Continue with GitHub

Connect through the GitHub App with read-only repository access.

  • You choose which repositories to share
  • No permission to write to your code
Sign in with GitHub Your existing anonymizations and connections stay with your account.',6)])])):p("v-if",!0),!e.site_options?.GITHUB_APP_ENABLED&&e.site_options?.GITHUB_OAUTH_ENABLED&&!e.accountRecovery?(l(),d("section",Uf,[...t[3]||(t[3]=[n("div",{class:"connection-title"},[n("h2",null,"Continue with GitHub")],-1),n("p",null,"Sign in to access your account. GitHub OAuth includes write access to private repositories.",-1),n("a",{class:"connection-link",target:"_self",href:"/github/login"},[v("Sign in with GitHub "),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-right"})])],-1)])])):p("v-if",!0),e.site_options&&!e.site_options.GITHUB_APP_ENABLED&&!e.site_options.GITHUB_OAUTH_ENABLED?(l(),d("p",$f,"GitHub sign-in is currently unavailable. Please try again later.")):p("v-if",!0)])])])}var Lf={class:"paper-empty"};function Al(e,t){return l(),d("div",Lf,[...t[0]||(t[0]=[fe('
Error \xB7 404

This link
isn\u2019t here.

The anonymous mirror you\u2019re looking for has expired, been removed by its owner, or never existed. If you received this URL from an author, ask them to re-issue it.

',1)])])}var Ff={class:"container paper-page admin-page"},Bf={class:"admin-summary"},Hf={class:"summary-total"},zf=["aria-pressed"],jf={class:"count"},Gf=["aria-pressed"],Wf={class:"count"},Kf=["aria-pressed"],Yf={class:"count"},Jf=["aria-pressed"],Qf={class:"count"},Xf=["aria-pressed"],Zf={class:"count"},xf={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},eh={class:"w-100 admin-filter-toolbar","aria-label":"Conferences","accept-charset":"UTF-8"},th={class:"admin-filter-row"},nh={class:"search-wrap"},oh={type:"search",class:"form-control",placeholder:"Search conferences\u2026",autocomplete:"off"},sh={key:0,class:"admin-search-hint"},ih={class:"admin-filter-inline","aria-label":"Pagination"},rh=["disabled"],ah={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},lh=["disabled"],dh={key:0,class:"admin-filter-row"},uh={class:"admin-active-chips"},ch={class:"key"},ph=["onClick"],fh={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},hh={class:"paper-table-head",role:"row"},mh={role:"columnheader"},vh={role:"columnheader"},gh={role:"columnheader"},yh={class:"paper-table-row",role:"row"},bh={class:"cell-anon",role:"cell"},wh={class:"anon-text"},kh=["textContent","href"],Eh={class:"anon-sub"},Ch={class:"cell-status",role:"cell"},Sh=["textContent"],_h={class:"cell-views num",role:"cell"},Nh=["textContent","href"],Rh={class:"cell-expires",role:"cell"},Dh={class:"cell-actions",role:"cell"},Th={class:"dropdown"},Ah={class:"dropdown-menu dropdown-menu-right"},Oh=["href"],Ph=["href"],Ih=["href"],Vh=["onClick"],qh={key:0,class:"paper-table-empty"},Mh={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},Uh={style:{"font-size":"12px",color:"var(--ink-muted)"}},$h={key:0,class:"pagination-compact"},Lh=["disabled"],Fh=["max"],Bh=["disabled"],Hh={class:"admin-filter-inline"},zh={class:"form-control form-control-sm"};function Ol(e,t){let o=ge("field"),i=ge("form");return l(),d("div",Ff,[t[47]||(t[47]=fe('
Admin \xA0/\xA0 Conferences

Conferences

',3)),n("div",Bf,[n("span",Hf,u(e.total>=0?e.fmt.number(e.total):"\u2026"),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[13]||(t[13]=v("Ready ",-1)),n("span",jf,u(e.fmt?.number(e.statusCountFor("ready"))),1)],10,zf),n("button",{type:"button",class:P(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[14]||(t[14]=v("Preparing ",-1)),n("span",Wf,u(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,Gf),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[15]||(t[15]=v("Errored ",-1)),n("span",Yf,u(e.fmt?.number(e.statusCountFor("error"))),1)],10,Kf),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[16]||(t[16]=v("Expired ",-1)),n("span",Qf,u(e.fmt?.number(e.statusCountFor("expired"))),1)],10,Jf),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[17]||(t[17]=v("Removed ",-1)),n("span",Zf,u(e.fmt?.number(e.statusCountFor("removed"))),1)],10,Xf)]),e.fetchError?(l(),d("div",xf,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fetchError),1)])):p("v-if",!0),D((l(),d("form",eh,[n("div",th,[n("div",nh,[D(n("input",oh,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",sh,"/"))]),t[22]||(t[22]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])]),n("span",ih,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,rh),n("span",ah,u(e.query?.page)+"/"+u(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,lh)])]),e.chips?.length?(l(),d("div",dh,[n("div",uh,[(l(!0),d(K,null,ne(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",ch,u(s?.label),1),n("span",null,u(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,ph)]))),128))])])):p("v-if",!0)])),[[i,e.viewState]]),n("div",fh,[n("div",hh,[n("div",mh,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="name"}]),onClick:t[8]||(t[8]=s=>e.sortBy("name"))},[t[25]||(t[25]=v("Conference ",-1)),e.sortIcon("name")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("name")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[24]||(t[24]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",vh,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[9]||(t[9]=s=>e.sortBy("status"))},[t[27]||(t[27]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=n("div",{role:"columnheader",class:"num"},"Repos",-1)),n("div",gh,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="startDate"}]),onClick:t[10]||(t[10]=s=>e.sortBy("startDate"))},[t[29]||(t[29]=v("Window ",-1)),e.sortIcon("startDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("startDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,ne(e.filteredConferences,(s,r)=>(l(),d("div",yh,[n("div",bh,[t[33]||(t[33]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",wh,[n("a",{class:"repo-name",textContent:u(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,kh),n("div",Eh,[n("span",null,u(s?.conferenceID),1),t[32]||(t[32]=v("\xA0\xB7\xA0",-1)),n("span",null,u(e.fmt?.number(s?.price||0))+" \u20AC",1)])])]),n("div",Ch,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,Sh)]),n("div",_h,[t[34]||(t[34]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:"Show repositories in this conference",textContent:u(e.fmt?.number(s?.repositories?.length||0)),href:e.safeUrl("/admin/?conference="+s?.conferenceID)},null,8,Nh)]),n("div",Rh,[t[35]||(t[35]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),v(" "+u(e.fmt?.date(s?.startDate))+" \u2013 "+u(e.fmt?.date(s?.endDate)),1)]),n("div",Dh,[n("div",Th,[t[41]||(t[41]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",Ah,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[36]||(t[36]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit",-1)])],8,Oh),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View",-1)])],8,Ph),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/?conference="+s?.conferenceID)},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),v(" View repositories",-1)])],8,Ih),t[40]||(t[40]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:de(a=>e.removeConference(s),["prevent"])},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,Vh),[[W,s?.status!="removed"]])])])])]))),256)),e.filteredConferences?.length==0?(l(),d("div",qh,[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No conferences match the current filters.",-1)])])):p("v-if",!0)]),n("div",Mh,[n("span",Uh,u(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",$h,[n("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),v(" Previous",-1)])],8,Lh),D(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,Fh),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+u(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[44]||(t[44]=[v("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Bh)])):p("v-if",!0),n("span",Hh,[t[46]||(t[46]=n("label",null,"Per page",-1)),D((l(),d("select",zh,[...t[45]||(t[45]=[fe('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var jh={class:"container paper-page admin-page errors-page"},Gh={class:"errors-header"},Wh={class:"errors-actions"},Kh={class:"kpi-grid"},Yh={class:"kpi-card"},Jh={class:"kpi-value"},Qh={key:0},Xh={key:1},Zh={class:"kpi-card kpi-error"},xh={class:"kpi-value"},em={class:"kpi-sub"},tm={class:"kpi-card kpi-warn"},nm={class:"kpi-value"},om={class:"kpi-sub"},sm={class:"kpi-card kpi-info"},im={class:"kpi-value"},rm={class:"kpi-sub"},am={class:"kpi-value"},lm={class:"kpi-sub"},dm={key:0,class:"dropped-warn"},um={class:"volume-chart"},cm={class:"volume-bars"},pm=["title"],fm={class:"errors-toolbar","aria-label":"Error filters"},hm={class:"seg-tabs"},mm={class:"search-wrap"},vm={type:"search",class:"form-control",placeholder:"code:repo_not_found module:route status:>=400",autocomplete:"off"},gm={key:0,class:"filter-count"},ym={class:"select-wrap"},bm={class:"form-control form-control-sm"},wm={class:"select-wrap"},km={class:"form-control form-control-sm"},Em={class:"autoref"},Cm={type:"checkbox"},Sm={key:0,class:"admin-empty"},_m={key:1,class:"errors-pager"},Nm={key:2,class:"errors-list"},Rm=["onClick"],Dm={class:"col-when"},Tm={class:"when-rel"},Am={class:"when-abs"},Om={class:"col-sev"},Pm={class:"sev-label"},Im={class:"col-mod"},Vm={class:"pill pill-module"},qm={class:"col-msg"},Mm={class:"msg-code"},Um={key:0,class:"msg-context"},$m={key:1,class:"msg-detail"},Lm={key:2,class:"msg-url"},Fm={class:"col-count"},Bm={key:0,class:"count-pill"},Hm={key:1,class:"count-pill count-pill-muted"},zm={class:"col-status"},jm={key:0,class:"errors-row-detail"},Gm={class:"detail-tabs"},Wm=["onClick"],Km=["onClick"],Ym=["onClick"],Jm={class:"detail-body"},Qm={class:"detail-main"},Xm={key:0},Zm={key:1,class:"stack-pre"},xm={key:2,class:"related-list"},ev={class:"when-abs"},tv={class:"msg-url"},nv={class:"detail-actions"},ov=["onClick"],sv=["onClick"],iv={key:0,class:"copy-hint"},rv={class:"detail-aside"},av={class:"aside-block"},lv=["title"],dv={class:"aside-block"},uv=["title"],cv={class:"aside-block"},pv={class:"aside-value"},fv={key:0,class:"aside-sub"},hv={key:0,class:"aside-block"},mv=["href"],vv={key:1,class:"aside-block"},gv={class:"aside-value mono"};function Pl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",jh,[t[32]||(t[32]=n("div",{class:"paper-crumbs"},[v("Admin \xA0/\xA0 "),n("span",{class:"here"},"Errors")],-1)),n("header",Gh,[t[10]||(t[10]=n("h1",{class:"paper-page-title"},"Errors",-1)),n("div",Wh,[n("button",{class:"btn btn-sm",type:"button",onClick:t[0]||(t[0]=s=>e.exportCsv())},[...t[8]||(t[8]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export CSV",-1)])]),n("button",{class:"btn btn-sm btn-danger-soft",type:"button",onClick:t[1]||(t[1]=s=>e.clearAll())},[...t[9]||(t[9]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Clear all",-1)])])])]),t[33]||(t[33]=fe('',1)),n("section",Kh,[n("div",Yh,[t[11]||(t[11]=n("div",{class:"kpi-label"},"Last 24h",-1)),n("div",Jh,u(e.stats?.last24h),1),n("div",{class:P(["kpi-sub",{up:e.stats?.delta>0,down:e.stats?.delta<0}])},[e.stats?.prev24h?(l(),d("span",Qh,u(e.stats?.delta>0?"+":"")+u(e.stats?.delta)+"% vs yesterday",1)):p("v-if",!0),e.stats?.prev24h?p("v-if",!0):(l(),d("span",Xh,"no prior baseline"))],2)]),n("div",Zh,[t[12]||(t[12]=n("div",{class:"kpi-label"},"Errors (5xx)",-1)),n("div",xh,u(e.stats?.severity?.error),1),n("div",em,u(e.stats?.unique?.error)+" unique",1)]),n("div",tm,[t[13]||(t[13]=n("div",{class:"kpi-label"},"Warnings (4xx)",-1)),n("div",nm,u(e.stats?.severity?.warn),1),n("div",om,u(e.stats?.unique?.warn)+" unique",1)]),n("div",sm,[t[14]||(t[14]=n("div",{class:"kpi-label"},"Info (auth, 404)",-1)),n("div",im,u(e.stats?.severity?.info),1),n("div",rm,u(e.stats?.unique?.info)+" unique",1)]),n("div",{class:P(["kpi-card",{"kpi-error":e.stats?.dropped>0}])},[t[15]||(t[15]=n("div",{class:"kpi-label"},"Captured",-1)),n("div",am,u(e.total),1),n("div",lm,[v(" cap "+u(e.cap)+" \xB7 "+u(e.available?"live":"redis off")+" ",1),e.stats?.dropped>0?(l(),d("span",dm," \xB7 "+u(e.stats?.dropped)+" dropped",1)):p("v-if",!0)])],2)]),n("section",um,[t[16]||(t[16]=fe('
Volume \xB7 24h \xB7 1h bucketserror warn info
',1)),n("div",cm,[(l(!0),d(K,null,ne(e.stats?.buckets,(s,r)=>(l(),d("div",{class:"volume-bar",key:r,title:e.bucketTitle(s)},[n("span",{class:"seg seg-error",style:qe({height:e.barPx(s,"error")+"px"})},null,4),n("span",{class:"seg seg-warn",style:qe({height:e.barPx(s,"warn")+"px"})},null,4),n("span",{class:"seg seg-info",style:qe({height:e.barPx(s,"info")+"px"})},null,4)],8,pm))),128))])]),D((l(),d("form",fm,[n("div",hm,[n("button",{type:"button",class:P({active:e.query?.bucket===""}),onClick:t[2]||(t[2]=s=>e.setBucket(""))},"All",2),n("button",{type:"button",class:P({active:e.query?.bucket==="error"}),onClick:t[3]||(t[3]=s=>e.setBucket("error"))},"5xx",2),n("button",{type:"button",class:P({active:e.query?.bucket==="warn"}),onClick:t[4]||(t[4]=s=>e.setBucket("warn"))},"4xx",2),n("button",{type:"button",class:P({active:e.query?.bucket==="info"}),onClick:t[5]||(t[5]=s=>e.setBucket("info"))},"Info",2)]),n("div",mm,[t[17]||(t[17]=n("svg",{class:"ui-icon search-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)),D(n("input",vm,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.parsedFilterCount?(l(),d("span",gm,u(e.parsedFilterCount)+" filter"+u(e.parsedFilterCount>1?"s":""),1)):p("v-if",!0)]),n("div",ym,[t[19]||(t[19]=n("label",null,"Sort",-1)),D((l(),d("select",bm,[...t[18]||(t[18]=[n("option",{value:"recent"},"Most recent",-1),n("option",{value:"count"},"Most frequent",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.sort=s},value:e.query?.sort,form:null,options:{}}]])]),n("div",wm,[t[21]||(t[21]=n("label",null,"Group",-1)),D((l(),d("select",km,[...t[20]||(t[20]=[n("option",{value:""},"Off",-1),n("option",{value:"code"},"By code",-1),n("option",{value:"module"},"By module",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.group=s},value:e.query?.group,form:null,options:{}}]])]),n("label",Em,[D(n("input",Cm,null,512),[[o,{state:e.viewState,set:s=>{e.query.autoRefresh=s},value:e.query?.autoRefresh,form:null,options:{}}]]),t[22]||(t[22]=v(" Auto-refresh ",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[6]||(t[6]=s=>e.refreshNow()),"aria-label":"Refresh"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])),[[i,e.viewState]]),e.visible?.length?p("v-if",!0):(l(),d("div",Sm,"No errors captured.")),e.canLoadMore()&&e.visible?.length?(l(),d("div",_m,[n("span",null,"Showing "+u(e.entries?.length)+" of "+u(e.total)+" captured",1),n("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>e.loadMore())},"Load older")])):p("v-if",!0),e.visible?.length?(l(),d("div",Nm,[t[31]||(t[31]=fe('
WhenSeverityModuleMessageCountStatus
',1)),(l(!0),d(K,null,ne(e.visible,(s,r)=>(l(),d("div",{class:P(["errors-row",{open:e.expanded[s?._key]}]),key:s?._key},[n("div",{class:"errors-row-main",onClick:a=>e.toggle(s)},[n("div",Dm,[n("div",Tm,u(e.relTime(s?.ts)),1),n("div",Am,u(e.absTimeShort(s?.ts)),1)]),n("div",Om,[n("span",{class:P(["sev-dot","sev-"+s?._bucket])},null,2),n("span",Pm,u(e.fmt?.title(s?._bucket)),1)]),n("div",Im,[n("span",Vm,u(s?.module),1)]),n("div",qm,[n("strong",Mm,u(s?.displayMessage),1),s?.displayContext&&s?.displayContext!==s?.displayMessage?(l(),d("span",Um,u(s?.displayContext),1)):p("v-if",!0),s?._detail?(l(),d("span",$m,u(s?._detail),1)):p("v-if",!0),s?._url?(l(),d("div",Lm,u(s?._url),1)):p("v-if",!0)]),n("div",Fm,[s?.count>1?(l(),d("span",Bm,"\xD7"+u(s?.count),1)):p("v-if",!0),s?.count===1?(l(),d("span",Hm,"\xD71")):p("v-if",!0)]),n("div",zm,[s?._status?(l(),d("span",{key:0,class:P(["status-pill","status-"+s?._bucket])},u(s?._status),3)):p("v-if",!0)])],8,Rm),e.expanded[s?._key]?(l(),d("div",jm,[n("div",Gm,[n("button",{type:"button",class:P({active:e.detailTab[s?._key]==="raw"||!e.detailTab[s?._key]}),onClick:a=>e.detailTab[s._key]="raw"},"Raw",10,Wm),s?._stack?(l(),d("button",{key:0,type:"button",class:P({active:e.detailTab[s?._key]==="stack"}),onClick:a=>e.detailTab[s._key]="stack"},"Stack",10,Km)):p("v-if",!0),s?.count>1?(l(),d("button",{key:1,type:"button",class:P({active:e.detailTab[s?._key]==="related"}),onClick:a=>e.detailTab[s._key]="related"},"Related ("+u(s?.count)+")",11,Ym)):p("v-if",!0)]),n("div",Jm,[n("div",Qm,[(e.detailTab[s?._key]||"raw")==="raw"?(l(),d("pre",Xm,u(s?._detailJson),1)):p("v-if",!0),e.detailTab[s?._key]==="stack"?(l(),d("pre",Zm,u(s?._stack),1)):p("v-if",!0),e.detailTab[s?._key]==="related"?(l(),d("div",xm,[(l(!0),d(K,null,ne(s?._related,(a,c)=>(l(),d("div",{class:"related-row",key:c},[n("span",ev,u(e.absTimeShort(a?.ts)),1),n("span",tv,u(a?._url),1),a?._status?(l(),d("span",{key:0,class:P(["status-pill","status-"+a?._bucket])},u(a?._status),3)):p("v-if",!0)]))),128))])):p("v-if",!0),n("div",nv,[n("button",{class:"btn btn-sm",type:"button",title:"Copy a curl that reproduces the request",onClick:a=>e.copyCurl(s)},[...t[24]||(t[24]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),v(" Copy curl",-1)])],8,ov),n("button",{class:"btn btn-sm",type:"button",onClick:a=>e.copyJson(s)},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-clipboard"})],-1),v(" Copy JSON",-1)])],8,sv),e.copyHint?(l(),d("span",iv,u(e.copyHint),1)):p("v-if",!0)])]),n("aside",rv,[n("div",av,[t[26]||(t[26]=n("div",{class:"aside-label"},"First seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?._firstSeen)},u(e.relTime(s?._firstSeen)),9,lv)]),n("div",dv,[t[27]||(t[27]=n("div",{class:"aside-label"},"Last seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?.ts)},u(e.relTime(s?.ts)),9,uv)]),n("div",cv,[t[28]||(t[28]=n("div",{class:"aside-label"},"Occurrences",-1)),n("div",pv,[v(u(s?.count),1),s?._lastHourCount?(l(),d("span",fv," \xB7 "+u(s?._lastHourCount)+" this hour",1)):p("v-if",!0)])]),s?._repoId?(l(),d("div",hv,[t[29]||(t[29]=n("div",{class:"aside-label"},"Repository",-1)),n("a",{class:"aside-value",href:e.safeUrl("/r/"+s?._repoId)},u(s?._repoId),9,mv)])):p("v-if",!0),s?._url?(l(),d("div",vv,[t[30]||(t[30]=n("div",{class:"aside-label"},"URL",-1)),n("div",gv,u(s?._url),1)])):p("v-if",!0)])])])):p("v-if",!0)],2))),128))])):p("v-if",!0)])}var yv={class:"container paper-page admin-page overview-page"},bv={key:0,class:"admin-empty"},wv={key:1,class:"alert alert-danger",style:{margin:"12px 0"}},kv={key:2},Ev={class:"ov-kpi-row"},Cv={class:"ov-kpi-card"},Sv={class:"ov-kpi-value"},_v={class:"ov-kpi-sub"},Nv={class:"ov-kpi-card"},Rv={class:"ov-kpi-sub"},Dv={class:"ov-kpi-card"},Tv={class:"ov-kpi-sub"},Av={class:"ov-kpi-card"},Ov={class:"ov-kpi-sub"},Pv={class:"ov-kpi-card"},Iv={class:"ov-kpi-value"},Vv={class:"ov-kpi-sub"},qv={class:"ov-daily-row"},Mv={class:"ov-daily-card"},Uv={class:"ov-daily-value"},$v={class:"ov-daily-card"},Lv={class:"ov-daily-value"},Fv={class:"ov-daily-sub"},Bv={class:"ov-daily-card"},Hv={class:"ov-daily-value"},zv={class:"ov-chart-row"},jv={class:"ov-chart-card"},Gv={key:0,class:"ov-spark-bars"},Wv=["data-tip","aria-label"],Kv={key:1,class:"ov-spark-x"},Yv={class:"ov-chart-card"},Jv={key:0,class:"ov-spark-bars"},Qv=["data-tip","aria-label"],Xv={key:1,class:"ov-spark-x"},Zv={class:"ov-chart-card"},xv={class:"ov-chart-head"},eg={class:"ov-chart-legend"},tg={key:0,class:"ov-spark-bars"},ng=["data-tip","aria-label"],og={key:1,class:"ov-spark-x"},sg={class:"ov-chart-card"},ig={key:0,class:"ov-spark-bars"},rg=["data-tip","aria-label"],ag={key:1,class:"ov-spark-x"},lg={class:"ov-triple-row"},dg={class:"ov-panel-card"},ug={class:"ov-panel-head"},cg={class:"ov-panel-meta"},pg={class:"ov-stacked-bar"},fg={class:"ov-bar-legend"},hg={href:"/admin/repositories",class:"ov-legend-item"},mg={class:"ov-legend-n"},vg={href:"/admin/repositories",class:"ov-legend-item"},gg={class:"ov-legend-n"},yg={href:"/admin/repositories",class:"ov-legend-item"},bg={class:"ov-legend-n"},wg={href:"/admin/repositories",class:"ov-legend-item"},kg={class:"ov-legend-n"},Eg={href:"/admin/repositories",class:"ov-legend-item"},Cg={class:"ov-legend-n"},Sg={class:"ov-panel-card"},_g={class:"ov-panel-head"},Ng={class:"ov-panel-meta"},Rg={class:"ov-error-bars"},Dg={class:"ov-ebar-row"},Tg={class:"ov-ebar-track"},Ag={class:"ov-ebar-n"},Og={class:"ov-ebar-row"},Pg={class:"ov-ebar-track"},Ig={class:"ov-ebar-n"},Vg={class:"ov-ebar-row"},qg={class:"ov-ebar-track"},Mg={class:"ov-ebar-n"},Ug={key:0,class:"ov-panel-foot"},$g={href:"/admin/errors"},Lg={class:"ov-panel-card"},Fg={class:"ov-routes-table"},Bg={class:"ov-route-row",href:"/admin/queues"},Hg={class:"ov-route-n"},zg={class:"ov-route-n"},jg={class:"ov-route-row",href:"/admin/queues"},Gg={class:"ov-route-n"},Wg={class:"ov-route-n"},Kg={class:"ov-route-row",href:"/admin/queues"},Yg={class:"ov-route-n"},Jg={class:"ov-route-n"},Qg={class:"ov-services-card"},Xg={class:"ov-services-head"},Zg={class:"ov-panel-meta"},xg={class:"ov-services-grid"},ey={class:"ov-svc"},ty={class:"ov-svc-info"},ny={class:"ov-svc-meta"},oy={class:"ov-svc-detail"},sy={class:"ov-svc"},iy={class:"ov-svc-info"},ry={key:0,class:"ov-svc-meta"},ay={key:1,class:"ov-svc-meta"},ly={class:"ov-svc"},dy={class:"ov-svc-info"},uy={key:0,class:"ov-svc-meta"},cy={key:1,class:"ov-svc-meta"},py={class:"ov-svc"},fy={class:"ov-svc-info"},hy={key:0,class:"ov-svc-meta"},my={key:1,class:"ov-svc-meta"},vy={class:"ov-svc"},gy={class:"ov-svc-info"},yy={class:"ov-svc-meta"},by={class:"ov-panel-card ov-cache","aria-labelledby":"cache-heading"},wy={class:"ov-panel-head ov-performance-head"},ky={class:"ov-performance-window"},Ey={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},Cy={key:1,class:"ov-performance-empty",role:"status"},Sy={key:0,class:"ov-performance-note"},_y={key:1,class:"ov-performance-note"},Ny={key:2,class:"ov-performance-message ov-performance-warning",role:"status"},Ry={key:3,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache storage budgets"},Dy={class:"ov-metrics-table"},Ty={scope:"row"},Ay={key:4,class:"ov-performance-note"},Oy={key:5,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache events and processing durations"},Py={class:"ov-metrics-table"},Iy={scope:"row"},Vy={key:6,class:"ov-performance-empty",role:"status"},qy={class:"ov-performance-note"},My={class:"ov-panel-card ov-performance","aria-labelledby":"performance-heading"},Uy={class:"ov-panel-head ov-performance-head"},$y={class:"ov-performance-window"},Ly={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},Fy={key:1,class:"ov-performance-empty",role:"status"},By={key:2},Hy={class:"paper-tabs ov-performance-tabs",role:"tablist","aria-label":"Performance metrics"},zy=["aria-selected","tabindex"],jy=["aria-selected","tabindex"],Gy=["aria-selected","tabindex"],Wy={id:"performance-routes",role:"tabpanel","aria-labelledby":"performance-routes-tab"},Ky={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Route latency metrics, scroll for more columns"},Yy={class:"ov-metrics-table"},Jy={scope:"row",class:"ov-metric-name"},Qy={class:"num"},Xy={class:"num"},Zy={class:"num"},xy={class:"num"},eb={class:"num"},tb={key:1,class:"ov-performance-empty"},ob={id:"performance-processes",role:"tabpanel","aria-labelledby":"performance-processes-tab"},sb={key:0,class:"ov-performance-message ov-performance-warning",role:"status"},ib={key:1,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Process resource metrics, scroll for more columns"},rb={class:"ov-metrics-table"},ab={scope:"row",class:"ov-metric-name"},lb={key:0,class:"ov-metric-warn"},db={class:"num"},ub={class:"num"},cb={class:"num"},pb={class:"num"},fb={class:"num"},hb={class:"num"},mb={class:"num"},vb={class:"num"},gb={id:"performance-stages",role:"tabpanel","aria-labelledby":"performance-stages-tab"},yb={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Work stage metrics, scroll for more columns"},bb={class:"ov-metrics-table"},wb={scope:"row",class:"ov-metric-name"},kb={class:"num"},Eb={class:"num"},Cb={class:"num"},Sb={key:1,class:"ov-performance-empty"};function Il(e,t){return l(),d("div",yv,[t[79]||(t[79]=fe('
Admin \xA0/\xA0 Overview

Overview

',3)),e.loading?(l(),d("div",bv,"Loading overview\u2026")):p("v-if",!0),e.error?(l(),d("div",wv,[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.error),1)])):p("v-if",!0),e.data?(l(),d("div",kv,[p(" \u2500\u2500 Top KPI row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",Ev,[n("div",Cv,[t[14]||(t[14]=n("div",{class:"ov-kpi-label"},[v("Repositories "),n("span",{class:"ov-dot ov-dot-ok"})],-1)),n("div",Sv,u(e.humanNum(e.data?.repos?.total)),1),n("div",_v,"+"+u(e.data?.repos?.newRepos24h)+" \xB7 last 24h",1)]),n("div",Nv,[t[15]||(t[15]=n("div",{class:"ov-kpi-label"},"CPU",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.cpuPercent>80}])},u(e.data?.system?.cpuPercent)+"%",3),n("div",Rv,u(e.data?.system?.cpuCount)+" cores \xB7 load "+u(e.data?.system?.loadAvg?.[0]?.toFixed(1)),1)]),n("div",Dv,[t[16]||(t[16]=n("div",{class:"ov-kpi-label"},"Memory",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.memPercent>85}])},u(e.data?.system?.memPercent)+"%",3),n("div",Tv,u(e.humanBytes(e.data?.system?.memUsed))+" / "+u(e.humanBytes(e.data?.system?.memTotal)),1)]),n("div",Av,[t[17]||(t[17]=n("div",{class:"ov-kpi-label"},"Disk",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.diskPercent>85}])},u(e.data?.system?.diskPercent)+"%",3),n("div",Ov,u(e.humanBytes(e.data?.system?.diskUsed))+" / "+u(e.humanBytes(e.data?.system?.diskTotal))+" \xB7 "+u(e.data?.system?.diskMount),1)]),n("div",Pv,[t[18]||(t[18]=n("div",{class:"ov-kpi-label"},"Uptime",-1)),n("div",Iv,u(e.humanDuration(e.data?.system?.uptime)),1),n("div",Vv,u(e.data?.system?.nodeVersion)+" \xB7 "+u(e.data?.system?.platform),1)])]),p(" \u2500\u2500 Daily activity highlights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",qv,[n("div",Mv,[t[19]||(t[19]=n("div",{class:"ov-daily-label"},"New repos today",-1)),n("div",Uv,"+"+u(e.fmt?.number(e.data?.daily?.today?.repositories)),1),t[20]||(t[20]=n("div",{class:"ov-daily-sub"},"since yesterday",-1))]),n("div",$v,[t[21]||(t[21]=n("div",{class:"ov-daily-label"},"New users today",-1)),n("div",Lv,"+"+u(e.fmt?.number(e.data?.daily?.today?.users)),1),n("div",Fv,u(e.fmt?.number(e.data?.users?.total))+" total users",1)]),n("div",Bv,[t[22]||(t[22]=n("div",{class:"ov-daily-label"},"Page views today",-1)),n("div",Hv,"+"+u(e.fmt?.number(e.data?.daily?.today?.pageViews)),1),t[23]||(t[23]=n("div",{class:"ov-daily-sub"},"since yesterday",-1))])]),p(" \u2500\u2500 Daily charts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",zv,[n("div",jv,[t[24]||(t[24]=n("div",{class:"ov-chart-head"},[n("span",{class:"ov-chart-title"},"Daily page views \xB7 30d"),n("span",{class:"ov-chart-legend"},[n("span",{class:"ov-dot-legend ov-dot-accent"}),v("views/day")])],-1)),e.data?.history?.length?(l(),d("div",Gv,[(l(!0),d(K,null,ne(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+" views","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+" views"},[n("span",{class:"ov-spark-fill",style:qe({height:e.historyBarH(o,"dailyPageViews")+"px"})},null,4)],8,Wv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",Kv,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),n("div",Yv,[t[25]||(t[25]=n("div",{class:"ov-chart-head"},[n("span",{class:"ov-chart-title"},"New repos \xB7 30d"),n("span",{class:"ov-chart-legend"},[n("span",{class:"ov-dot-legend ov-dot-ok-fill"}),v("repos/day")])],-1)),e.data?.history?.length?(l(),d("div",Jv,[(l(!0),d(K,null,ne(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+" repos","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+" repos"},[n("span",{class:"ov-spark-fill ov-spark-fill-alt",style:qe({height:e.historyBarH(o,"dailyRepositories")+"px"})},null,4)],8,Qv))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",Xv,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),n("div",Zv,[n("div",xv,[t[27]||(t[27]=n("span",{class:"ov-chart-title"},"Users \xB7 30d",-1)),n("span",eg,[t[26]||(t[26]=n("span",{class:"ov-dot-legend ov-dot-user-fill"},null,-1)),v("total users \xB7 "+u(e.fmt?.number(e.historyRange("nbUsers").min))+"\u2013"+u(e.fmt?.number(e.historyRange("nbUsers").max)),1)])]),e.data?.history?.length?(l(),d("div",tg,[(l(!0),d(K,null,ne(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": "+e.fmt?.number(o?.nbUsers)+" users","aria-label":e.historyLabel(o)+": "+e.fmt?.number(o?.nbUsers)+" users"},[n("span",{class:"ov-spark-fill ov-spark-fill-user",style:qe({height:e.historyRangeH(o,"nbUsers")+"px"})},null,4)],8,ng))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",og,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)]),n("div",sg,[t[28]||(t[28]=n("div",{class:"ov-chart-head"},[n("span",{class:"ov-chart-title"},"New users \xB7 30d"),n("span",{class:"ov-chart-legend"},[n("span",{class:"ov-dot-legend ov-dot-new-user-fill"}),v("users/day")])],-1)),e.data?.history?.length?(l(),d("div",ig,[(l(!0),d(K,null,ne(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+" users","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+" users"},[n("span",{class:"ov-spark-fill ov-spark-fill-new-user",style:qe({height:e.historyBarH(o,"dailyUsers")+"px"})},null,4)],8,rg))),128))])):p("v-if",!0),e.data?.history?.length?(l(),d("div",ag,[n("span",null,u(e.historyLabel(e.data?.history[0])),1),n("span",null,u(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,u(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):p("v-if",!0)])]),p(" \u2500\u2500 Three-panel row: Status / Errors / Queues \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",lg,[p(" Repo status breakdown "),n("div",dg,[n("div",ug,[t[29]||(t[29]=n("span",{class:"ov-panel-title"},"Repo status",-1)),n("span",cg,u(e.fmt?.number(e.data?.repos?.total))+" total",1)]),n("div",pg,[n("span",{class:"ov-bar-seg ov-bar-ready",title:"Ready",style:qe({width:e.barPct("ready")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-preparing",title:"Preparing",style:qe({width:e.barPct("preparing")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-error",title:"Error",style:qe({width:e.barPct("error")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-expired",title:"Expired",style:qe({width:e.barPct("expired")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-removed",title:"Removed",style:qe({width:e.barPct("removed")+"%"})},null,4)]),n("div",fg,[n("a",hg,[t[30]||(t[30]=n("span",{class:"ov-swatch ov-bar-ready"},null,-1)),t[31]||(t[31]=v(" ready ",-1)),n("span",mg,u(e.fmt?.number(e.statusCount("ready"))),1)]),n("a",vg,[t[32]||(t[32]=n("span",{class:"ov-swatch ov-bar-preparing"},null,-1)),t[33]||(t[33]=v(" preparing ",-1)),n("span",gg,u(e.fmt?.number(e.statusCount("preparing")+e.statusCount("download"))),1)]),n("a",yg,[t[34]||(t[34]=n("span",{class:"ov-swatch ov-bar-error"},null,-1)),t[35]||(t[35]=v(" error ",-1)),n("span",bg,u(e.fmt?.number(e.statusCount("error"))),1)]),n("a",wg,[t[36]||(t[36]=n("span",{class:"ov-swatch ov-bar-expired"},null,-1)),t[37]||(t[37]=v(" expired ",-1)),n("span",kg,u(e.fmt?.number(e.statusCount("expired")+e.statusCount("expiring"))),1)]),n("a",Eg,[t[38]||(t[38]=n("span",{class:"ov-swatch ov-bar-removed"},null,-1)),t[39]||(t[39]=v(" removed ",-1)),n("span",Cg,u(e.fmt?.number(e.statusCount("removed")+e.statusCount("removing"))),1)])])]),p(" Error breakdown "),n("div",Sg,[n("div",_g,[t[40]||(t[40]=n("span",{class:"ov-panel-title"},"Errors \xB7 24h",-1)),n("span",Ng,u(e.data?.errors?.last24h)+" total",1)]),n("div",Rg,[n("div",Dg,[t[41]||(t[41]=n("span",{class:"ov-ebar-label"},"5xx",-1)),n("span",Tg,[n("span",{class:"ov-ebar-fill ov-ebar-error",style:qe({width:e.errPct("error")+"%"})},null,4)]),n("span",Ag,u(e.data?.errors?.severity?.error),1)]),n("div",Og,[t[42]||(t[42]=n("span",{class:"ov-ebar-label"},"4xx",-1)),n("span",Pg,[n("span",{class:"ov-ebar-fill ov-ebar-warn",style:qe({width:e.errPct("warn")+"%"})},null,4)]),n("span",Ig,u(e.data?.errors?.severity?.warn),1)]),n("div",Vg,[t[43]||(t[43]=n("span",{class:"ov-ebar-label"},"Info",-1)),n("span",qg,[n("span",{class:"ov-ebar-fill ov-ebar-info",style:qe({width:e.errPct("info")+"%"})},null,4)]),n("span",Mg,u(e.data?.errors?.severity?.info),1)])]),e.data?.repos?.recentErrors24h?(l(),d("div",Ug,[n("a",$g,u(e.data?.repos?.recentErrors24h)+" repos in error state \u2192",1)])):p("v-if",!0)]),p(" Top routes / queues "),n("div",Lg,[t[48]||(t[48]=n("div",{class:"ov-panel-head"},[n("span",{class:"ov-panel-title"},"Queues"),n("span",{class:"ov-panel-meta"},"by state")],-1)),n("div",Fg,[t[47]||(t[47]=fe('
QueueActiveWaitFailed
',1)),n("a",Bg,[t[44]||(t[44]=n("span",{class:"ov-route-name"},"download",-1)),n("span",Hg,u(e.data?.queues?.download?.active),1),n("span",zg,u(e.data?.queues?.download?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.download?.failed>0}])},u(e.data?.queues?.download?.failed),3)]),n("a",jg,[t[45]||(t[45]=n("span",{class:"ov-route-name"},"remove",-1)),n("span",Gg,u(e.data?.queues?.remove?.active),1),n("span",Wg,u(e.data?.queues?.remove?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.remove?.failed>0}])},u(e.data?.queues?.remove?.failed),3)]),n("a",Kg,[t[46]||(t[46]=n("span",{class:"ov-route-name"},"cache",-1)),n("span",Yg,u(e.data?.queues?.cache?.active),1),n("span",Jg,u(e.data?.queues?.cache?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.cache?.failed>0}])},u(e.data?.queues?.cache?.failed),3)])])])]),p(" \u2500\u2500 Services bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",Qg,[n("div",Xg,[t[49]||(t[49]=n("span",{class:"ov-panel-title"},"Services",-1)),n("span",Zg,u(e.fmt?.number(e.data?.users?.total))+" users \xB7 "+u(e.data?.conferences?.total)+" conferences",1)]),n("div",xg,[n("div",ey,[t[51]||(t[51]=n("span",{class:"ov-svc-dot ov-dot-ok"},null,-1)),n("div",ty,[t[50]||(t[50]=n("span",{class:"ov-svc-name"},"web",-1)),n("span",ny,u(e.data?.system?.nodeVersion),1)]),n("span",oy,"uptime "+u(e.humanDuration(e.data?.system?.uptime)),1)]),n("div",sy,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.download)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",iy,[t[52]||(t[52]=n("span",{class:"ov-svc-name"},"download",-1)),e.queueTotal(e.data?.queues?.download)?(l(),d("span",ry,u(e.queueTotal(e.data?.queues?.download))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.download)?p("v-if",!0):(l(),d("span",ay,"idle"))])]),n("div",ly,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.cache)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",dy,[t[53]||(t[53]=n("span",{class:"ov-svc-name"},"cache",-1)),e.queueTotal(e.data?.queues?.cache)?(l(),d("span",uy,u(e.queueTotal(e.data?.queues?.cache))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.cache)?p("v-if",!0):(l(),d("span",cy,"idle"))])]),n("div",py,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.remove)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",fy,[t[54]||(t[54]=n("span",{class:"ov-svc-name"},"remove",-1)),e.queueTotal(e.data?.queues?.remove)?(l(),d("span",hy,u(e.queueTotal(e.data?.queues?.remove))+" jobs",1)):p("v-if",!0),e.queueTotal(e.data?.queues?.remove)?p("v-if",!0):(l(),d("span",my,"idle"))])]),n("div",vy,[n("span",{class:P(["ov-svc-dot",e.data?.repos?.recentErrors24h>10?"ov-dot-warn":"ov-dot-ok"])},null,2),n("div",gy,[t[55]||(t[55]=n("span",{class:"ov-svc-name"},"errors",-1)),n("span",yy,u(e.data?.errors?.last24h)+" / 24h",1)])])])])])):p("v-if",!0),n("section",by,[n("div",wy,[t[60]||(t[60]=n("div",null,[n("h2",{class:"ov-panel-title",id:"cache-heading"},"Cache"),n("p",{class:"ov-performance-note"},"Shared storage, repeated reads and anonymization work \xB7 refreshes every 30 seconds")],-1)),n("div",ky,[t[58]||(t[58]=n("label",{for:"cache-window"},"Time range",-1)),D(n("select",{id:"cache-window",class:"form-control form-control-sm","onUpdate:modelValue":t[0]||(t[0]=o=>e.cacheMinutes=o),onChange:t[1]||(t[1]=o=>e.loadCache())},[...t[56]||(t[56]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1),n("option",{value:1440},"Last 24 hours",-1),n("option",{value:10080},"Last 7 days",-1)])],544),[[pn,e.cacheMinutes,void 0,{number:!0}]]),t[59]||(t[59]=n("label",{for:"cache-traffic"},"Traffic",-1)),D(n("select",{id:"cache-traffic",class:"form-control form-control-sm","onUpdate:modelValue":t[2]||(t[2]=o=>e.cacheTraffic=o)},[...t[57]||(t[57]=[fe('',6)])],512),[[pn,e.cacheTraffic]])])]),e.cacheError?(l(),d("div",Ey,[n("span",null,u(e.cacheError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[3]||(t[3]=o=>e.loadCache())},"Retry")])):p("v-if",!0),!e.cacheReport&&!e.cacheError?(l(),d("p",Cy,"Loading cache monitoring\u2026")):p("v-if",!0),e.cacheReport?.available?(l(),d(K,{key:2},[e.cacheReport.enabled?p("v-if",!0):(l(),d("p",Sy,"Shared blob storage is disabled. Inspection and legacy-cache activity are still measured.")),e.cacheReport.filesystemSupported?p("v-if",!0):(l(),d("p",_y,"Shared blobs require a local filesystem. The configured storage continues to use its existing cache.")),e.cacheReport.dropped?(l(),d("p",Ny,u(e.cacheReport.dropped)+" telemetry events were dropped. Totals may be incomplete.",1)):p("v-if",!0),e.cacheReport.source?(l(),d("div",Ry,[n("table",Dy,[t[61]||(t[61]=n("caption",{class:"sr-only"},"Current shared-cache storage and byte budgets",-1)),t[62]||(t[62]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Pool"),n("th",{scope:"col"},"Allocated / budget"),n("th",{scope:"col"},"Reserved for fills"),n("th",{scope:"col"},"Original bytes"),n("th",{scope:"col"},"Blobs"),n("th",{scope:"col"},"Active readers")])],-1)),n("tbody",null,[(l(!0),d(K,null,ne([{name:"Source blobs",data:e.cacheReport.source},{name:"Transformed output",data:e.cacheReport.results}],o=>D((l(),d("tr",{key:o.name},[n("th",Ty,u(o.name),1),n("td",null,u(e.humanBytes(o.data?.allocatedBytes))+" / "+u(e.humanBytes(o.data?.budgetBytes)),1),n("td",null,u(e.humanBytes(o.data?.reservedBytes)),1),n("td",null,u(e.humanBytes(o.data?.originalBytes)),1),n("td",null,u(o.data?.blobs),1),n("td",null,u(o.data?.activeReaders),1)])),[[W,o.data]])),128))])])])):p("v-if",!0),e.cacheReport.source?(l(),d("p",Ay,"Source request hit rate: "+u(e.cacheRate("source","count"))+" \xB7 Source byte hit rate: "+u(e.cacheRate("source","bytes"))+" \xB7 Decision hit rate: "+u(e.cacheRate("decision","count")),1)):p("v-if",!0),t[65]||(t[65]=n("p",{class:"ov-performance-note"},"Reuse counts measure consecutive reads of the same blob within each interval. Codec timings are elapsed stream time, not CPU time; eviction times measure how long a blob was idle. Known monitors are identified by request metadata; other automation may remain in file reads.",-1)),e.cacheRows().length?(l(),d("div",Oy,[n("table",Py,[t[63]||(t[63]=n("caption",{class:"sr-only"},"Cache events for the selected time range and traffic",-1)),t[64]||(t[64]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Event"),n("th",{scope:"col"},"Traffic"),n("th",{scope:"col"},"Count"),n("th",{scope:"col"},"Bytes"),n("th",{scope:"col"},"Mean measured time"),n("th",{scope:"col"},"p95 bound")])],-1)),n("tbody",null,[(l(!0),d(K,null,ne(e.cacheRows(),o=>(l(),d("tr",{key:o.name+":"+o.traffic},[n("th",Iy,u(e.cacheEventName(o.name)),1),n("td",null,u(o.traffic),1),n("td",null,u(o.count),1),n("td",null,u(e.humanBytes(o.bytes)),1),n("td",null,u(o.ms?(o.ms/o.count).toFixed(2)+" ms":"Not timed"),1),n("td",null,u(e.cacheP95(o)),1)]))),128))])])])):(l(),d("p",Vy,"No cache events in this time range for the selected traffic.")),n("p",qy,"Updated "+u(e.sampleAge(e.cacheReport))+" seconds ago. Minute history is retained for 48 hours; hourly history for 30 days.",1)],64)):p("v-if",!0)]),n("section",My,[n("div",Uy,[t[68]||(t[68]=n("div",null,[n("h2",{class:"ov-panel-title",id:"performance-heading"},"Request performance"),n("p",{class:"ov-performance-note"},"Request latency and process health \xB7 refreshes every 30 seconds")],-1)),n("div",$y,[t[67]||(t[67]=n("label",{for:"performance-window"},"Time range",-1)),D(n("select",{id:"performance-window",class:"form-control form-control-sm","onUpdate:modelValue":t[4]||(t[4]=o=>e.performanceMinutes=o),onChange:t[5]||(t[5]=o=>e.loadPerformance()),"aria-label":"Performance time range"},[...t[66]||(t[66]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1)])],544),[[pn,e.performanceMinutes,void 0,{number:!0}]])])]),e.performanceError?(l(),d("div",Ly,[t[69]||(t[69]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),n("span",null,u(e.performanceError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[6]||(t[6]=o=>e.loadPerformance())},"Retry")])):p("v-if",!0),!e.performance&&!e.performanceError?(l(),d("p",Fy,"Loading performance monitoring\u2026")):p("v-if",!0),e.performance?.available?(l(),d("div",By,[n("div",Hy,[n("button",{id:"performance-routes-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="routes"}]),role:"tab","aria-selected":e.performanceTab==="routes",tabindex:e.performanceTab==="routes"?0:-1,"aria-controls":"performance-routes",onClick:t[7]||(t[7]=o=>e.performanceTab="routes"),onKeydown:t[8]||(t[8]=o=>e.previewTabKeydown(o))},"Routes",42,zy),n("button",{id:"performance-processes-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="processes"}]),role:"tab","aria-selected":e.performanceTab==="processes",tabindex:e.performanceTab==="processes"?0:-1,"aria-controls":"performance-processes",onClick:t[9]||(t[9]=o=>e.performanceTab="processes"),onKeydown:t[10]||(t[10]=o=>e.previewTabKeydown(o))},"Processes",42,jy),n("button",{id:"performance-stages-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="stages"}]),role:"tab","aria-selected":e.performanceTab==="stages",tabindex:e.performanceTab==="stages"?0:-1,"aria-controls":"performance-stages",onClick:t[11]||(t[11]=o=>e.performanceTab="stages"),onKeydown:t[12]||(t[12]=o=>e.previewTabKeydown(o))},"Work stages",42,Gy)]),D(n("div",Wy,[e.performance.routes?.length?(l(),d("div",Ky,[n("table",Yy,[t[70]||(t[70]=n("caption",{class:"sr-only"},"Route latency for the selected time range",-1)),t[71]||(t[71]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Route"),n("th",{scope:"col",class:"num"},"Requests"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"First byte p95"),n("th",{scope:"col",class:"num"},"p95"),n("th",{scope:"col",class:"num"},"p99"),n("th",{scope:"col",class:"num"},"Interrupted"),n("th",{scope:"col",class:"num"},"5xx"),n("th",{scope:"col",class:"num"},"Slow")])],-1)),n("tbody",null,[(l(!0),d(K,null,ne(e.performance.routes,o=>(l(),d("tr",{key:o.service+o.method+o.route},[n("th",Jy,[n("span",null,u(o.route),1),n("small",null,u(o.service)+" \xB7 "+u(o.method),1)]),n("td",Qy,u(e.fmt.number(o.count)),1),n("td",Xy,u(e.formatMs(o.avgMs)),1),n("td",Zy,u(e.firstByteBound(o)),1),n("td",xy,u(e.latencyBound(o,"p95UpperMs")),1),n("td",eb,u(e.latencyBound(o,"p99UpperMs")),1),n("td",{class:P(["num",{"ov-metric-warn":o.aborted>0}])},u(e.fmt.number(o.aborted)),3),n("td",{class:P(["num",{"ov-metric-warn":o.errors>0}])},u(e.fmt.number(o.errors)),3),n("td",{class:P(["num",{"ov-metric-warn":o.slow>0}])},u(e.fmt.number(o.slow)),3)]))),128))])])])):(l(),d("p",tb,"No recorded requests in this time range yet."))],512),[[W,e.performanceTab==="routes"]]),D(n("div",ob,[t[75]||(t[75]=n("p",{class:"ov-performance-note"},"API and streamer processes \xB7 latest sample per instance",-1)),e.performance.instances?.length?(l(),d("div",ib,[n("table",rb,[t[73]||(t[73]=n("caption",{class:"sr-only"},"API and streamer process resource usage",-1)),t[74]||(t[74]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Process"),n("th",{scope:"col",class:"num"},"RSS / limit"),n("th",{scope:"col",class:"num"},"CPU"),n("th",{scope:"col",class:"num"},"Event loop p95"),n("th",{scope:"col",class:"num"},"Active requests"),n("th",{scope:"col",class:"num"},"Sockets / CLOSE_WAIT"),n("th",{scope:"col",class:"num"},"Workers / waiting"),n("th",{scope:"col",class:"num"},"Sample age"),n("th",{scope:"col",class:"num"},"Dropped batches / metrics")])],-1)),n("tbody",null,[(l(!0),d(K,null,ne(e.performance.instances,o=>(l(),d("tr",{key:o.instance,class:P({"ov-metric-warning-row":e.performanceWarning(o)})},[n("th",ab,[n("span",null,u(o.instance),1),e.performanceWarning(o)?(l(),d("small",lb,[...t[72]||(t[72]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),v(" Needs attention",-1)])])):p("v-if",!0)]),n("td",db,[v(u(e.humanBytes(o.memory.rss))+" / "+u(e.humanBytes(o.memoryLimitBytes)),1),n("small",null,"Peak "+u(e.humanBytes(e.peakRss(o))),1)]),n("td",ub,u(o.cpuPercent.toFixed(1))+"%",1),n("td",cb,u(o.eventLoop.p95Ms.toFixed(1))+" ms",1),n("td",pb,u(o.activeRequests),1),n("td",fb,u(o.sockets?.descriptors??"Unavailable")+" / "+u(o.sockets?.closeWait??"Unavailable"),1),n("td",hb,u(o.workers?.running??0)+" / "+u(o.workers?.waiting??0),1),n("td",mb,u(e.sampleAge(o))+" s",1),n("td",vb,u(o.droppedBatches)+" / "+u(o.droppedMetrics),1)],2))),128))])])])):(l(),d("div",sb,"No recent process samples. Monitoring coverage is incomplete."))],512),[[W,e.performanceTab==="processes"]]),D(n("div",gb,[e.performance.stages?.some(o=>o.metric!=="first_byte")?(l(),d("div",yb,[n("table",bb,[t[76]||(t[76]=n("caption",{class:"sr-only"},"Work stages and cache results",-1)),t[77]||(t[77]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Work stage"),n("th",{scope:"col",class:"num"},"Samples"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"p95")])],-1)),n("tbody",null,[(l(!0),d(K,null,ne(e.performance.stages.filter(o=>o.metric!=="first_byte"),o=>(l(),d("tr",{key:o.service+o.metric},[n("th",wb,[n("span",null,u(o.metric),1),n("small",null,u(o.service),1)]),n("td",kb,u(e.fmt.number(o.count)),1),n("td",Eb,u(e.formatMs(o.avgMs)),1),n("td",Cb,u(e.latencyBound(o,"p95UpperMs")),1)]))),128))])])])):(l(),d("p",Sb,"No recorded work stages or cache results in this time range yet."))],512),[[W,e.performanceTab==="stages"]]),t[78]||(t[78]=n("details",{class:"ov-performance-help"},[n("summary",null,"How to read these metrics"),n("p",null,"Latency includes upstream waits and response transfer. Percentiles show histogram bucket upper bounds, not exact timings. Process rows marked \u201CNeeds attention\u201D have stale samples, dropped monitoring data, CLOSE_WAIT sockets, high event loop delay, or high memory usage.")],-1))])):p("v-if",!0)])])}var _b={class:"container paper-page admin-page"},Nb={class:"q-header"},Rb={class:"q-header-actions"},Db={class:"q-range-btns"},Tb={class:"q-cards"},Ab=["aria-pressed","onKeydown","onClick"],Ob={class:"q-card-head"},Pb=["textContent"],Ib=["textContent"],Vb={class:"q-card-sub"},qb={key:0,class:"q-card-bar"},Mb={key:0,class:"q-detail"},Ub={class:"q-throughput"},$b={class:"q-section-label"},Lb={class:"q-section-right"},Fb={class:"q-stats-panel"},Bb={class:"q-section-label"},Hb={class:"q-stats-grid"},zb={class:"q-stat"},jb=["textContent"],Gb={class:"q-stat"},Wb=["textContent"],Kb={class:"q-stat"},Yb=["textContent"],Jb={class:"q-stat"},Qb=["textContent"],Xb={class:"q-stat"},Zb=["textContent"],xb={class:"q-stat"},e1=["textContent"],t1={class:"q-stats-actions"},n1=["disabled"],o1={class:"q-jobs"},s1={class:"q-jobs-header"},i1={class:"q-section-label"},r1={class:"q-state-filters"},a1={class:"q-state-toggle"},l1={type:"checkbox"},d1={class:"q-search-row"},u1={type:"search",class:"form-control",placeholder:"Search by job/repo id\u2026",autocomplete:"off"},c1={class:"q-auto-refresh"},p1={type:"checkbox"},f1={key:0,class:"q-table"},h1=["onClick"],m1={class:"q-cell-state"},v1=["textContent"],g1=["textContent"],y1={class:"q-cell-id"},b1=["textContent","href"],w1={class:"q-cell-payload"},k1=["textContent"],E1={key:0,class:"q-payload-detail"},C1=["textContent"],S1=["textContent"],_1={class:"q-cell-progress"},N1={key:0,class:"q-progress-wrap"},R1=["textContent"],D1={class:"q-cell-actions"},T1=["onClick"],A1=["onClick"],O1={key:0,class:"q-detail-row"},P1={colspan:"7"},I1={class:"q-job-detail"},V1={class:"q-job-detail-grid"},q1={class:"q-job-detail-item"},M1={class:"q-job-detail-value"},U1=["textContent","href"],$1={class:"q-job-detail-item"},L1={class:"q-job-detail-value"},F1=["textContent"],B1={key:0,class:"q-job-detail-item"},H1=["textContent"],z1={key:1,class:"q-job-detail-item"},j1=["textContent"],G1={key:2,class:"q-job-detail-item"},W1={class:"q-job-detail-value"},K1={key:3,class:"q-job-detail-item"},Y1=["textContent"],J1={key:4,class:"q-job-detail-item"},Q1=["textContent"],X1={key:5,class:"q-job-detail-item"},Z1=["textContent"],x1={key:6,class:"q-job-detail-item"},ew=["textContent"],tw={key:7,class:"q-job-detail-item"},nw=["textContent"],ow={key:0,class:"q-job-detail-error"},sw=["textContent"],iw={key:1},rw=["textContent"],aw={class:"q-job-detail-actions"},lw=["onClick"],dw=["onClick"],uw=["href"],cw={key:1,class:"paper-table-empty",style:{border:"1px solid var(--border-color)","border-radius":"10px",background:"var(--paper-card)"}},pw={key:0},fw={key:1};function Vl(e,t){let o=ge("field");return l(),d("div",_b,[t[48]||(t[48]=n("div",{class:"paper-crumbs"},[v("Admin \xA0/\xA0 "),n("span",{class:"here"},"Queues")],-1)),n("div",Nb,[t[12]||(t[12]=n("h1",{class:"paper-page-title"},"Queues",-1)),n("div",Rb,[n("div",Db,[n("button",{class:P(["btn btn-sm",{active:e.range=="1h"}]),onClick:t[0]||(t[0]=i=>e.setRange("1h"))},"1h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="6h"}]),onClick:t[1]||(t[1]=i=>e.setRange("6h"))},"6h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="24h"}]),onClick:t[2]||(t[2]=i=>e.setRange("24h"))},"24h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="7d"}]),onClick:t[3]||(t[3]=i=>e.setRange("7d"))},"7d",2)]),n("button",{class:"btn btn-sm",onClick:t[4]||(t[4]=i=>e.pauseAll())},"Pause all"),n("button",{class:"btn btn-sm btn-danger-soft",onClick:t[5]||(t[5]=i=>e.drainSelected())},"Drain "+u(e.selectedQueue),1)])]),t[49]||(t[49]=fe('',1)),p(" Queue overview cards "),n("div",Tb,[(l(!0),d(K,null,ne(e.queueList,(i,s)=>(l(),d("div",{class:P(["q-card",{selected:e.selectedQueue==i?.key,paused:i?.paused}]),role:"button",tabindex:"0","aria-pressed":e.selectedQueue===i.key,onKeydown:[An(de(r=>e.selectQueue(i.key),["prevent"]),["enter"]),An(de(r=>e.selectQueue(i.key),["prevent"]),["space"])],onClick:r=>e.selectQueue(i.key)},[n("div",Ob,[n("span",{class:P(["q-dot",{"q-dot-red":i?.paused||i?.counts?.failed>0}])},null,2),n("span",{class:"q-card-name",textContent:u(i?.label)},null,8,Pb)]),n("div",{class:"q-card-count",textContent:u((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0))},null,8,Ib),n("div",Vb,[n("span",null,"waiting \xB7 "+u(i?.counts?.active||0)+" active",1),i?.counts?.active?(l(),d("div",qb,[n("div",{class:"q-card-bar-fill",style:qe({width:i?.counts?.active/((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0)||1)*100+"%"})},null,4)])):p("v-if",!0)])],42,Ab))),256))]),p(" Detail: throughput chart + stats panel "),e.selectedStats?(l(),d("div",Mb,[n("div",Ub,[n("div",$b,[v(u(e.selectedQueue)+" \xB7 throughput ",1),n("span",Lb,[t[13]||(t[13]=n("span",{class:"q-legend-completed"},"\u25CF",-1)),t[14]||(t[14]=v(" completed ",-1)),t[15]||(t[15]=n("span",{class:"q-legend-failed"},"\u25CF",-1)),t[16]||(t[16]=v(" failed ",-1)),t[17]||(t[17]=n("span",{class:"q-legend-exec"},"- -",-1)),v(" avg time \xB7 "+u(e.range),1)])]),t[18]||(t[18]=n("div",{class:"q-chart-wrap"},[n("canvas",{id:"q-throughput-chart",height:"180"}),n("div",{id:"q-chart-tooltip",class:"q-chart-tooltip",style:{display:"none"}}),n("div",{id:"q-chart-crosshair",class:"q-chart-crosshair",style:{display:"none"}})],-1))]),n("div",Fb,[n("div",Bb,u(e.selectedQueue)+" \xB7 stats",1),n("div",Hb,[n("div",zb,[t[19]||(t[19]=n("div",{class:"q-stat-label"},"Waiting",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.counts?.waiting||0)},null,8,jb)]),n("div",Gb,[t[20]||(t[20]=n("div",{class:"q-stat-label"},"Active",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.counts?.active||0)},null,8,Wb)]),n("div",Kb,[t[21]||(t[21]=n("div",{class:"q-stat-label"},"Completed (24h)",-1)),n("div",{class:"q-stat-value",textContent:u(e.fmt?.number(e.selectedStats?.completed24h))},null,8,Yb)]),n("div",Jb,[t[22]||(t[22]=n("div",{class:"q-stat-label"},"Failed (24h)",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.failed24h||0)},null,8,Qb)]),n("div",Xb,[t[23]||(t[23]=n("div",{class:"q-stat-label"},"Delayed",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.counts?.delayed||0)},null,8,Zb)]),n("div",xb,[t[24]||(t[24]=n("div",{class:"q-stat-label"},"Workers",-1)),n("div",{class:"q-stat-value",textContent:u(e.selectedStats?.workers||0)},null,8,e1)])]),n("div",t1,[n("button",{class:"btn btn-sm",onClick:t[6]||(t[6]=i=>e.togglePause())},u(e.selectedStats?.paused?"Resume":"Pause"),1),n("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=i=>e.retryFailed()),disabled:!e.selectedStats?.counts?.failed},"Retry failed",8,n1),n("button",{class:"btn btn-sm",onClick:t[8]||(t[8]=i=>e.emptyQueue())},"Empty")])])])):p("v-if",!0),e.actionError?(l(),d("div",{key:1,class:"q-toast-error",onClick:t[9]||(t[9]=i=>e.actionError=null)},[t[25]||(t[25]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),v(" "+u(e.actionError),1)])):p("v-if",!0),p(" Jobs table "),n("div",o1,[n("div",s1,[n("div",i1,"All jobs \xB7 "+u(e.selectedQueue),1),n("div",r1,[(l(!0),d(K,null,ne(e.allStates,(i,s)=>(l(),d("label",a1,[D(n("input",l1,null,512),[[o,{state:e.viewState,set:r=>{e.stateFilter[i]=r},value:e.stateFilter[i],form:null,options:{}}]]),n("span",{class:P("q-state-chip q-state-"+i)},u(i),3)]))),256))])]),n("div",d1,[D(n("input",u1,null,512),[[o,{state:e.viewState,set:i=>{e.query.search=i},value:e.query?.search,form:null,options:{}}]]),n("label",c1,[D(n("input",p1,null,512),[[o,{state:e.viewState,set:i=>{e.query.autoRefresh=i},value:e.query?.autoRefresh,form:null,options:{}}]]),t[26]||(t[26]=v(" Auto-refresh ",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[10]||(t[10]=i=>e.refreshNow()),"aria-label":"Refresh"},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])]),e.filteredJobs().length>0?(l(),d("table",f1,[t[46]||(t[46]=n("thead",null,[n("tr",null,[n("th",null,"State"),n("th",null,"Job id"),n("th",null,"Payload"),n("th",null,"Attempts"),n("th",null,"Duration"),n("th",null,"Progress"),n("th")])],-1)),(l(!0),d(K,null,ne(e.filteredJobs(),(i,s)=>(l(),d("tbody",null,[n("tr",{style:{cursor:"pointer"},class:P({"q-row-failed":i?._state=="failed","q-row-expanded":e.expanded[i?.id]}),onClick:r=>e.toggleJob(i)},[n("td",m1,[n("span",{textContent:u(i?._state),class:P("q-state-badge q-state-"+i?._state)},null,10,v1),i?._state=="delayed"&&i?.delayUntil?(l(),d("span",{key:0,class:"q-delay-hint",textContent:u(e.delayCountdown(i?.delayUntil))},null,8,g1)):p("v-if",!0)]),n("td",y1,[(l(),d("svg",{class:P(["ui-icon q-chevron",{"q-chevron-open":e.expanded[i?.id]}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#ui-icon-chevron-right"},null,-1)])],2)),n("a",{target:"_blank",textContent:u("job:"+e.fmt.limitTo(i?.id,6)),onClick:t[11]||(t[11]=r=>r.stopPropagation()),href:e.safeUrl("/r/"+i?.id)},null,8,b1)]),n("td",w1,[n("span",{textContent:u(i?.name||"anonymize")},null,8,k1),i?.data?.repoId&&i?.data?.repoId!==i?.name?(l(),d("span",E1," \xB7 "+u(i?.data?.repoId),1)):p("v-if",!0)]),n("td",{class:"q-cell-num",textContent:u(i?.attemptsMade||1)},null,8,C1),n("td",{class:"q-cell-num",textContent:u(e.jobDuration(i))},null,8,S1),n("td",_1,[e.jobProgressPct(i)!==null?(l(),d("div",N1,[n("div",{class:"q-progress-bar",style:qe({"--pct":e.jobProgressPct(i)+"%"})},null,4),n("span",{class:"q-progress-label",textContent:u(e.jobProgressPct(i)+"%")},null,8,R1)])):p("v-if",!0)]),n("td",D1,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm btn-icon",title:"Retry",onClick:r=>{e.retryJob(i),r.stopPropagation()},"aria-label":"Retry job"},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])],8,T1)):p("v-if",!0),n("button",{class:"btn btn-sm btn-icon",title:"Remove","aria-label":"Remove job",onClick:r=>{e.removeJob(i),r.stopPropagation()}},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,A1)])],10,h1),e.expanded[i?.id]?(l(),d("tr",O1,[n("td",P1,[n("div",I1,[n("div",V1,[n("div",q1,[t[31]||(t[31]=n("span",{class:"q-job-detail-label"},"Job id",-1)),n("span",M1,[n("a",{target:"_blank",textContent:u(i?.id),href:e.safeUrl("/r/"+i?.id)},null,8,U1)])]),n("div",$1,[t[32]||(t[32]=n("span",{class:"q-job-detail-label"},"State",-1)),n("span",L1,[n("span",{textContent:u(i?._state),class:P("q-state-badge q-state-"+i?._state)},null,10,F1)])]),i?.data?.repoId?(l(),d("div",B1,[t[33]||(t[33]=n("span",{class:"q-job-detail-label"},"Repo ID",-1)),n("span",{class:"q-job-detail-value",textContent:u(i?.data?.repoId)},null,8,H1)])):p("v-if",!0),i?.timestamp?(l(),d("div",z1,[t[34]||(t[34]=n("span",{class:"q-job-detail-label"},"Created",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.humanTime(i?.timestamp))},null,8,j1)])):p("v-if",!0),i?._state=="delayed"&&i?.delayUntil?(l(),d("div",G1,[t[35]||(t[35]=n("span",{class:"q-job-detail-label"},"Retry at",-1)),n("span",W1,u(e.humanTime(i?.delayUntil))+" ("+u(e.delayCountdown(i?.delayUntil))+")",1)])):p("v-if",!0),i?.processedOn?(l(),d("div",K1,[t[36]||(t[36]=n("span",{class:"q-job-detail-label"},"Processed",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.humanTime(i?.processedOn))},null,8,Y1)])):p("v-if",!0),i?.finishedOn?(l(),d("div",J1,[t[37]||(t[37]=n("span",{class:"q-job-detail-label"},"Finished",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.humanTime(i?.finishedOn))},null,8,Q1)])):p("v-if",!0),i?.attemptsMade?(l(),d("div",X1,[t[38]||(t[38]=n("span",{class:"q-job-detail-label"},"Attempts",-1)),n("span",{class:"q-job-detail-value",textContent:u(i?.attemptsMade)},null,8,Z1)])):p("v-if",!0),i?.progress&&i?.progress?.status?(l(),d("div",x1,[t[39]||(t[39]=n("span",{class:"q-job-detail-label"},"Status",-1)),n("span",{class:"q-job-detail-value",textContent:u(i?.progress?.status)},null,8,ew)])):p("v-if",!0),e.jobProgressPct(i)!==null?(l(),d("div",tw,[t[40]||(t[40]=n("span",{class:"q-job-detail-label"},"Progress",-1)),n("span",{class:"q-job-detail-value",textContent:u(e.jobProgressPct(i)+"%")},null,8,nw)])):p("v-if",!0)]),i?.failedReason?(l(),d("div",ow,[t[41]||(t[41]=n("span",{class:"q-job-detail-label"},"Error",-1)),n("div",{class:"q-error-reason",textContent:u(i?.failedReason)},null,8,sw)])):p("v-if",!0),i?.stacktrace?.length?(l(),d("div",iw,[t[42]||(t[42]=n("span",{class:"q-job-detail-label"},"Stacktrace",-1)),(l(!0),d(K,null,ne(i?.stacktrace,(r,a)=>(l(),d("pre",{class:"q-error-stack",key:a},[n("code",{textContent:u(r)},null,8,rw)]))),128))])):p("v-if",!0),n("div",aw,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm",onClick:r=>e.retryJob(i)},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Retry",-1)])],8,lw)):p("v-if",!0),n("button",{class:"btn btn-sm",onClick:r=>e.removeJob(i)},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,dw),n("a",{class:"btn btn-sm",target:"_blank",href:e.safeUrl("/r/"+i?.id)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1),v(" View repo",-1)])],8,uw)])])])])):p("v-if",!0)]))),256))])):p("v-if",!0),e.filteredJobs().length==0?(l(),d("div",cw,[t[47]||(t[47]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1)),e.query?.search?p("v-if",!0):(l(),d("span",pw,"No jobs in the "+u(e.selectedQueue)+" queue.",1)),e.query?.search?(l(),d("span",fw,"No jobs match the current filters.")):p("v-if",!0)])):p("v-if",!0)])])}var hw={class:"container paper-page admin-page"},mw={class:"admin-summary"},vw={class:"summary-total"},gw={class:"summary-meta"},yw=["aria-pressed"],bw={class:"count"},ww=["aria-pressed"],kw={class:"count"},Ew=["aria-pressed"],Cw={class:"count"},Sw=["aria-pressed"],_w={class:"count"},Nw=["aria-pressed"],Rw={class:"count"},Dw={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Tw={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},Aw={class:"admin-filter-row"},Ow={class:"search-wrap"},Pw={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Iw={key:0,class:"admin-search-hint"},Vw={class:"admin-filter-inline"},qw={type:"text",class:"form-control form-control-sm",placeholder:"username"},Mw={class:"admin-filter-inline"},Uw={type:"text",class:"form-control form-control-sm",placeholder:"ID"},$w={class:"admin-filter-inline","aria-label":"Pagination"},Lw=["disabled"],Fw={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},Bw=["disabled"],Hw={key:0,class:"admin-filter-row"},zw={class:"admin-active-chips"},jw={class:"key"},Gw=["onClick"],Ww={key:1,class:"bulk-bar"},Kw={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},Yw={class:"paper-table-head",role:"row"},Jw={role:"columnheader",style:{width:"28px"}},Qw=["checked"],Xw={role:"columnheader"},Zw={role:"columnheader"},xw={role:"columnheader",class:"num"},ek={role:"columnheader"},tk={role:"cell",style:{width:"28px"}},nk={type:"checkbox","aria-label":"Select repository"},ok={class:"cell-anon",role:"cell"},sk={class:"anon-text"},ik=["textContent","href"],rk={class:"anon-sub"},ak=["textContent","href"],lk={key:0},dk=["textContent","href"],uk={key:1},ck=["textContent","href"],pk={key:2},fk={class:"cell-status",role:"cell"},hk={class:"status-line"},mk=["textContent"],vk=["textContent","title"],gk={class:"cell-views num",role:"cell"},yk=["textContent"],bk={class:"cell-expires",role:"cell"},wk=["textContent"],kk={class:"cell-actions",role:"cell"},Ek={class:"dropdown"},Ck={class:"dropdown-menu dropdown-menu-right"},Sk=["href"],_k=["href"],Nk=["href"],Rk=["onClick"],Dk=["onClick"],Tk=["onClick"],Ak=["onClick"],Ok=["onClick"],Pk=["onClick"],Ik={key:0,class:"paper-table-empty"},Vk={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},qk={style:{"font-size":"12px",color:"var(--ink-muted)"}},Mk={key:0,class:"pagination-compact"},Uk=["disabled"],$k=["max"],Lk=["disabled"],Fk={class:"admin-filter-inline"},Bk={class:"form-control form-control-sm"};function ql(e,t){let o=ge("field"),i=ge("form");return l(),d("div",hw,[t[69]||(t[69]=fe('
Admin \xA0/\xA0 Repositories

Repositories

',3)),n("div",mw,[n("span",vw,u(e.total>=0?e.fmt.number(e.total):"\u2026"),1),n("span",gw,u(e.fmt?.humanFileSize(e.totalSize))+" on disk",1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[18]||(t[18]=v("Ready ",-1)),n("span",bw,u(e.fmt?.number(e.statusCountFor("ready"))),1)],10,yw),n("button",{type:"button",class:P(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[19]||(t[19]=v("Preparing ",-1)),n("span",kw,u(e.fmt?.number(e.statusCountFor("preparing")+e.statusCountFor("download"))),1)],10,ww),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[20]||(t[20]=v("Errored ",-1)),n("span",Cw,u(e.fmt?.number(e.statusCountFor("error"))),1)],10,Ew),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[21]||(t[21]=v("Expired ",-1)),n("span",_w,u(e.fmt?.number(e.statusCountFor("expired")+e.statusCountFor("expiring"))),1)],10,Sw),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[22]||(t[22]=v("Removed ",-1)),n("span",Rw,u(e.fmt?.number(e.statusCountFor("removed")+e.statusCountFor("removing"))),1)],10,Nw)]),e.fetchError?(l(),d("div",Dw,[t[23]||(t[23]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fetchError),1)])):p("v-if",!0),D((l(),d("form",Tw,[p(" Row 1: search + scoped inputs + headline actions "),n("div",Aw,[n("div",Ow,[D(n("input",Pw,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",Iw,"/"))]),n("span",Vw,[t[24]||(t[24]=n("label",null,"Owner",-1)),D(n("input",qw,null,512),[[o,{state:e.viewState,set:s=>{e.query.owner=s},value:e.query?.owner,form:null,options:{}}]])]),n("span",Mw,[t[25]||(t[25]=n("label",null,"Conference",-1)),D(n("input",Uw,null,512),[[o,{state:e.viewState,set:s=>{e.query.conference=s},value:e.query?.conference,form:null,options:{}}]])]),t[29]||(t[29]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])]),n("span",$w,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,Lw),n("span",Fw,u(e.query?.page)+"/"+u(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Bw)])]),p(" Row 2: appears only when there are active filter chips "),e.chips?.length?(l(),d("div",Hw,[n("div",zw,[(l(!0),d(K,null,ne(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",jw,u(s?.label),1),n("span",null,u(s?.value),1),n("button",{type:"button","aria-label":"Remove filter",onClick:a=>e.clearFilter(s.key)},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,Gw)]))),128))])])):p("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",Ww,[n("span",null,[n("strong",null,u(e.selectedCount()),1),t[31]||(t[31]=v(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[8]||(t[8]=s=>e.bulkRefresh())},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[9]||(t[9]=s=>e.bulkRemoveCache())},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[10]||(t[10]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),n("div",Kw,[n("div",Yw,[n("div",Jw,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[11]||(t[11]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,Qw)]),n("div",Xw,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[12]||(t[12]=s=>e.sortBy("source.repositoryName"))},[t[35]||(t[35]=v("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",Zw,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[13]||(t[13]=s=>e.sortBy("status"))},[t[37]||(t[37]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[36]||(t[36]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",xw,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[14]||(t[14]=s=>e.sortBy("pageView"))},[t[39]||(t[39]=v("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[38]||(t[38]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",ek,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[15]||(t[15]=s=>e.sortBy("anonymizeDate"))},[t[41]||(t[41]=v("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[40]||(t[40]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[42]||(t[42]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,ne(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",tk,[D(n("input",nk,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",ok,[t[47]||(t[47]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",sk,[n("a",{class:"repo-name",target:"_blank",textContent:u(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,ik),n("div",rk,[n("a",{textContent:u(s?.source?.repositoryName),href:e.safeUrl("https://github.com/"+s?.source?.repositoryName+"/")},null,8,ak),s?.options?.update?(l(),d("span",lk,[t[43]||(t[43]=v("\xA0\xB7\xA0",-1)),n("a",{textContent:u(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,dk)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",uk,[t[44]||(t[44]=v("\xA0\xB7\xA0@",-1)),n("a",{textContent:u(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,ck)])),s?.conference?(l(),d("span",pk,[t[45]||(t[45]=v("\xA0\xB7\xA0",-1)),t[46]||(t[46]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),v(" "+u(s?.conference),1)])):p("v-if",!0),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.humanFileSize(s?.size?.storage)),1),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.number(s?.options?.terms?.length))+" "+u(s?.options?.terms?.length===1?"term":"terms"),1)])])]),n("div",fk,[n("span",hk,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,mk)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:u(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,vk)):p("v-if",!0)]),n("div",gk,[t[48]||(t[48]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[49]||(t[49]=v()),n("span",{textContent:u(e.fmt?.number(s?.pageView||0))},null,8,yk)]),n("div",bk,[t[50]||(t[50]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[51]||(t[51]=v()),n("span",{textContent:u(e.fmt?.humanTime(s?.anonymizeDate))},null,8,wk)]),n("div",kk,[n("div",Ek,[t[63]||(t[63]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",Ck,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[52]||(t[52]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit",-1)])],8,Sk),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[53]||(t[53]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View repo",-1)])],8,_k),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[54]||(t[54]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),v(" View page",-1)])],8,Nk)):p("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.fetchGithubInfo(s),["prevent"])},[...t[55]||(t[55]=[n("i",{class:"fab fa-github"},null,-1),v(" Live GitHub info",-1)])],8,Rk),t[61]||(t[61]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.updateRepository(s),["prevent"])},[...t[56]||(t[56]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force update",-1)])],8,Dk),[[W,s?.status=="ready"||s?.status=="error"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.updateRepository(s),["prevent"])},[...t[57]||(t[57]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Enable",-1)])],8,Tk),[[W,s?.status=="removed"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.showStatusMessage(s),["prevent"])},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),v(" View status message",-1)])],8,Ak),[[W,s?.statusMessage]]),t[62]||(t[62]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.removeCache(s),["prevent"])},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])],8,Ok),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:de(a=>e.removeRepository(s),["prevent"])},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,Pk),[[W,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",Ik,[...t[64]||(t[64]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)]),n("div",Vk,[n("span",qk,u(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",Mk,[n("button",{class:"btn btn-sm",onClick:t[16]||(t[16]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[65]||(t[65]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),v(" Previous ",-1)])],8,Uk),D(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},"aria-label":"Page",max:e.totalPage},null,8,$k),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+u(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[17]||(t[17]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[66]||(t[66]=[v(" Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Lk)])):p("v-if",!0),n("span",Fk,[t[68]||(t[68]=n("label",null,"Per page",-1)),D((l(),d("select",Bk,[...t[67]||(t[67]=[fe('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var Hk={class:"container paper-page admin-page"},zk={class:"paper-crumbs"},jk={class:"here"},Gk={class:"paper-page-title"},Wk={key:0,class:"user-detail-card"},Kk={class:"user-header"},Yk=["src"],Jk={class:"status-dot-wrap"},Qk=["textContent"],Xk={key:0,class:"type-badge type-repo"},Zk={class:"user-actions",style:{"margin-top":"4px"}},xk={class:"user-detail-grid"},e0={class:"detail-value"},t0={class:"detail-value"},n0={key:0,class:"detail-value",style:{"font-family":"var(--font-mono)","font-size":"0.85rem"}},o0={key:1,class:"detail-value text-muted"},s0={class:"detail-value"},i0=["href"],r0={class:"detail-value"},a0={class:"detail-value"},l0={key:0},d0={key:1,class:"text-muted"},u0={class:"detail-value"},c0={key:0,style:{"margin-top":"20px"}},p0={class:"paper-table w-100",style:{"margin-top":"10px"}},f0={class:"paper-table-row",style:{"grid-template-columns":"1fr 160px"}},h0={class:"cell-anon",role:"cell"},m0={class:"anon-text"},v0=["textContent"],g0={class:"cell-expires",role:"cell"},y0={key:1,class:"admin-section-header"},b0={class:"section-count"},w0={key:2,class:"user-detail-card"},k0={type:"text",class:"form-control",placeholder:"Token name (e.g. dev-laptop)",required:""},E0={key:0,class:"alert alert-warning",role:"alert"},C0={style:{"white-space":"pre-wrap","word-break":"break-all",margin:"8px 0 0","font-family":"var(--font-mono)","font-size":"0.85rem"}},S0={key:1,class:"paper-table w-100"},_0={class:"paper-table-row",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},N0=["textContent"],R0=["textContent"],D0={role:"cell"},T0={key:0},A0={key:1,class:"text-muted"},O0={role:"cell"},P0=["onClick"],I0={key:2,class:"paper-table-empty"},V0={class:"admin-section-header"},q0={class:"section-count"},M0={class:"admin-summary"},U0={class:"summary-total"},$0=["aria-pressed"],L0={class:"count"},F0=["aria-pressed"],B0={class:"count"},H0=["aria-pressed"],z0={class:"count"},j0=["aria-pressed"],G0={class:"count"},W0=["aria-pressed"],K0={class:"count"},Y0={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},J0={class:"admin-filter-row"},Q0={class:"search-wrap"},X0={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},Z0={key:3,class:"bulk-bar"},x0={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},eE={class:"paper-table-head",role:"row"},tE={role:"columnheader",style:{width:"28px"}},nE=["checked"],oE={role:"columnheader"},sE={role:"columnheader"},iE={role:"columnheader",class:"num"},rE={role:"columnheader"},aE={role:"cell",style:{width:"28px"}},lE={type:"checkbox","aria-label":"Select repository"},dE={class:"cell-anon",role:"cell"},uE={class:"anon-text"},cE=["textContent","href"],pE={class:"anon-sub"},fE=["textContent","href"],hE={key:0},mE=["textContent","href"],vE={key:1},gE=["textContent","href"],yE={key:2},bE={class:"cell-status",role:"cell"},wE={class:"status-line"},kE=["textContent"],EE=["textContent","title"],CE=["textContent"],SE=["textContent"],_E={class:"cell-actions",role:"cell"},NE={class:"dropdown"},RE={class:"dropdown-menu dropdown-menu-right"},DE=["href"],TE=["href"],AE=["href"],OE=["onClick"],PE=["onClick"],IE=["onClick"],VE=["onClick"],qE=["onClick"],ME=["onClick"],UE={key:0,class:"paper-table-empty"};function Ml(e,t){let o=ge("field"),i=ge("form");return l(),d("div",Hk,[n("div",zk,[t[22]||(t[22]=n("a",{href:"/admin/"},"Admin",-1)),t[23]||(t[23]=v(" \xA0/\xA0 ",-1)),t[24]||(t[24]=n("a",{href:"/admin/users"},"Users",-1)),t[25]||(t[25]=v(" \xA0/\xA0 ",-1)),n("span",jk,u(e.userInfo?.username||"Profile"),1)]),n("h1",Gk,u(e.userInfo?.username||"User"),1),t[87]||(t[87]=fe('',1)),e.userInfo?(l(),d("div",Wk,[n("div",Kk,[e.userInfo?.photo?(l(),d("img",{key:0,width:"56",height:"56",src:e.safeUrl(e.userInfo?.photo)},null,8,Yk)):p("v-if",!0),n("div",null,[n("h2",null,[v(u(e.userInfo?.username)+" ",1),n("span",Jk,[n("span",{class:P(["status-dot",{"status-ready":e.userInfo?.status=="active","status-removed":e.userInfo?.status!="active"}])},null,2),n("span",{textContent:u(e.fmt?.title(e.userInfo?.status))},null,8,Qk)]),e.userInfo?.isAdmin?(l(),d("span",Xk,"Admin")):p("v-if",!0)]),n("div",Zk,[e.userInfo?.status!=="banned"?(l(),d("button",{key:0,class:"btn btn-sm text-danger",onClick:t[0]||(t[0]=s=>e.banUser())},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),v(" Ban",-1)])])):p("v-if",!0),e.userInfo?.status==="banned"||e.userInfo?.status==="removed"?(l(),d("button",{key:1,class:"btn btn-sm",onClick:t[1]||(t[1]=s=>e.activateUser())},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Activate",-1)])])):p("v-if",!0),e.userInfo?.isAdmin?p("v-if",!0):(l(),d("button",{key:2,class:"btn btn-sm",onClick:t[2]||(t[2]=s=>e.promoteUser())},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-shield"})],-1),v(" Promote to admin",-1)])])),e.userInfo?.isAdmin?(l(),d("button",{key:3,class:"btn btn-sm text-danger",onClick:t[3]||(t[3]=s=>e.demoteUser())},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-minus"})],-1),v(" Remove admin",-1)])])):p("v-if",!0)])])]),n("div",xk,[t[32]||(t[32]=n("div",{class:"detail-label"},"ID",-1)),n("div",e0,u(e.userInfo?._id),1),t[33]||(t[33]=n("div",{class:"detail-label"},"Email",-1)),n("div",t0,u(e.userInfo?.emails?.[0]?.email),1),t[34]||(t[34]=n("div",{class:"detail-label"},"Access token",-1)),e.userInfo?.accessTokens?.github?(l(),d("div",n0,u(e.userInfo?.accessTokens?.github),1)):p("v-if",!0),e.userInfo?.accessTokens?.github?p("v-if",!0):(l(),d("div",o0,"None stored")),t[35]||(t[35]=n("div",{class:"detail-label"},"GitHub",-1)),n("div",s0,[n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+e.userInfo?.username)},[t[30]||(t[30]=n("i",{class:"fab fa-github"},null,-1)),v(" "+u(e.userInfo?.username),1)],8,i0)]),t[36]||(t[36]=n("div",{class:"detail-label"},"Created",-1)),n("div",r0,u(e.fmt?.humanTime(e.userInfo?.dateOfEntry)),1),t[37]||(t[37]=n("div",{class:"detail-label"},"Last connection",-1)),n("div",a0,[e.userInfo?.accessTokenDates?.github?(l(),d("span",l0,u(e.fmt?.humanTime(e.userInfo?.accessTokenDates?.github)),1)):p("v-if",!0),e.userInfo?.accessTokenDates?.github?p("v-if",!0):(l(),d("span",d0,"never"))]),t[38]||(t[38]=n("div",{class:"detail-label"},"GitHub repos",-1)),n("div",u0,[v(u(e.userInfo?.repositories?.length)+" repositories ",1),n("button",{class:"btn btn-sm ml-2",onClick:t[4]||(t[4]=s=>e.showRepos=!e.showRepos)},u(e.showRepos?"Hide":"Show"),1),n("button",{class:"btn btn-sm ml-1",onClick:t[5]||(t[5]=s=>e.getGitHubRepositories())},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Refresh ",-1)])])])]),e.showRepos?(l(),d("div",c0,[t[41]||(t[41]=n("div",{class:"paper-section-eyebrow"},"GitHub repositories",-1)),n("div",p0,[(l(!0),d(K,null,ne(e.userInfo?.repositories,(s,r)=>(l(),d("div",f0,[n("div",h0,[t[39]||(t[39]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",m0,[n("span",{class:"repo-name",textContent:u(s?.name)},null,8,v0)])]),n("div",g0,[t[40]||(t[40]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-database"})],-1)),v(" "+u(e.fmt?.humanFileSize(s?.size)),1)])]))),256))])])):p("v-if",!0)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",y0,[t[42]||(t[42]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),v(" API tokens")],-1)),n("span",b0,u(e.tokens?.length),1)])):p("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",w0,[t[48]||(t[48]=n("p",{class:"paper-page-lede"},[v("Personal API tokens for this admin account. Send as "),n("code",null,"Authorization: Bearer "),v(" to authenticate without GitHub OAuth (useful for development).")],-1)),D((l(),d("form",{class:"d-flex",style:{gap:"8px","margin-bottom":"12px"},onSubmit:t[6]||(t[6]=de(s=>e.submitForm(s,()=>{e.createToken()}),["prevent"]))},[D(n("input",k0,null,512),[[o,{state:e.viewState,set:s=>{e.tokenForm.name=s},value:e.tokenForm?.name,form:null,options:{}}]]),t[43]||(t[43]=n("button",{type:"submit",class:"btn btn-ink"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})]),v(" Generate")],-1))],32)),[[i,e.viewState]]),e.tokenForm?.plaintext?(l(),d("div",E0,[t[44]||(t[44]=n("strong",null,"Copy this token now \u2014 it will not be shown again:",-1)),n("pre",C0,u(e.tokenForm?.plaintext),1),n("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=s=>e.tokenForm.plaintext=null)},"Dismiss")])):p("v-if",!0),e.tokens?.length?(l(),d("div",S0,[t[46]||(t[46]=n("div",{class:"paper-table-head",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},[n("div",{role:"columnheader"},"Name"),n("div",{role:"columnheader"},"Created"),n("div",{role:"columnheader"},"Last used"),n("div",{role:"columnheader","aria-label":"Actions"})],-1)),(l(!0),d(K,null,ne(e.tokens,(s,r)=>(l(),d("div",_0,[n("div",{role:"cell",textContent:u(s?.name)},null,8,N0),n("div",{role:"cell",textContent:u(e.fmt?.humanTime(s?.createdAt))},null,8,R0),n("div",D0,[s?.lastUsedAt?(l(),d("span",T0,u(e.fmt?.humanTime(s?.lastUsedAt)),1)):p("v-if",!0),s?.lastUsedAt?p("v-if",!0):(l(),d("span",A0,"never"))]),n("div",O0,[n("button",{class:"btn btn-sm text-danger btn-icon",title:"Revoke","aria-label":"Revoke token",onClick:a=>e.revokeToken(s)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,P0)])]))),256))])):p("v-if",!0),e.tokens?.length?p("v-if",!0):(l(),d("div",I0,[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No tokens yet.",-1)])]))])):p("v-if",!0),n("div",V0,[t[49]||(t[49]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})]),v(" Anonymized repositories")],-1)),n("span",q0,u(e.repositories?.length),1)]),n("div",M0,[n("span",U0,u(e.fmt?.number(e.repositories?.length)),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.filters?.status?.ready===!1}]),title:"Toggle ready filter",onClick:t[8]||(t[8]=s=>e.filters.status.ready=!e.filters.status.ready),"aria-pressed":e.filters?.status?.ready===!1},[t[50]||(t[50]=v("Ready ",-1)),n("span",L0,u(e.fmt?.number(e.statusCountFor("ready"))),1)],10,$0),n("button",{type:"button",class:P(["summary-pill warn",{active:e.filters?.status?.preparing===!1}]),title:"Toggle preparing filter",onClick:t[9]||(t[9]=s=>e.filters.status.preparing=!e.filters.status.preparing),"aria-pressed":e.filters?.status?.preparing===!1},[t[51]||(t[51]=v("Preparing ",-1)),n("span",B0,u(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,F0),n("button",{type:"button",class:P(["summary-pill error",{active:e.filters?.status?.error===!1}]),title:"Toggle errored filter",onClick:t[10]||(t[10]=s=>e.filters.status.error=!e.filters.status.error),"aria-pressed":e.filters?.status?.error===!1},[t[52]||(t[52]=v("Errored ",-1)),n("span",z0,u(e.fmt?.number(e.statusCountFor("error"))),1)],10,H0),n("button",{type:"button",class:P(["summary-pill",{active:e.filters?.status?.expired===!1}]),title:"Toggle expired filter",onClick:t[11]||(t[11]=s=>e.filters.status.expired=!e.filters.status.expired),"aria-pressed":e.filters?.status?.expired===!1},[t[53]||(t[53]=v("Expired ",-1)),n("span",G0,u(e.fmt?.number(e.statusCountFor("expired"))),1)],10,j0),n("button",{type:"button",class:P(["summary-pill",{active:e.filters?.status?.removed===!1}]),title:"Toggle removed filter",onClick:t[12]||(t[12]=s=>e.filters.status.removed=!e.filters.status.removed),"aria-pressed":e.filters?.status?.removed===!1},[t[54]||(t[54]=v("Removed ",-1)),n("span",K0,u(e.fmt?.number(e.statusCountFor("removed"))),1)],10,W0)]),D((l(),d("form",Y0,[n("div",J0,[n("div",Q0,[D(n("input",X0,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),t[56]||(t[56]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[13]||(t[13]=s=>e.exportCsv())},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])])])])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",Z0,[n("span",null,[n("strong",null,u(e.selectedCount()),1),t[57]||(t[57]=v(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[14]||(t[14]=s=>e.bulkRefresh())},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[15]||(t[15]=s=>e.bulkRemoveCache())},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[16]||(t[16]=s=>e.clearSelection())},"Clear")])):p("v-if",!0),n("div",x0,[n("div",eE,[n("div",tE,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[17]||(t[17]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,nE)]),n("div",oE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[18]||(t[18]=s=>e.sortBy("source.repositoryName"))},[t[61]||(t[61]=v("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[60]||(t[60]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",sE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[19]||(t[19]=s=>e.sortBy("status"))},[t[63]||(t[63]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[62]||(t[62]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",iE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[20]||(t[20]=s=>e.sortBy("pageView"))},[t[65]||(t[65]=v("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[64]||(t[64]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),n("div",rE,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[21]||(t[21]=s=>e.sortBy("anonymizeDate"))},[t[67]||(t[67]=v("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[66]||(t[66]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[68]||(t[68]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,ne(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",aE,[D(n("input",lE,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",dE,[t[73]||(t[73]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",uE,[n("a",{class:"repo-name",target:"_blank",textContent:u(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,cE),n("div",pE,[n("a",{textContent:u(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,fE),s?.options?.update?(l(),d("span",hE,[t[69]||(t[69]=v("\xA0\xB7\xA0",-1)),n("a",{textContent:u(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,mE)])):p("v-if",!0),s?.options?.update?p("v-if",!0):(l(),d("span",vE,[t[70]||(t[70]=v("\xA0\xB7\xA0@",-1)),n("a",{textContent:u(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,gE)])),s?.conference?(l(),d("span",yE,[t[71]||(t[71]=v("\xA0\xB7\xA0",-1)),t[72]||(t[72]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),v(" "+u(s?.conference),1)])):p("v-if",!0),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.humanFileSize(s?.size?.storage)),1),n("span",null,"\xA0\xB7\xA0"+u(e.fmt?.number(s?.options?.terms?.length))+" "+u(s?.options?.terms?.length===1?"term":"terms"),1)])])]),n("div",bE,[n("span",wE,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,kE)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:u(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,EE)):p("v-if",!0)]),n("div",{class:"cell-views num",role:"cell",textContent:u(e.fmt?.number(s?.pageView||0))},null,8,CE),n("div",{class:"cell-expires",role:"cell",textContent:u(e.fmt?.humanTime(s?.anonymizeDate))},null,8,SE),n("div",_E,[n("div",NE,[t[85]||(t[85]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",RE,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[74]||(t[74]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit",-1)])],8,DE),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[75]||(t[75]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View repo",-1)])],8,TE),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[76]||(t[76]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),v(" View page",-1)])],8,AE)):p("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.fetchGithubInfo(s),["prevent"])},[...t[77]||(t[77]=[n("i",{class:"fab fa-github"},null,-1),v(" Live GitHub info",-1)])],8,OE),t[83]||(t[83]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.updateRepository(s),["prevent"])},[...t[78]||(t[78]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force update",-1)])],8,PE),[[W,s?.status=="ready"||s?.status=="error"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.updateRepository(s),["prevent"])},[...t[79]||(t[79]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Enable",-1)])],8,IE),[[W,s?.status=="removed"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.showStatusMessage(s),["prevent"])},[...t[80]||(t[80]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),v(" View status message",-1)])],8,VE),[[W,s?.statusMessage]]),t[84]||(t[84]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.removeCache(s),["prevent"])},[...t[81]||(t[81]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),v(" Remove cache",-1)])],8,qE),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:de(a=>e.removeRepository(s),["prevent"])},[...t[82]||(t[82]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove",-1)])],8,ME),[[W,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",UE,[...t[86]||(t[86]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No repositories match the current filters.",-1)])])):p("v-if",!0)])])}var $E={class:"container paper-page admin-page"},LE={class:"admin-summary"},FE={class:"summary-total"},BE=["aria-pressed"],HE={class:"count"},zE=["aria-pressed"],jE={class:"count"},GE=["aria-pressed"],WE={class:"count"},KE={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},YE={class:"w-100 admin-filter-toolbar","aria-label":"Users","accept-charset":"UTF-8"},JE={class:"admin-filter-row"},QE={class:"search-wrap"},XE={type:"search",class:"form-control","aria-label":"Search users",placeholder:"Search username or email\u2026",autocomplete:"off"},ZE={key:0,class:"admin-search-hint"},xE={class:"admin-filter-inline"},eC={class:"form-control form-control-sm"},tC={class:"admin-filter-inline","aria-label":"Pagination"},nC=["disabled"],oC={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},sC=["disabled"],iC={key:0,class:"admin-filter-row"},rC={class:"admin-active-chips"},aC={class:"key"},lC=["onClick"],dC={key:1,class:"bulk-bar"},uC={class:"paper-table w-100",role:"table","aria-label":"Users",style:{"--cols":"28px minmax(280px, 2.4fr) 100px 140px 140px 52px"}},cC={class:"paper-table-head admin-users-row",role:"row"},pC={role:"columnheader",style:{width:"28px"}},fC=["checked"],hC={role:"columnheader"},mC={role:"columnheader"},vC={role:"cell",style:{width:"28px"}},gC={type:"checkbox","aria-label":"Select user"},yC={class:"cell-anon",role:"cell"},bC=["src"],wC={class:"anon-text"},kC=["textContent","href"],EC={class:"anon-sub"},CC={key:0},SC=["href"],_C={key:1},NC={class:"cell-views num",role:"cell"},RC=["textContent","href"],DC={class:"cell-status",role:"cell"},TC=["textContent"],AC={class:"cell-status",role:"cell"},OC={key:0,class:"type-badge type-repo"},PC={key:1,class:"empty-dash"},IC={class:"cell-actions",role:"cell"},VC={class:"dropdown"},qC={class:"dropdown-menu dropdown-menu-right"},MC=["href"],UC=["href"],$C=["onClick"],LC=["onClick"],FC={key:0,class:"paper-table-empty"},BC={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},HC={style:{"font-size":"12px",color:"var(--ink-muted)"}},zC={key:0,class:"pagination-compact"},jC=["disabled"],GC=["max"],WC=["disabled"],KC={class:"admin-filter-inline"},YC={class:"form-control form-control-sm"};function Ul(e,t){let o=ge("field"),i=ge("form");return l(),d("div",$E,[t[46]||(t[46]=fe('
Admin \xA0/\xA0 Users

Users

',3)),n("div",LE,[n("span",FE,u(e.total>=0?e.fmt.number(e.total):"\u2026"),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.status=="active"}]),onClick:t[0]||(t[0]=s=>{e.query.status=e.query.status=="active"?"":"active",e.query.page=1}),"aria-pressed":e.query?.status=="active"},[t[13]||(t[13]=v("Active ",-1)),n("span",HE,u(e.fmt?.number(e.statusCountFor("active"))),1)],10,BE),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.status=="banned"}]),onClick:t[1]||(t[1]=s=>{e.query.status=e.query.status=="banned"?"":"banned",e.query.page=1}),"aria-pressed":e.query?.status=="banned"},[t[14]||(t[14]=v("Banned ",-1)),n("span",jE,u(e.fmt?.number(e.statusCountFor("banned"))),1)],10,zE),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.status=="removed"}]),onClick:t[2]||(t[2]=s=>{e.query.status=e.query.status=="removed"?"":"removed",e.query.page=1}),"aria-pressed":e.query?.status=="removed"},[t[15]||(t[15]=v("Removed ",-1)),n("span",WE,u(e.fmt?.number(e.statusCountFor("removed"))),1)],10,GE)]),e.fetchError?(l(),d("div",KE,[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fetchError),1)])):p("v-if",!0),D((l(),d("form",YE,[n("div",JE,[n("div",QE,[D(n("input",XE,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?p("v-if",!0):(l(),d("span",ZE,"/"))]),n("span",xE,[t[18]||(t[18]=n("label",null,"Role",-1)),D((l(),d("select",eC,[...t[17]||(t[17]=[n("option",{value:""},"Any",-1),n("option",{value:"admin"},"Admin",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.role=s},value:e.query?.role,form:null,options:{}}]])]),t[22]||(t[22]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",onClick:t[3]||(t[3]=s=>e.exportCsv())},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),v(" Export",-1)])]),n("span",tC,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[4]||(t[4]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,nC),n("span",oC,u(e.query?.page)+"/"+u(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[5]||(t[5]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,sC)])]),e.chips?.length?(l(),d("div",iC,[n("div",rC,[(l(!0),d(K,null,ne(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",aC,u(s?.label),1),n("span",null,u(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,lC)]))),128))])])):p("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",dC,[n("span",null,[n("strong",null,u(e.selectedCount()),1),t[24]||(t[24]=v(" selected",-1))]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[6]||(t[6]=s=>e.bulkBan())},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),v(" Ban",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[7]||(t[7]=s=>{e.selected={},e.allSelected=!1})},"Clear")])):p("v-if",!0),n("div",uC,[n("div",cC,[n("div",pC,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[8]||(t[8]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,fC)]),n("div",hC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="username"}]),onClick:t[9]||(t[9]=s=>e.sortBy("username"))},[t[27]||(t[27]=v("User ",-1)),e.sortIcon("username")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("username")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[26]||(t[26]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[30]||(t[30]=n("div",{role:"columnheader",class:"num"},"Repos",-1)),n("div",mC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[10]||(t[10]=s=>e.sortBy("status"))},[t[29]||(t[29]=v("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)]),t[31]||(t[31]=n("div",{role:"columnheader"},"Role",-1)),t[32]||(t[32]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(K,null,ne(e.filteredUsers,(s,r)=>(l(),d("div",{class:P(["paper-table-row admin-users-row",{"row-selected":e.selected[s?.username]}]),role:"row"},[n("div",vC,[D(n("input",gC,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.username]=a},value:e.selected[s?.username],form:null,options:{}}]])]),n("div",yC,[s?.photo?(l(),d("img",{key:0,width:"28",height:"28",class:"rounded-circle",style:{"flex-shrink":"0"},src:e.safeUrl(s?.photo)},null,8,bC)):p("v-if",!0),n("div",wC,[n("a",{class:"repo-name",textContent:u(s?.username),href:e.safeUrl("/admin/users/"+s?.username)},null,8,kC),n("div",EC,[s?.emails?.[0]?.email?(l(),d("span",CC,u(s?.emails?.[0]?.email)+" \xB7 ",1)):p("v-if",!0),n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+s?.username)},[t[33]||(t[33]=n("i",{class:"fab fa-github"},null,-1)),v(" "+u(s?.username),1)],8,SC),s?.dateOfEntry?(l(),d("span",_C,"\xA0\xB7\xA0Joined "+u(e.fmt?.humanTime(s?.dateOfEntry)),1)):p("v-if",!0)])])]),n("div",NC,[t[34]||(t[34]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:"Show this user's repositories",textContent:u(e.fmt?.number(s?.repoCount||0)),href:e.safeUrl("/admin/repositories?owner="+s?.username)},null,8,RC)]),n("div",DC,[n("span",{class:P(["status-dot",{"status-ready":s?.status=="active","status-removed":s?.status=="removed"||s?.status=="banned"}])},null,2),n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,TC)]),n("div",AC,[s?.isAdmin?(l(),d("span",OC,"Admin")):p("v-if",!0),s?.isAdmin?p("v-if",!0):(l(),d("span",PC,"\u2014"))]),n("div",IC,[n("div",VC,[t[40]||(t[40]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",qC,[n("a",{class:"dropdown-item",href:e.safeUrl("/admin/users/"+s?.username)},[...t[35]||(t[35]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View details",-1)])],8,MC),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/repositories?owner="+s?.username)},[...t[36]||(t[36]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),v(" View repositories",-1)])],8,UC),t[39]||(t[39]=n("div",{class:"dropdown-divider"},null,-1)),D(n("a",{class:"dropdown-item text-danger",href:"#",onClick:de(a=>e.banUser(s),["prevent"])},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),v(" Ban",-1)])],8,$C),[[W,s?.status=="active"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.activateUser(s),["prevent"])},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Activate",-1)])],8,LC),[[W,s?.status=="removed"||s?.status=="banned"]])])])])],2))),256)),e.filteredUsers?.length==0?(l(),d("div",FC,[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No users match the current filters.",-1)])])):p("v-if",!0)]),n("div",BC,[n("span",HC,u(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",zC,[n("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),v(" Previous",-1)])],8,jC),D(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,GC),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+u(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[43]||(t[43]=[v("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,WC)])):p("v-if",!0),n("span",KC,[t[45]||(t[45]=n("label",null,"Per page",-1)),D((l(),d("select",YC,[...t[44]||(t[44]=[n("option",{value:"10"},"10",-1),n("option",{value:"25"},"25",-1),n("option",{value:"50"},"50",-1),n("option",{value:"100"},"100",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var JC={class:"anonymize-landing"},QC={class:"anonymize-landing-inner"},XC={class:"form-group mt-4 mb-2"},ZC={class:"source-url-label-row"},xC={key:0,class:"repo-access","aria-label":"GitHub access"},e2={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},t2=["aria-pressed","disabled"],n2=["aria-pressed","disabled"],o2={key:1,class:"connection-badge"},s2={id:"sourceUrl-landing",type:"text",class:"form-control form-control-lg",placeholder:"https://github.com/owner/repository"},i2={key:0,class:"draft-status",role:"status"},r2={key:1,class:"text-danger",role:"alert"},a2={key:2,class:"repo-access-details","aria-label":"GitHub access"},l2={class:"repo-access-main"},d2={class:"repo-access-controls"},u2={key:1,class:"connection-link",href:"/connections"},c2={class:"repo-access-note"},p2={key:0},f2={class:"anonymize-workspace"},h2={class:"anonymize-topbar"},m2={class:"anonymize-topbar-inner"},v2={class:"anonymize-topbar-head"},g2={class:"paper-page-title anonymize-topbar-title"},y2={key:0},b2={key:1},w2={key:0,class:"alert alert-info",role:"status"},k2={key:1,class:"alert alert-info",role:"status"},E2={key:1},C2={class:"anonymize-mobile-tabs",role:"tablist","aria-label":"Anonymization workspace"},S2=["aria-selected","tabindex"],_2=["aria-selected","tabindex"],N2={key:2,class:"anonymize-preview-empty",id:"workspace-preview",role:"status"},R2={class:"anonymize-split"},D2=["role","aria-labelledby"],T2={class:"form needs-validation paper-settings-main",name:"anonymize",novalidate:""},A2={class:"anonymize-fields"},O2={class:"paper-settings-section"},P2={class:"form-group"},I2={class:"source-url-label-row"},V2={key:0,class:"repo-access","aria-label":"GitHub access"},q2={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},M2=["aria-pressed","disabled"],U2=["aria-pressed","disabled"],$2={key:1,class:"connection-badge"},L2=["disabled"],F2={class:"invalid-feedback"},B2={class:"invalid-feedback"},H2={class:"invalid-feedback"},z2={class:"invalid-feedback"},j2={key:0,class:"repo-access-details","aria-label":"Previous repository configuration"},G2={key:0,class:"form-group"},W2=["value"],K2={key:1},Y2={class:"repo-access-controls"},J2=["href"],Q2={key:1,class:"repo-access-details","aria-label":"GitHub access"},X2={class:"repo-access-main"},Z2={class:"repo-access-controls"},x2={key:1,class:"connection-link",href:"/connections"},eS={class:"repo-access-note"},tS={key:0},nS={key:2,class:"repo-access-details"},oS=["disabled"],sS={key:0,role:"status"},iS={key:3,class:"repo-access-details"},rS={key:0,role:"status"},aS={key:4,class:"form-grid-2"},lS={class:"form-group"},dS={class:"input-group"},uS={class:"form-control",id:"branch",name:"branch"},cS=["textContent","value"],pS={class:"input-group-append"},fS={class:"form-group"},hS=["disabled"],mS={class:"invalid-feedback"},vS={class:"invalid-feedback"},gS={class:"form-check"},yS={class:"form-check-input",type:"checkbox",id:"update",name:"update"},bS={class:"paper-settings-section"},wS={class:"form-group"},kS=["disabled"],ES={class:"form-text text-muted"},CS={class:"invalid-feedback"},SS={class:"form-group"},_S=["disabled"],NS={class:"form-text text-muted"},RS={class:"invalid-feedback"},DS={class:"form-group"},TS=["disabled"],AS={class:"form-text text-muted"},OS={class:"invalid-feedback"},PS={class:"form-group"},IS={class:"redaction-syntax"},VS={class:"form-text text-muted"},qS={class:"warning-feedback"},MS={class:"invalid-feedback"},US={class:"paper-settings-section"},$S={class:"form-check"},LS={class:"form-check-input",type:"checkbox",id:"link",name:"link"},FS={class:"form-check"},BS={class:"form-check-input",type:"checkbox",id:"image",name:"image"},HS={class:"form-check"},zS={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},jS={class:"form-check"},GS={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},WS={class:"form-check"},KS=["disabled"],YS={key:0,class:"form-text text-muted"},JS={key:1,class:"form-text text-muted"},QS={key:0,class:"form-text text-muted"},XS={class:"form-check"},ZS={class:"form-check-input",type:"checkbox",id:"title-gist",name:"title-gist"},xS={class:"form-check"},e_={class:"form-check-input",type:"checkbox",id:"content-gist",name:"content-gist"},t_={class:"form-check"},n_={class:"form-check-input",type:"checkbox",id:"comments-gist",name:"comments-gist"},o_={class:"form-check"},s_={class:"form-check-input",type:"checkbox",id:"username-gist",name:"username-gist"},i_={class:"form-check"},r_={class:"form-check-input",type:"checkbox",id:"date-gist",name:"date-gist"},a_={class:"form-check"},l_={class:"form-check-input",type:"checkbox",id:"origin-gist",name:"origin-gist"},d_={class:"form-check"},u_={class:"form-check-input",type:"checkbox",id:"title",name:"title"},c_={class:"form-check"},p_={class:"form-check-input",type:"checkbox",id:"body",name:"body"},f_={class:"form-check"},h_={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},m_={class:"form-check"},v_={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},g_={class:"form-check"},y_={class:"form-check-input",type:"checkbox",id:"username",name:"username"},b_={class:"form-check"},w_={class:"form-check-input",type:"checkbox",id:"date",name:"date"},k_={class:"form-check"},E_={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},C_={class:"paper-settings-section hosting-settings",id:"repository-hosting","aria-labelledby":"hosting-heading"},S_={key:0,class:"hosting-usage"},__={key:0},N_={key:1},R_={key:2},D_={key:3},T_={class:"expiration-choices"},A_={class:"expiration-choice"},O_=["checked","disabled"],P_={key:0,class:"dated-options"},I_={key:0,class:"hosting-date"},V_=["min","max"],q_={class:"invalid-feedback"},M_={class:"invalid-feedback"},U_={class:"hosting-property"},$_={key:1,class:"expiration-choice"},L_=["checked","disabled"],F_={key:0},B_={key:1,class:"form-text text-muted"},H_={class:"form-group conference-field"},z_={class:"form-text text-muted"},j_=["href"],G_={class:"invalid-feedback"},W_={class:"form-text text-muted"},K_={key:2,class:"inline-hosting"},Y_={key:0,role:"alert",class:"text-danger"},J_={key:1,role:"alert",class:"text-danger"},Q_=["disabled"],X_={key:2,role:"status"},Z_={key:3,role:"status",class:"form-text text-muted"},x_={key:0,class:"capacity-reason"},eN={key:1,class:"subscription-choice"},tN={class:"billing-cycle"},nN=["value","checked","onChange"],oN={class:"hosting-terms"},sN={key:2,role:"status"},iN={key:3,class:"capacity-options"},rN=["disabled"],aN={key:5,class:"hosting-terms"},lN={key:6,class:"repository-pass"},dN=["disabled"],uN={class:"paper-settings-section"},cN={class:"form-group"},pN={style:{position:"relative"}},fN={type:"text",id:"coauthorSearch",class:"form-control",placeholder:"Search GitHub username\u2026",autocomplete:"off"},hN={class:"dropdown-menu show",style:{display:"block","max-height":"220px","overflow-y":"auto",width:"100%"}},mN=["onClick"],vN=["src"],gN=["textContent"],yN=["textContent"],bN={class:"coauthor-list"},wN={class:"coauthor-row d-flex align-items-center",style:{padding:"6px 0",gap:"8px"}},kN=["src"],EN=["textContent","href"],CN=["onClick"],SN={class:"form-text text-muted"},_N=["textContent"],NN={key:1,class:"draft-status",role:"status"},RN={key:2,class:"draft-status"},DN={class:"anonymize-submit-bar"},TN=["disabled"],AN=["disabled"],ON={key:2,class:"checkout-return-note"},PN=["disabled"],IN=["disabled"],VN=["disabled"],qN=["disabled"],MN=["role","aria-labelledby"],UN={class:"anonymize-preview-head"},$N={key:0,class:"anonymize-preview-status",role:"status"},LN={key:1,class:"anonymize-preview-status",role:"status"},FN={key:2,class:"anonymize-preview-status",role:"alert"},BN={key:3,class:"anonymize-preview-status"},HN=["innerHTML"],zN=["role","aria-labelledby"],jN={class:"anonymize-preview-head"},GN={key:0,class:"anonymize-preview-status",role:"status"},WN={key:1,class:"anonymize-preview-status",role:"status"},KN={key:2,class:"anonymize-preview-status",role:"alert"},YN={key:3,class:"anonymize-preview-body"},JN={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},QN={class:"pr-title mb-1"},XN={key:0},ZN=["textContent"],xN={key:0},eR={key:1},tR={key:2},nR={class:"pr-comments mt-3"},oR={class:"pr-comment"},sR={class:"pr-comment-head"},iR=["textContent"],rR={key:0,class:"pr-comment-date"},aR={key:3},lR={class:"pr-comments"},dR={class:"pr-comment"},uR={class:"pr-comment-head"},cR={key:0,class:"pr-comment-author"},pR=["textContent"],fR=["textContent"],hR={key:0,class:"pr-comment-body"},mR=["role","aria-labelledby"],vR={class:"anonymize-preview-head"},gR={key:0,class:"anonymize-preview-status",role:"status"},yR={key:1,class:"anonymize-preview-status",role:"status"},bR={key:2,class:"anonymize-preview-status",role:"alert"},wR={key:3,class:"anonymize-preview-body"},kR={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},ER={class:"pr-title mb-1"},CR={key:0},SR=["textContent"],_R={key:0},NR={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--paper-bg-alt)"}},RR={key:2,class:"paper-tabs",role:"tablist"},DR=["aria-selected","tabindex"],TR=["aria-selected","tabindex"],AR=["textContent"],OR={key:3,class:"anonymize-preview-status"},PR={class:"paper-tab-content"},IR={key:0,role:"tabpanel",id:"preview-pr-diff-panel","aria-labelledby":"preview-pr-diff-tab"},VR=["innerHTML"],qR={key:1,role:"tabpanel",id:"preview-pr-comments-panel","aria-labelledby":"preview-pr-comments-tab"},MR={class:"pr-comments"},UR={class:"pr-comment"},$R={class:"pr-comment-head"},LR={key:0,class:"pr-comment-author"},FR=["textContent"],BR=["textContent"],HR={key:0,class:"pr-comment-body"};function $l(e,t){let o=Ge("gist-file"),i=Ge("markdown"),s=ge("field"),r=ge("form");return l(),d("div",{class:P(["anonymize-page h-100",{"mobile-preview-active":e.mobilePane==="preview","preview-expanded":e.previewExpanded}])},[p(" ===== STATE 1: No URL \u2014 centered input ===== "),D(n("div",JC,[n("div",QC,[t[48]||(t[48]=n("div",{class:"paper-crumbs"},[v("My work \xA0/\xA0 "),n("span",{class:"here"},"New anonymization")],-1)),t[49]||(t[49]=n("h1",{class:"paper-page-title"},[v("New "),n("em",null,"anonymization")],-1)),t[50]||(t[50]=n("p",{class:"paper-page-lede"}," Paste a GitHub repository, pull-request, or gist URL. We\u2019ll fetch it, redact the terms you choose in text files, and give you a share link. Images and PDFs are served unchanged when enabled. Review them before sharing. ",-1)),n("div",XC,[n("div",ZC,[t[44]||(t[44]=n("label",{class:"paper-field-label",for:"sourceUrl-landing"},"Source URL",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",xC,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",e2,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[0]||(t[0]=a=>e.chooseGitHubConnection("github-app"))},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(),n("span",{class:"sr-only"},"Read-only ",-1),v("GitHub App",-1)])],8,t2),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[1]||(t[1]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,n2)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",o2,u((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),D(n("input",s2,null,512),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:null,options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]])]),e.draftRestored?(l(),d("div",i2,[t[45]||(t[45]=v("Your unsaved draft was restored. ",-1)),n("button",{type:"button",class:"draft-discard",onClick:t[2]||(t[2]=a=>e.discardDraft())},"Discard draft")])):p("v-if",!0),e.sourceUrlError?(l(),d("p",r2,u(e.sourceUrlError),1)):p("v-if",!0),t[51]||(t[51]=n("small",{class:"form-text",style:{color:"var(--ink-muted)"}}," Repository, pull request (\u2026/pull/42) and gist (gist.github.com/\u2026) URLs are all accepted. ",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",a2,[n("div",l2,[n("div",d2,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=a=>e.grantGitHubAccess())},[...t[46]||(t[46]=[v("Manage access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",u2,u(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),n("div",c2,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",p2,"Signing in does not grant access to private repositories. Use Manage access to select this repository, then return here. Organization access may require administrator approval.")):p("v-if",!0),t[47]||(t[47]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v(" Anonymized content is public, even from private repositories.")],-1))])])):p("v-if",!0)])],512),[[W,!e.workspaceOpen&&!e.isUpdate]]),p(" ===== STATE 2: URL provided \u2014 form (left) + preview (right) ===== "),D(n("div",f2,[n("header",h2,[n("div",m2,[n("div",v2,[n("h1",g2,[e.isUpdate?p("v-if",!0):(l(),d("span",y2,"New anonymization")),e.isUpdate?(l(),d("span",b2,"Edit anonymization")):p("v-if",!0)]),D(n("span",{class:P(["type-badge",{"type-repo":e.detectedType==="repo","type-pr":e.detectedType==="pr","type-gist":e.detectedType==="gist"}])},u(e.detectedType==="repo"?"Repo":e.detectedType==="pr"?"PR":"Gist"),3),[[W,e.detectedType]])])])]),e.detectedType==="gist"&&e.gistAppRequired?(l(),d("aside",w2,[t[52]||(t[52]=n("p",null,"Reconnect your GitHub account to read this gist. Your draft will be restored when you return.",-1)),n("button",{type:"button",class:"btn btn-ink",onClick:t[4]||(t[4]=a=>e.connectGistApp())},"Connect GitHub App to access gists")])):p("v-if",!0),e.detectedType==="gist"&&e.gistOAuthRequired?(l(),d("aside",k2,[t[53]||(t[53]=n("p",null,"Connect GitHub OAuth to access gists. Your account and existing anonymizations stay the same, and your draft will be restored when you return.",-1)),t[54]||(t[54]=n("p",null,"GitHub's legacy OAuth connection includes write access to private repositories.",-1)),e.githubConnections?.oauthEnabled?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[5]||(t[5]=a=>e.connectGistOAuth())},"Connect GitHub OAuth to access gists")):(l(),d("p",E2,"GitHub OAuth is currently unavailable. Please try again later."))])):p("v-if",!0),n("nav",C2,[n("button",{id:"workspace-settings-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="settings","aria-controls":"workspace-settings",tabindex:e.mobilePane==="settings"?0:-1,onKeydown:t[6]||(t[6]=a=>e.previewTabKeydown(a)),onClick:t[7]||(t[7]=a=>e.selectMobilePane("settings"))},"Settings",40,S2),n("button",{id:"workspace-preview-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="preview","aria-controls":"workspace-preview",tabindex:e.mobilePane==="preview"?0:-1,onKeydown:t[8]||(t[8]=a=>e.previewTabKeydown(a)),onClick:t[9]||(t[9]=a=>e.selectMobilePane("preview"))},"Reviewer preview",40,_2)]),e.detectedType!=="repo"&&!e.details?(l(),d("div",N2,u(e.sourceLoading?"Loading source\u2026":"Choose an accessible source to see its preview."),1)):p("v-if",!0),n("div",R2,[p(" Form column (left) "),n("div",{id:"workspace-settings",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-settings-tab":null,class:"anonymize-form-col overflow-auto"},[D((l(),d("form",T2,[n("div",A2,[n("section",O2,[t[69]||(t[69]=n("h2",{class:"paper-section-eyebrow"},"Source & access",-1)),n("div",P2,[n("div",I2,[t[56]||(t[56]=n("label",{class:"paper-field-label",for:"sourceUrl"},"GitHub URL",-1)),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",V2,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",q2,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[10]||(t[10]=a=>e.chooseGitHubConnection("github-app"))},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(),n("span",{class:"sr-only"},"Read-only ",-1),v("GitHub App",-1)])],8,M2),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[11]||(t[11]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,U2)])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",$2,u((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):p("v-if",!0)])):p("v-if",!0)]),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.sourceUrl?.invalid}]),name:"sourceUrl",id:"sourceUrl",disabled:e.isUpdate&&e.detectedType!=="repo",placeholder:"Paste a GitHub repo or pull request URL"},null,10,L2),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),D(n("div",F2," Please provide a valid GitHub URL. ",512),[[W,e.anonymize?.sourceUrl?.errors?.github]]),D(n("div",B2," Not accessible. The organization may restrict access. ",512),[[W,e.anonymize?.sourceUrl?.errors?.access]]),D(n("div",H2," Does not exist or is not accessible. ",512),[[W,e.anonymize?.sourceUrl?.errors?.missing]]),D(n("div",z2," Already anonymized. ",512),[[W,e.anonymize?.sourceUrl?.errors?.used]])]),!e.isUpdate&&e.previousConfigurations.length?(l(),d("aside",j2,[t[58]||(t[58]=n("p",{role:"status"},"You have already anonymized this repository. Use the existing configuration to keep its anonymous link and avoid creating another repository.",-1)),e.previousConfigurations.length>1?(l(),d("div",G2,[t[57]||(t[57]=n("label",{class:"paper-field-label",for:"previousConfiguration"},"Previous anonymization",-1)),D(n("select",{id:"previousConfiguration",class:"form-control","onUpdate:modelValue":t[12]||(t[12]=a=>e.previousConfigurationId=a)},[(l(!0),d(K,null,ne(e.previousConfigurations,a=>(l(),d("option",{key:a.repoId,value:a.repoId},u(a.repoId),9,W2))),128))],512),[[pn,e.previousConfigurationId]])])):(l(),d("p",K2,u(e.previousConfigurationId),1)),t[59]||(t[59]=n("p",null,"You can review and update its settings before saving.",-1)),n("div",Y2,[n("a",{class:"btn btn-ink",href:e.existingConfigurationUrl()},"Use existing configuration",8,J2),n("button",{type:"button",class:"btn btn-link",onClick:t[13]||(t[13]=a=>e.previousConfigurations=[])},"Create a separate anonymization")])])):p("v-if",!0),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",Q2,[n("div",X2,[n("div",Z2,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[14]||(t[14]=a=>e.grantGitHubAccess())},[...t[60]||(t[60]=[v("Manage access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):p("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",x2,u(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):p("v-if",!0)])]),n("div",eS,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",tS,"Signing in does not grant access to private repositories. Use Manage access to select this repository, then return here. Organization access may require administrator approval.")):p("v-if",!0),t[61]||(t[61]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v(" Anonymized content is public, even from private repositories.")],-1))])])):p("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.accessRepairAllowed&&e.githubConnections?.appEnabled&&e.githubConnection==="github-app"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",nS,[t[62]||(t[62]=n("p",null,"If this repository became private or its App installation changed, repair its access here. This keeps the same anonymous URL and published commit.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.repairingGitHubAccess,onClick:t[15]||(t[15]=a=>e.repairGitHubAccess())},"Repair GitHub access",8,oS),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[16]||(t[16]=a=>e.grantGitHubAccess())},"Manage access"),e.accessRepairMessage?(l(),d("p",sS,u(e.accessRepairMessage),1)):p("v-if",!0)])):p("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",iS,[t[63]||(t[63]=n("p",null,"If you deleted and recreated this repository, reconnect it before choosing a branch.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[17]||(t[17]=a=>e.reconnectSource())},"Reconnect source repository"),e.reconnectRepositoryId?(l(),d("p",rS,"Source reloaded. Review the branch, commit, and anonymization preview, then save to replace the published snapshot.")):p("v-if",!0)])):p("v-if",!0),e.detectedType==="repo"?(l(),d("div",aS,[n("div",lS,[t[65]||(t[65]=n("label",{class:"paper-field-label",for:"branch"},"Branch",-1)),n("div",dS,[D((l(),d("select",uS,[(l(!0),d(K,null,ne(e.branches,(a,c)=>(l(),d("option",{textContent:u(a?.name),value:a?.name},null,8,cS))),256))])),[[s,{state:e.viewState,set:a=>{e.source.branch=a},value:e.source?.branch,form:"anonymize",options:{}}]]),n("div",pS,[n("button",{class:"btn btn-icon refresh-branches",type:"button",title:"Refresh branches",onClick:t[18]||(t[18]=a=>e.getBranches(!0)),"aria-label":"Refresh branches"},[...t[64]||(t[64]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])])]),n("div",fS,[t[66]||(t[66]=n("label",{class:"paper-field-label",for:"commit"},"Commit",-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.commit?.invalid}]),id:"commit",disabled:e.options.update,name:"commit",pattern:"[a-fA-Z0-9]{6,}",required:""},null,10,hS),[[s,{state:e.viewState,set:a=>{e.source.commit=a},value:e.source?.commit,form:"anonymize",options:{}}]]),D(n("div",mS," The commit SHA is not valid. ",512),[[W,e.anonymize?.commit?.errors?.pattern||e.anonymize?.commit?.errors?.required]]),D(n("div",vS," This commit no longer exists in the repository. Click refresh to get the latest. ",512),[[W,e.anonymize?.commit?.errors?.exists]])])])):p("v-if",!0),D(n("div",gS,[D(n("input",yS,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"anonymize",options:{}}]]),t[67]||(t[67]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[68]||(t[68]=n("small",{class:"form-text text-muted"},"Follows the latest version, at most once an hour.",-1))],512),[[W,e.detectedType]])]),D(n("section",bS,[t[87]||(t[87]=n("h2",{class:"paper-section-eyebrow"},"Anonymization",-1)),D(n("div",wS,[t[70]||(t[70]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.repoId?.invalid}]),name:"repoId",id:"repoId",disabled:e.isUpdate},null,10,kS),[[s,{state:e.viewState,set:a=>{e.repoId=a},value:e.repoId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",ES,"anonymous.4open.science/r/"+u(e.repoId),1),D(n("div",CS,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.repoId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.repoId)+" is already used.",513),[[W,e.anonymize?.repoId?.errors?.used]])],512),[[W,e.detectedType==="repo"]]),D(n("div",SS,[t[73]||(t[73]=n("label",{class:"paper-field-label",for:"pullRequestId"},"Anonymized pull request ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId",disabled:e.isUpdate},null,10,_S),[[s,{state:e.viewState,set:a=>{e.pullRequestId=a},value:e.pullRequestId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",NS,[t[71]||(t[71]=v("Your share link will be ",-1)),n("code",null,"anonymous.4open.science/pr/"+u(e.pullRequestId),1),t[72]||(t[72]=v(".",-1))]),D(n("div",RS,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.pullRequestId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestId)+" is already used.",513),[[W,e.anonymize?.pullRequestId?.errors?.used]])],512),[[W,e.detectedType==="pr"]]),D(n("div",DS,[t[76]||(t[76]=n("label",{class:"paper-field-label",for:"gistId"},"Anonymized gist ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.gistId?.invalid}]),name:"gistId",id:"gistId",disabled:e.isUpdate},null,10,TS),[[s,{state:e.viewState,set:a=>{e.gistId=a},value:e.gistId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",AS,[t[74]||(t[74]=v("Your share link will be ",-1)),n("code",null,"anonymous.4open.science/gist/"+u(e.gistId),1),t[75]||(t[75]=v(".",-1))]),D(n("div",OS,"ID can only contain letters and numbers.",512),[[W,e.anonymize?.gistId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.gistId)+" is already used.",513),[[W,e.anonymize?.gistId?.errors?.used]])],512),[[W,e.detectedType==="gist"]]),n("div",PS,[t[85]||(t[85]=n("label",{class:"paper-field-label",for:"terms"},"Terms to redact",-1)),D(n("textarea",{class:P(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),t[86]||(t[86]=n("small",{class:"form-text text-muted"},"One term per line.",-1)),n("details",IS,[t[83]||(t[83]=n("summary",null,"Regex & replacement syntax",-1)),t[84]||(t[84]=v()),n("small",VS,[t[77]||(t[77]=v("Regex is supported. Replaced by ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[78]||(t[78]=v(", or use ",-1)),t[79]||(t[79]=n("code",null,"term=>replacement",-1)),t[80]||(t[80]=v(" to pick your own (e.g. ",-1)),t[81]||(t[81]=n("code",null,"Anonymous=>ABC",-1)),t[82]||(t[82]=v(").",-1))])]),D(n("div",qS,"Regex characters detected. Escape them if unintentional.",512),[[W,e.termsRegexWarning]]),D(n("div",MS,"Terms are in an invalid format.",512),[[W,e.anonymize?.terms?.errors?.format]])])],512),[[W,e.detectedType]]),D(n("section",US,[t[107]||(t[107]=n("h2",{class:"paper-section-eyebrow"},"Display",-1)),D(n("div",null,[n("div",$S,[D(n("input",LS,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[88]||(t[88]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",FS,[D(n("input",BS,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[89]||(t[89]=n("label",{class:"form-check-label",for:"image"},"Display images",-1))]),n("div",HS,[D(n("input",zS,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[90]||(t[90]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1))]),n("div",jS,[D(n("input",GS,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[91]||(t[91]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",WS,[D(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,KS),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[92]||(t[92]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?p("v-if",!0):(l(),d("small",YS,u(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",JS,u(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):p("v-if",!0)])],512),[[W,e.detectedType==="repo"]]),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",QS,[...t[93]||(t[93]=[v("Images and PDFs are served unchanged. Review their contents and metadata before sharing. ",-1),n("a",{href:"/faq#formats"},"Supported formats",-1)])])):p("v-if",!0),D(n("div",null,[n("div",XS,[D(n("input",ZS,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[94]||(t[94]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",xS,[D(n("input",e_,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[95]||(t[95]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",t_,[D(n("input",n_,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[96]||(t[96]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",o_,[D(n("input",s_,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[97]||(t[97]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",i_,[D(n("input",r_,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[98]||(t[98]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",a_,[D(n("input",l_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[99]||(t[99]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[W,e.detectedType==="gist"]]),D(n("div",null,[n("div",d_,[D(n("input",u_,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[100]||(t[100]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",c_,[D(n("input",p_,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[101]||(t[101]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",f_,[D(n("input",h_,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[102]||(t[102]=n("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),n("div",m_,[D(n("input",v_,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[103]||(t[103]=n("label",{class:"form-check-label",for:"comments"},"Comments",-1))]),n("div",g_,[D(n("input",y_,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[104]||(t[104]=n("label",{class:"form-check-label",for:"username"},"Usernames",-1))]),n("div",b_,[D(n("input",w_,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[105]||(t[105]=n("label",{class:"form-check-label",for:"date"},"Dates",-1))]),n("div",k_,[D(n("input",E_,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[106]||(t[106]=n("label",{class:"form-check-label",for:"origin"},"Project name",-1))])],512),[[W,e.detectedType==="pr"]])],512),[[W,e.detectedType]]),D(n("section",C_,[t[123]||(t[123]=n("h2",{class:"paper-section-eyebrow",id:"hosting-heading"},"Hosting & expiration",-1)),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("p",S_,[e.isUpdate&&e.role!=="owner"?(l(),d("span",__,"Uses the owner's hosting")):e.hasAuthorHosting()?(l(),d("span",N_,"Your author subscription is active.")):e.conference?(l(),d("span",R_,"Conference hosting is checked on submission.")):e.hostingQuota?.repository?(l(),d("span",D_,u(e.hostingQuota.repository.used)+" of "+u(e.hostingQuota.repository.total)+" active repositories \xB7 Free",1)):p("v-if",!0)])):p("v-if",!0),n("fieldset",T_,[t[113]||(t[113]=n("legend",{class:"sr-only"},"Expiration",-1)),n("label",A_,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode!=="never",onChange:t[19]||(t[19]=a=>e.useDatedHosting()),disabled:e.billingPending},null,40,O_),t[108]||(t[108]=n("span",null,"Expire on a date",-1))]),e.options.expirationMode!=="never"?(l(),d("div",P_,[e.options?.expirationMode!=="never"?(l(),d("div",I_,[t[109]||(t[109]=n("label",{class:"paper-field-label",for:"expirationDate"},"Expires",-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.expirationDate?.invalid}]),type:"date",name:"expirationDate",id:"expirationDate",required:"",min:e.minExpirationDate,max:e.maxExpirationDate},null,10,V_),[[s,{state:e.viewState,set:a=>{e.options.expirationDate=a},value:e.options?.expirationDate,form:"anonymize",options:{}}]]),D(n("div",q_,"Pick a date in the future.",512),[[W,e.anonymize?.expirationDate?.errors?.min]]),D(n("div",{class:"invalid-feedback"},"Pick a date on or before "+u(e.fmt?.date(e.maxExpirationDate))+".",513),[[W,e.anonymize?.expirationDate?.errors?.max]]),D(n("div",M_,"Enter a valid expiration date.",512),[[W,e.anonymize?.expirationDate?.errors?.required||e.anonymize?.expirationDate?.errors?.date]])])):p("v-if",!0),n("div",U_,[t[111]||(t[111]=n("label",{for:"expiration"},"Then",-1)),D(n("select",{id:"expiration",class:"form-control","onUpdate:modelValue":t[20]||(t[20]=a=>e.options.expirationMode=a)},[...t[110]||(t[110]=[n("option",{value:"remove"},"Remove content",-1),n("option",{value:"redirect"},"Redirect to GitHub",-1)])],512),[[pn,e.options.expirationMode]])])])):p("v-if",!0),e.detectedType==="repo"?(l(),d("label",$_,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode==="never",onChange:t[21]||(t[21]=a=>e.options.expirationMode="never"),disabled:e.billingPending},null,40,L_),n("span",null,[t[112]||(t[112]=v("Never expire",-1)),e.options.expirationMode!=="never"||e.hasAuthorHosting()?(l(),d("small",F_,u(e.hasAuthorHosting()?"Included in your subscription":"Author subscription"),1)):p("v-if",!0)])])):p("v-if",!0)]),e.options.expirationMode==="redirect"?(l(),d("p",B_,"Visitors will be redirected to the original GitHub source on this date, revealing its identity.")):p("v-if",!0),n("div",H_,[t[114]||(t[114]=n("label",{class:"paper-field-label",for:"conference"},[v("Conference code "),n("span",{class:"paper-optional"},"(optional)")],-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[s,{state:e.viewState,set:a=>{e.conference=a},value:e.conference,form:"anonymize",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),D(n("small",z_,[n("a",{target:"_blank",href:e.safeUrl(e.conference_data?.url)},u(e.conference_data?.name),9,j_),v(" expires "+u(e.fmt?.date(e.conference_data?.endDate))+". ",1)],512),[[W,e.conference_data]]),D(n("div",G_,"The conference is not activated.",512),[[W,e.anonymize?.conference?.errors?.activated]]),D(n("small",W_,"Link to a conference to apply its shared defaults.",512),[[W,!e.conference_data]])]),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("div",K_,[e.taskValidationError?(l(),d("p",Y_,u(e.taskValidationError),1)):p("v-if",!0),e.billingError?(l(),d("p",J_,[v(u(e.billingError)+" ",1),n("button",{type:"button",class:"task-text-button",onClick:t[22]||(t[22]=a=>e.loadBilling()),disabled:e.billingBusy},"Reload billing",8,Q_)])):p("v-if",!0),e.billingPending?(l(),d("div",X_,[...t[115]||(t[115]=[n("p",null,[n("strong",null,"Confirming your payment\u2026")],-1),n("p",{class:"form-text text-muted"},"Your draft is saved. Please do not pay again.",-1)])])):e.billingNotice?(l(),d("p",Z_,u(e.billingNotice),1)):p("v-if",!0),e.hostingNeedsPayment()&&!e.billingPending?(l(),d(K,{key:4},[e.options.expirationMode!=="never"?(l(),d("p",x_,u(e.options.update&&!e.hostingQuotaBlocked&&e.hostingQuota?.repository?.used(l(),d("label",{class:P(["cycle-option",{selected:e.selectedHostingPlan()?.id===a.id}]),key:a.id},[n("input",{type:"radio",name:"hosting-plan",value:a.id,checked:e.selectedHostingPlan()?.id===a.id,onChange:c=>e.hostingPlan=a.id},null,40,nN),n("span",null,u(e.billingPrice(a)),1)],2))),128))]),n("p",null,u(e.selectedHostingPlan()?.repositories)+" repositories, "+u(e.billingBytes(e.selectedHostingPlan()?.storage))+". Coauthors included.",1),n("p",oN,"Renews "+u(e.selectedHostingPlan()?.interval==="year"?"annually":"monthly")+" until cancelled. Tax shown at checkout.",1),t[118]||(t[118]=n("p",{class:"hosting-terms"},"If paid access ends, never-expiring repositories expire after 90 days.",-1))])):(l(),d("p",sN,"New purchases are temporarily unavailable. Your draft is kept.")),e.options.expirationMode!=="never"?(l(),d("details",iN,[t[119]||(t[119]=n("summary",null,"Keep using free hosting",-1)),t[120]||(t[120]=n("p",null,"Remove a repository you no longer need, or use conference hosting. Removing a repository affects its review link.",-1)),t[121]||(t[121]=n("a",{href:"/dashboard"},"Review my repositories",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[23]||(t[23]=a=>e.anonymizeRepo(a)),disabled:e.sourceLoading||e.billingBusy},"Recheck capacity and submit",8,rN)])):p("v-if",!0)],64)):e.options.expirationMode==="never"&&!e.billingPending?(l(),d("p",aN,"No scheduled expiration while subscribed. A 90-day grace period applies if paid access ends.")):p("v-if",!0),e.isUpdate&&e.role==="owner"&&!e.hasAuthorHosting()?(l(),d("details",lN,[t[122]||(t[122]=n("summary",null,"Hosting just this repository?",-1)),(l(!0),d(K,null,ne((e.billing?.plans||[]).filter(a=>a.id==="author_pass"),a=>(l(),d("div",{key:a.id},[n("p",null,u(e.billingPrice(a))+" \xB7 "+u(e.billingBytes(a.storage))+" for 180 days. No renewal. Does not include Never expire.",1),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.billingBusy||e.hostingSaving||e.sourceLoading||e.billing.checkoutEnabled===!1||e.billingPending,onClick:t[24]||(t[24]=c=>e.checkoutRepository(!0))},"Review repository pass",8,dN)]))),128))])):p("v-if",!0)])):p("v-if",!0)],512),[[W,e.detectedType]]),D(n("section",uN,[t[127]||(t[127]=n("h2",{class:"paper-section-eyebrow"},"Coauthors",-1)),t[128]||(t[128]=n("p",{class:"form-text text-muted",style:{"margin-bottom":"8px"}}," Co-authors can view and edit these settings. They cannot delete the anonymization or manage co-authors. ",-1)),D(n("div",cN,[t[124]||(t[124]=n("label",{class:"paper-field-label",for:"coauthorSearch"},"Add a GitHub user",-1)),n("div",pN,[D(n("input",fN,null,512),[[s,{state:e.viewState,set:a=>{e.coauthorSearch=a},value:e.coauthorSearch,form:"anonymize",options:{debounce:300},change:()=>{e.searchCoauthors()}}]]),D(n("div",hN,[(l(!0),d(K,null,ne(e.coauthorResults,(a,c)=>(l(),d("a",{href:"#",class:"dropdown-item d-flex align-items-center",onClick:de(f=>e.addCoauthor(a,f),["prevent"])},[n("img",{alt:"",style:{width:"22px",height:"22px","border-radius":"50%","margin-right":"8px"},src:e.safeUrl(a?.photo)},null,8,vN),n("span",{textContent:u(a?.username)},null,8,gN)],8,mN))),256))],512),[[W,e.coauthorResults?.length>0]])]),D(n("small",{class:"form-text text-muted",textContent:u(e.coauthorError)},null,8,yN),[[W,e.coauthorError]])],512),[[W,e.role==="owner"||e.role==="admin"]]),n("div",bN,[(l(!0),d(K,null,ne(e.coauthors,(a,c)=>(l(),d("div",wN,[a?.photo?(l(),d("img",{key:0,alt:"",style:{width:"24px",height:"24px","border-radius":"50%"},src:e.safeUrl(a?.photo)},null,8,kN)):p("v-if",!0),n("a",{target:"_blank",textContent:u(a?.username),href:e.safeUrl("https://github.com/"+a?.username)},null,8,EN),t[126]||(t[126]=n("span",{class:"type-badge type-coauthor"},"Co-author",-1)),D(n("button",{type:"button",class:"btn btn-sm btn-icon",style:{"margin-left":"auto"},title:"Remove co-author",onClick:f=>e.removeCoauthor(a),"aria-label":"Remove co-author"},[...t[125]||(t[125]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,CN),[[W,e.role==="owner"||e.role==="admin"]])]))),256)),D(n("div",SN," No co-authors yet. ",512),[[W,!e.coauthors||e.coauthors?.length===0]])])],512),[[W,e.isUpdate&&e.detectedType==="repo"]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:u(e.error)},null,8,_N)):p("v-if",!0),e.draftRestored?(l(),d("div",NN,[t[129]||(t[129]=v("Your unsaved draft was restored. ",-1)),n("button",{type:"button",class:"draft-discard",onClick:t[25]||(t[25]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",RN,[v(u(e.draftSaved?"Draft saved in this tab for 30 minutes.":"Unsaved changes. Keep this tab open until you save.")+" ",1),n("button",{type:"button",class:"draft-discard",onClick:t[26]||(t[26]=a=>e.discardDraft())},u(e.isUpdate?"Restore saved settings":"Discard changes"),1)])):p("v-if",!0)]),D(n("div",DN,[e.detectedType==="repo"?(l(),d(K,{key:0},[e.billingPending?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[27]||(t[27]=a=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,TN)):(l(),d("button",{key:1,type:"submit",class:"btn btn-ink",disabled:e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingLoading||e.hostingNeedsPayment()&&(!e.authorPlans().length||e.billing?.checkoutEnabled===!1),onClick:t[28]||(t[28]=de(a=>e.submitForm(a,()=>{e.submitRepository(a)}),["prevent"]))},u(e.hostingSaving?"Saving draft\u2026":e.hostingNeedsPayment()?"Continue to checkout":e.isUpdate?"Save changes":"Create anonymous link"),9,AN)),e.hostingNeedsPayment()&&!e.billingPending?(l(),d("p",ON,"Review payment in Stripe, then return to finish.")):p("v-if",!0)],64)):p("v-if",!0),e.detectedType==="pr"&&!e.isUpdate?(l(),d("button",{key:1,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[29]||(t[29]=de(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[130]||(t[130]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize Pull Request ",-1)])],8,PN)):p("v-if",!0),e.detectedType==="pr"&&e.isUpdate?(l(),d("button",{key:2,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[30]||(t[30]=de(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[131]||(t[131]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),v(" Update Pull Request ",-1)])],8,IN)):p("v-if",!0),e.detectedType==="gist"&&!e.isUpdate?(l(),d("button",{key:3,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[31]||(t[31]=de(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[132]||(t[132]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize Gist ",-1)])],8,VN)):p("v-if",!0),e.detectedType==="gist"&&e.isUpdate?(l(),d("button",{key:4,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[32]||(t[32]=de(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[133]||(t[133]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),v(" Update Gist ",-1)])],8,qN)):p("v-if",!0)],512),[[W,e.detectedType]])])),[[r,e.viewState]])],8,D2),p(" Preview column (right) "),e.detectedType==="repo"?(l(),d("div",{key:0,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",UN,[t[134]||(t[134]=n("strong",null,"README.md",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[33]||(t[33]=a=>e.previewExpanded=!e.previewExpanded)},u(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",$N,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",LN,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",FN,[t[135]||(t[135]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[34]||(t[34]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),!e.sourceLoading&&!e.readme&&e.previewStatus==="idle"?(l(),d("div",BN,"No README is available to preview. Review the published files before sharing.")):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",{key:4,class:"anonymize-preview-body markdown-body body",innerHTML:e.sanitize(e.html_readme)},null,8,HN)):p("v-if",!0)],8,MN)):p("v-if",!0),e.detectedType==="gist"&&e.details?(l(),d("div",{key:1,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",jN,[t[136]||(t[136]=n("strong",null,"Gist preview",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[35]||(t[35]=a=>e.previewExpanded=!e.previewExpanded)},u(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",GN,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",WN,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",KN,[t[137]||(t[137]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[36]||(t[36]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",YN,[n("div",JN,[n("h2",QN,[e.options?.title?(l(),d("span",XN,u(e.anonymizeGistContent(e.details?.gist?.description)||"Untitled gist"),1)):p("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.gist?.isPublic,"badge-secondary":!e.details?.gist?.isPublic}])},u(e.details?.gist?.isPublic?"public":"secret"),3)]),e.options?.date?(l(),d("small",{key:0,textContent:u(e.fmt?.date(e.details?.gist?.updatedDate))},null,8,ZN)):p("v-if",!0)]),e.options?.origin?(l(),d("small",xN,"Gist ID: "+u(e.details?.source?.gistId),1)):p("v-if",!0),e.options?.username&&e.details?.gist?.ownerLogin?(l(),d("small",eR,"By @"+u(e.anonymizeGistContent(e.details?.gist?.ownerLogin)),1)):p("v-if",!0),e.options?.content&&e.previewGistFiles?.length?(l(),d("div",tR,[n("ul",nR,[(l(!0),d(K,null,ne(e.previewGistFiles,(a,c)=>(l(),d("li",oR,[n("div",sR,[n("strong",{textContent:u(a?.filename)},null,8,iR),a?.language?(l(),d("span",rR,u(a?.language),1)):p("v-if",!0)]),Ce(o,{file:a,terms:e.terms,options:e.options},null,8,["file","terms","options"])]))),256))])])):p("v-if",!0),e.options?.comments&&e.details?.gist?.comments&&e.details?.gist?.comments?.length?(l(),d("div",aR,[t[140]||(t[140]=n("h3",{class:"paper-section-eyebrow mt-3"},"Comments",-1)),n("ul",lR,[(l(!0),d(K,null,ne(e.details?.gist?.comments,(a,c)=>(l(),d("li",dR,[n("div",uR,[e.options?.username?(l(),d("span",cR,[t[138]||(t[138]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[139]||(t[139]=v(" @",-1)),n("span",{textContent:u(e.anonymizeGistContent(a?.author))},null,8,pR)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(a?.updatedDate))},null,8,fR)):p("v-if",!0)]),e.options?.body?(l(),d("div",hR,[Ce(i,{content:e.anonymizeGistContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])):p("v-if",!0)],8,zN)):p("v-if",!0),e.detectedType==="pr"&&e.details?(l(),d("div",{key:2,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",vR,[t[141]||(t[141]=n("strong",null,"Pull request preview",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[37]||(t[37]=a=>e.previewExpanded=!e.previewExpanded)},u(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",gR,"Loading source\u2026")):p("v-if",!0),e.previewStatus==="loading"?(l(),d("div",yR,"Updating the anonymized preview\u2026")):p("v-if",!0),e.previewStatus==="error"?(l(),d("div",bR,[t[142]||(t[142]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[38]||(t[38]=a=>e.retryPreview())},"Retry preview")])):p("v-if",!0),e.previewStatus==="ready"?(l(),d("div",wR,[n("div",kR,[n("h2",ER,[e.options?.title?(l(),d("span",CR,u(e.anonymizePrContent(e.details?.pullRequest?.title)),1)):p("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},u(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:u(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,SR)):p("v-if",!0)]),e.options?.origin?(l(),d("small",_R,"Pull Request on "+u(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",NR,[Ce(i,{content:e.anonymizePrContent(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),e.options?.diff||e.options?.comments?(l(),d("nav",RR,[e.options?.diff?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.prTabState?.active=="diff"}]),type:"button",role:"tab",id:"preview-pr-diff-tab","aria-selected":e.prTabState?.active==="diff","aria-controls":"preview-pr-diff-panel",tabindex:e.prTabState?.active==="diff"?0:-1,onKeydown:t[39]||(t[39]=a=>e.previewTabKeydown(a)),onClick:t[40]||(t[40]=a=>e.prTabState.active="diff")},[...t[143]||(t[143]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),v(" Diff ",-1)])],42,DR)):p("v-if",!0),e.options?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.prTabState?.active=="comments"}]),type:"button",role:"tab",id:"preview-pr-comments-tab","aria-selected":e.prTabState?.active==="comments","aria-controls":"preview-pr-comments-panel",tabindex:e.prTabState?.active==="comments"?0:-1,onKeydown:t[41]||(t[41]=a=>e.previewTabKeydown(a)),onClick:t[42]||(t[42]=a=>e.prTabState.active="comments")},[t[144]||(t[144]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,AR)],42,TR)):p("v-if",!0)])):p("v-if",!0),!e.options?.diff&&!e.options?.comments?(l(),d("div",OR,"Diff and comments are hidden by your display settings.")):p("v-if",!0),n("div",PR,[e.options?.diff&&e.prTabState?.active=="diff"?(l(),d("div",IR,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.anonymizePrContent(e.details?.pullRequest?.diff)))},null,8,VR)])):p("v-if",!0),e.options?.comments&&e.prTabState?.active=="comments"?(l(),d("div",qR,[n("ul",MR,[(l(!0),d(K,null,ne(e.details?.pullRequest?.comments,(a,c)=>(l(),d("li",UR,[n("div",$R,[e.options?.username?(l(),d("span",LR,[t[145]||(t[145]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[146]||(t[146]=v(" @",-1)),n("span",{textContent:u(e.anonymizePrContent(a?.author))},null,8,FR)])):p("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(a?.updatedDate))},null,8,BR)):p("v-if",!0)]),e.options?.body?(l(),d("div",HR,[Ce(i,{content:e.anonymizePrContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0)]))),256))])])):p("v-if",!0)])])):p("v-if",!0)],8,mR)):p("v-if",!0)])],512),[[W,e.workspaceOpen||e.isUpdate]])],2)}var zR={class:"container-fluid h-100 anonymize-page"},jR={class:"row h-100 flex-column flex-md-row"},GR={class:"col-md sidePanel shadow overflow-auto anonymize-form-col"},WR={class:"form-group"},KR={class:"form-group"},YR={class:"form-check"},JR={class:"form-check-input",type:"checkbox",id:"update",name:"update"},QR={class:"form-group"},XR={class:"form-text text-muted"},ZR=["href"],xR={class:"invalid-feedback"},eD={class:"form-text text-muted"},tD={class:"form-group"},nD={id:"idHelp",class:"form-text text-muted"},oD={class:"invalid-feedback"},sD={class:"form-group"},iD={class:"invalid-feedback"},rD={class:"form-group"},aD={class:"form-control",id:"expiration",name:"expiration"},lD={class:"form-group",id:"expiration-date-form"},dD={class:"form-control",type:"date",name:"expirationDate",id:"expirationDate"},uD={class:"accordion mb-3",id:"options"},cD={class:"card"},pD={id:"collapseOne",class:"collapse show","aria-labelledby":"headingOne","data-parent":"#options"},fD={class:"card-body"},hD={class:"form-group mb-0"},mD={class:"form-check"},vD={class:"form-check-input",type:"checkbox",id:"link",name:"link"},gD={class:"form-check"},yD={class:"form-check-input",type:"checkbox",id:"image",name:"image"},bD={class:"form-check"},wD={class:"form-check-input",type:"checkbox",id:"date",name:"date"},kD={class:"form-check"},ED={class:"form-check-input",type:"checkbox",id:"username",name:"username"},CD={class:"form-check"},SD={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},_D={class:"form-check"},ND={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},RD={class:"form-check"},DD={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},TD={class:"form-check"},AD={class:"form-check-input",type:"checkbox",id:"title",name:"title"},OD={class:"form-check"},PD={class:"form-check-input",type:"checkbox",id:"body",name:"body"},ID=["textContent"],VD={class:"anonymize-submit-bar"},qD={key:0,class:"col-md-8 p-2 overflow-auto anonymize-preview-col"},MD={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},UD={class:"pr-title mb-1"},$D={key:0},LD=["textContent"],FD={key:0},BD={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},HD={class:"nav nav-tabs",id:"myTab",role:"tablist"},zD={key:0,class:"nav-item",role:"presentation"},jD={key:1,class:"nav-item",role:"presentation"},GD=["textContent"],WD={class:"tab-content",id:"pills-tabContent"},KD={class:"tab-pane show active",id:"pills-diff",role:"tabpanel","aria-labelledby":"pills-diff-tab"},YD={key:0,class:"pr-diff shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},JD={style:{"overflow-x":"auto"}},QD=["innerHTML"],XD={key:0,class:"pr-comments list-group"},ZD={class:"pr-comment list-group-item"},xD={class:"d-flex w-100 justify-content-between flex-wrap"},eT={key:0,class:"mb-1"},tT=["textContent"],nT={class:"mb-1"};function Ll(e,t){let o=Ge("markdown"),i=ge("field"),s=ge("form");return l(),d("div",zR,[n("div",jR,[n("div",GR,[n("div",{class:P(["p-0 py-2 m-auto",{card:!e.pullRequestUrl,container:e.pullRequestUrl}])},[D((l(),d("form",{class:P(["form needs-validation",{"card-body":!e.pullRequestUrl}]),name:"anonymizeForm",novalidate:""},[t[30]||(t[30]=fe('
Anonymize \xA0/\xA0 Pull request

Anonymize a pull request

Fill in the details \u2014 it only takes a minute.

Source
',4)),p(" pullRequestUrl "),n("div",WR,[t[2]||(t[2]=n("label",{for:"pullRequestUrl"},"URL of your pull request",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestUrl?.invalid}]),name:"pullRequestUrl",id:"pullRequestUrl",placeholder:"https://github.com/owner/repo/pull/123"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestUrl=r},value:e.pullRequestUrl,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.pullRequestSelected()}}]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestUrl)+" is not accessible. Some organizations are restricting the access to the repositories. ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.access]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestUrl)+" does not exist or is not accessible ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.missing]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestUrl)+" is already anonymized ",513),[[W,e.anonymize?.pullRequestUrl?.errors?.used]])]),D(n("div",null,[n("div",KR,[n("div",YR,[D(n("input",JR,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"anonymizeForm",options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"update"},"Auto update",-1)),t[4]||(t[4]=n("small",{id:"updateHelp",class:"form-text text-muted"},"Automatically update the anonymized pull request with the latest updates. The pull request is updated once per day maximum.",-1))])]),t[26]||(t[26]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})]),v(" Conference ID ")],-1)),p(" Conference "),n("div",QR,[t[5]||(t[5]=n("label",{for:"conference"},[v("Conference ID "),n("span",{class:"text-muted"},"(Optional)")],-1)),D(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[i,{state:e.viewState,set:r=>{e.conference=r},value:e.conference,form:"anonymizeForm",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),D(n("small",XR,[n("a",{target:"_target",href:e.safeUrl(e.conference_data?.url)},u(e.conference_data?.name),9,ZR),v(" will expire on "+u(e.fmt?.date(e.conference_data?.endDate))+".",1)],512),[[W,e.conference_data]]),D(n("div",xR," The conference is not activated. ",512),[[W,e.anonymize?.conference?.errors?.activated]]),D(n("small",eD," Use the Conference ID that your conference provided you. This will update automatically the anonymization options based on the conference preferences. ",512),[[W,!e.conference_data]])]),t[27]||(t[27]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),v(" Anonymization Options ")],-1)),p(" Pull Request ID "),n("div",tD,[t[6]||(t[6]=n("label",{for:"pullRequestId"},"Anonymized pull request id",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestId=r},value:e.pullRequestId,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",nD,"Id used in the url: https://anonymous.4open.science/r/"+u(e.pullRequestId),1),D(n("div",oD," Repository id can only contain letters and numbers ",512),[[W,e.anonymize?.pullRequestId?.errors?.format]]),D(n("div",{class:"invalid-feedback"},u(e.pullRequestId)+" is already used ",513),[[W,e.anonymize?.pullRequestId?.errors?.used]])]),p(" Terms "),n("div",sD,[t[7]||(t[7]=n("label",{for:"terms"},"Terms to anonymize",-1)),D(n("textarea",{class:P(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"anonymizeForm",options:{debounce:250}}]]),t[8]||(t[8]=n("small",{id:"termsHelp",class:"form-text text-muted"},"One term per line. Each term will be replaced by XXX.",-1)),D(n("div",iD," Terms are in an invalid format ",512),[[W,e.anonymize?.terms?.errors?.format]])]),n("div",rD,[t[10]||(t[10]=n("label",{for:"expiration"},"Expiration strategy",-1)),D((l(),d("select",aD,[...t[9]||(t[9]=[n("option",{value:"never",selected:""},"Never expire",-1),n("option",{value:"redirect"}," Redirect to GitHub when expired ",-1),n("option",{value:"remove"},"Remove when expired",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"anonymizeForm",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},"Define the expiration strategy for the anonymized repository.",-1))]),D(n("div",lD,[t[12]||(t[12]=n("label",{for:"expirationDate"},"Expiration date of the anonymized repository",-1)),D(n("input",dD,null,512),[[i,{state:e.viewState,set:r=>{e.options.expirationDate=r},value:e.options?.expirationDate,form:"anonymizeForm",options:{}}]]),D(n("small",{class:"form-text text-muted"},"After "+u(e.fmt?.date(e.options?.expirationDate))+", the repository will be removed and the visitor will not be able to see the content of the repository.",513),[[W,e.options?.expirationMode=="remove"]]),D(n("small",{class:"form-text text-muted"},"After "+u(e.fmt?.date(e.options?.expirationDate))+", the visitors of the anonymized repository will be redirected to "+u(e.pullRequestUrl)+".",513),[[W,e.options?.expirationMode=="redirect"]])],512),[[W,e.options?.expirationMode!="never"]]),n("div",uD,[n("div",cD,[t[25]||(t[25]=fe('

',1)),n("div",pD,[n("div",fD,[n("div",hD,[n("div",mD,[D(n("input",vD,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"anonymizeForm",options:{}}]]),t[13]||(t[13]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Keep or remove all the links.",-1))]),n("div",gD,[D(n("input",yD,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"anonymizeForm",options:{}}]]),t[15]||(t[15]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"Images are not anonymized",-1))]),n("div",bD,[D(n("input",wD,null,512),[[i,{state:e.viewState,set:r=>{e.options.date=r},value:e.options?.date,form:"anonymizeForm",options:{}}]]),t[17]||(t[17]=n("label",{class:"form-check-label",for:"date"},"Display dates",-1)),t[18]||(t[18]=n("small",{class:"form-text text-muted"},"Display the date of the Pull Request and the date of the comments.",-1))]),n("div",kD,[D(n("input",ED,null,512),[[i,{state:e.viewState,set:r=>{e.options.username=r},value:e.options?.username,form:"anonymizeForm",options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"username"},"Display username",-1))]),n("div",CD,[D(n("input",SD,null,512),[[i,{state:e.viewState,set:r=>{e.options.comments=r},value:e.options?.comments,form:"anonymizeForm",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"comments"},"Display comments",-1))]),n("div",_D,[D(n("input",ND,null,512),[[i,{state:e.viewState,set:r=>{e.options.diff=r},value:e.options?.diff,form:"anonymizeForm",options:{}}]]),t[21]||(t[21]=n("label",{class:"form-check-label",for:"diff"},"Display diff",-1))]),n("div",RD,[D(n("input",DD,null,512),[[i,{state:e.viewState,set:r=>{e.options.origin=r},value:e.options?.origin,form:"anonymizeForm",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"origin"},"Display the project name",-1))]),n("div",TD,[D(n("input",AD,null,512),[[i,{state:e.viewState,set:r=>{e.options.title=r},value:e.options?.title,form:"anonymizeForm",options:{}}]]),t[23]||(t[23]=n("label",{class:"form-check-label",for:"title"},"Display the PR title",-1))]),n("div",OD,[D(n("input",PD,null,512),[[i,{state:e.viewState,set:r=>{e.options.body=r},value:e.options?.body,form:"anonymizeForm",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"body"},"Display the PR body and comment bodies",-1))])])])])])])],512),[[W,e.pullRequestUrl]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:u(e.error)},null,8,ID)):p("v-if",!0),D(n("div",VD,[e.isUpdate?p("v-if",!0):(l(),d("button",{key:0,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[0]||(t[0]=de(r=>e.submitForm(r,()=>{e.anonymizePullRequest(r)}),["prevent"]))},[...t[28]||(t[28]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize ",-1)])])),e.isUpdate?(l(),d("button",{key:1,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[1]||(t[1]=de(r=>e.submitForm(r,()=>{e.updatePullRequest(r)}),["prevent"]))},[...t[29]||(t[29]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),v(" Update ",-1)])])):p("v-if",!0)],512),[[W,e.pullRequestUrl]])],2)),[[s,e.viewState]])],2)]),e.details?(l(),d("div",qD,[n("div",MD,[n("h2",UD,[e.options?.title?(l(),d("span",$D,u(e.anonymize(e.details?.pullRequest?.title)),1)):p("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},u(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:u(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,LD)):p("v-if",!0)]),e.options?.origin?(l(),d("small",FD,"Pull Request on "+u(e.details?.pullRequest?.baseRepositoryFullName),1)):p("v-if",!0),e.options?.body?(l(),d("div",BD,[Ce(o,{content:e.anonymize(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):p("v-if",!0),n("ul",HD,[e.options?.diff?(l(),d("li",zD,[...t[31]||(t[31]=[n("button",{class:"nav-link active",id:"pills-diff-tab","data-toggle":"pill","data-target":"#pills-diff",type:"button",role:"tab","aria-controls":"pills-diff","aria-selected":"true"}," Diff ",-1)])])):p("v-if",!0),e.options?.comments?(l(),d("li",jD,[n("button",{class:P(["nav-link",{active:!e.options?.diff}]),id:"pills-comments-tab","data-toggle":"pill","data-target":"#pills-comments",type:"button",role:"tab","aria-controls":"pills-comments","aria-selected":"false"},[n("span",{textContent:u(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comment",one:"One Comment",other:"{} Comments"}))},null,8,GD)],2)])):p("v-if",!0)]),n("div",WD,[n("div",KD,[e.options?.diff?(l(),d("div",YD,[n("pre",JD,[n("code",{innerHTML:e.sanitize(e.fmt?.diff(e.anonymize(e.details?.pullRequest?.diff)))},null,8,QD)])])):p("v-if",!0)]),n("div",{class:P(["tab-pane",{"show active":!e.options?.diff}]),id:"pills-comments",role:"tabpanel","aria-labelledby":"pills-comments-tab"},[e.options?.comments?(l(),d("ul",XD,[(l(!0),d(K,null,ne(e.details?.pullRequest?.comments,(r,a)=>(l(),d("li",ZD,[n("div",xD,[e.options?.username?(l(),d("h5",eT," @"+u(e.anonymize(r?.author)),1)):p("v-if",!0),e.options?.date?(l(),d("small",{key:1,textContent:u(e.fmt?.date(r?.updatedDate))},null,8,tT)):p("v-if",!0)]),n("p",nT,[e.options?.body?(l(),Ft(o,{key:0,class:"pr-comment-body",content:e.anonymize(r?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])):p("v-if",!0)])]))),256))])):p("v-if",!0)],2)])])):p("v-if",!0)])])}var oT={class:"container paper-page claim-page"},sT={class:"paper-settings-main claim-form"},iT={class:"form-group"},rT={class:"invalid-feedback"},aT={class:"form-group"};function Fl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",oT,[t[6]||(t[6]=fe('
My work \xA0/\xA0 Claim

Claim an anonymization

Take ownership of an existing anonymized repository so it appears on your dashboard.

',3)),n("div",sT,[t[5]||(t[5]=n("p",{class:"paper-section-copy"},"Use this when an anonymization was created by a co-author or from another account. You must have access to the GitHub repository it was made from.",-1)),D((l(),d("form",{class:"form needs-validation",name:"claimForm",novalidate:"",onSubmit:t[0]||(t[0]=de(s=>e.submitForm(s,()=>{e.claim()}),["prevent"]))},[n("div",iT,[t[1]||(t[1]=n("label",{class:"paper-field-label",for:"repoUrl"},"GitHub repository URL",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.claimForm?.repoUrl?.invalid&&(e.claimForm?.repoUrl?.touched||e.claimForm?.submitted)}]),name:"repoUrl",id:"repoUrl",placeholder:"https://github.com/owner/repository",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoUrl=s},value:e.repoUrl,form:"claimForm",options:{}}]]),D(n("div",rT," No anonymization matches this repository and ID. Check both values and that you can access the repository on GitHub. ",512),[[W,e.claimForm?.repoUrl?.errors?.not_found]])]),n("div",aT,[t[2]||(t[2]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.claimForm?.repoId?.invalid&&(e.claimForm?.repoId?.touched||e.claimForm?.submitted)}]),name:"repoId",id:"repoId",placeholder:"e.g. my-paper-7F2A","aria-describedby":"idHelp",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoId=s},value:e.repoId,form:"claimForm",options:{}}]]),t[3]||(t[3]=n("small",{id:"idHelp",class:"form-text text-muted"},[v("The ID is the last part of the anonymized URL: "),n("code",null,"anonymous.4open.science/r/"),v(".")],-1))]),t[4]||(t[4]=n("button",{id:"submit",type:"submit",class:"btn btn-ink"}," Claim anonymization ",-1))],32)),[[i,e.viewState]])])])}var lT={class:"container page paper-page conference-page"},dT={class:"paper-crumbs"},uT={class:"here"},cT={class:"d-flex align-items-end flex-wrap",style:{gap:"12px","justify-content":"space-between"}},pT=["textContent"],fT={key:0,class:"paper-page-lede"},hT=["textContent","href"],mT={class:"d-flex align-items-center flex-wrap",style:{gap:"10px"}},vT=["textContent"],gT=["href"],yT={class:"paper-meta-rule"},bT=["textContent"],wT=["textContent"],kT={key:0},ET={key:0,class:"conference-payment-status",role:"status"},CT=["disabled"],ST={key:1,role:"alert"},_T={key:2,class:"paper-settings-section","aria-labelledby":"conference-payment-heading"},NT={key:0,role:"status"},RT={key:1,role:"alert"},DT=["disabled"],TT={class:"search-wrap"},AT={type:"search",id:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search by ID or source repository\u2026",autocomplete:"off"},OT={class:"dashboard-filter-controls"},PT={class:"dropdown"},IT={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},VT={class:"filter-btn-value"},qT={class:"dropdown-menu","aria-labelledby":"dropdownSort"},MT={class:"form-check dropdown-item"},UT={class:"form-check-input",type:"radio",name:"sort",id:"anonymizeDate",value:"-anonymizeDate"},$T={class:"form-check dropdown-item"},LT={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"repoId"},FT={class:"form-check dropdown-item"},BT={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},HT={class:"form-check dropdown-item"},zT={class:"form-check-input",type:"radio",name:"sort",id:"sortViews",value:"-pageView"},jT={class:"dropdown"},GT={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},WT={key:0,class:"filter-btn-value"},KT={key:1,class:"filter-btn-value"},YT={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},JT={class:"form-check dropdown-item"},QT=["id"],XT=["for"],ZT={class:"dashboard-meta"},xT={class:"dashboard-count"},eA={key:0},tA={key:0},nA={key:1},oA={key:1},sA={key:0,class:"filter-chip"},iA=["onClick","aria-label"],rA={class:"paper-table paper-table-repos w-100",role:"table","aria-label":"Repositories"},aA={class:"cell-anon",role:"cell"},lA={class:"anon-text"},dA=["textContent","href"],uA={class:"anon-sub"},cA={class:"anon-source"},pA=["textContent","href"],fA={key:0},hA=["textContent","href"],mA={key:1},vA=["href"],gA={class:"cell-status",role:"cell"},yA={class:"status-line"},bA=["textContent"],wA={key:0,class:"status-sub"},kA={class:"cell-views num",role:"cell"},EA=["textContent"],CA={class:"cell-expires",role:"cell"},SA={key:0,class:"expires-never"},_A=["textContent"],NA={key:2,class:"expires-past"},RA={key:0},DA={key:3,class:"empty-dash","aria-label":"Not applicable"},TA={class:"cell-actions",role:"cell"},AA={class:"dropdown"},OA=["aria-label"],PA={class:"dropdown-menu dropdown-menu-right"},IA=["href"],VA=["href"],qA={key:0,class:"paper-table-empty"},MA={key:0},UA={key:1},$A={key:2,class:"paper-table-empty-actions"};function Bl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",lT,[n("div",null,[n("div",dT,[t[4]||(t[4]=n("a",{href:"/dashboard"},"My work",-1)),t[5]||(t[5]=v(" \xA0/\xA0 ",-1)),t[6]||(t[6]=n("a",{href:"/conferences"},"Conferences",-1)),t[7]||(t[7]=v(" \xA0/\xA0 ",-1)),n("span",uT,u(e.conference?.conferenceID),1)]),n("div",cT,[n("div",null,[n("h1",{class:"paper-page-title",textContent:u(e.conference?.name)},null,8,pT),e.conference?.url?(l(),d("p",fT,[n("a",{target:"_blank",rel:"noopener",textContent:u(e.conference?.url),href:e.safeUrl(e.conference?.url)},null,8,hT)])):p("v-if",!0)]),n("div",mT,[n("span",{class:P(["status-pill",{"status-pill-ready":e.conference?.status=="ready","status-pill-removed":e.conference?.status=="removed"||e.conference?.status=="expired"}])},[n("span",{class:P(["status-dot","status-"+e.conference?.status]),"aria-hidden":"true"},null,2),n("span",{textContent:u(e.fmt?.statusLabel(e.conference?.status))},null,8,vT)],2),n("a",{class:"btn btn-outline-ink",href:e.safeUrl("/conference/"+e.conference?.conferenceID+"/edit")},[...t[8]||(t[8]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit conference",-1)])],8,gT)])]),n("div",yT,[n("span",null,[t[9]||(t[9]=v("ID ",-1)),n("b",{class:"commit-hash",textContent:u(e.conference?.conferenceID)},null,8,bT)]),n("span",null,[t[10]||(t[10]=v("Review window ",-1)),n("b",null,u(e.fmt?.date(e.conference?.startDate,"mediumDate"))+" \u2013 "+u(e.fmt?.date(e.conference?.endDate,"mediumDate")),1)]),n("span",null,[t[11]||(t[11]=v("Repositories ",-1)),n("b",null,u(e.fmt?.number(e.conference?.repositories?.length)),1)]),n("span",null,[t[12]||(t[12]=v("Plan ",-1)),n("b",{textContent:u(e.conference?.plan?.name||e.conference?.plan?.planID||"Free")},null,8,wT)]),e.conference?.price?(l(),d("span",kT,[t[13]||(t[13]=v("Cost so far ",-1)),n("b",null,u(e.fmt?.number(e.conference?.price,2))+" \u20AC",1)])):p("v-if",!0)]),e.billingNotice?(l(),d("div",ET,[n("p",null,u(e.billingNotice),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[0]||(t[0]=s=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,CT)])):p("v-if",!0),e.billingError&&e.conference?.status!=="pending_payment"?(l(),d("p",ST,u(e.billingError),1)):p("v-if",!0),e.conference?.status==="pending_payment"?(l(),d("section",_T,[t[14]||(t[14]=n("h2",{id:"conference-payment-heading"},"Activate your review package",-1)),t[15]||(t[15]=n("p",null,"This conference is waiting for payment. Authors can join after payment is confirmed. Checkout returns to this conference. Authors within the package do not pay separately.",-1)),e.billingLoading?(l(),d("p",NT,"Loading payment options\u2026")):p("v-if",!0),e.billingError?(l(),d("p",RT,u(e.billingError),1)):p("v-if",!0),(l(!0),d(K,null,ne((e.billing?.plans||[]).filter(s=>s.id==="conference"),s=>(l(),d("div",{key:s.id},[n("p",null,u(e.billingPrice(s))+" for up to "+u(s.repositories)+" repositories and "+u(e.billingBytes(s.storage))+" of source files during the review window. Taxes, if applicable, appear at checkout.",1),n("button",{type:"button",class:"btn btn-primary",onClick:t[1]||(t[1]=r=>e.checkout("conference",e.conference.conferenceID)),disabled:e.billingBusy||e.billingPending||e.billing?.checkoutEnabled===!1},u(e.billingBusy?"Please wait\u2026":"Pay for review package"),9,DT)]))),128)),t[16]||(t[16]=n("p",null,[n("a",{href:"/profile#settings-billing"},"Manage invoices")],-1))])):p("v-if",!0),t[37]||(t[37]=n("div",{class:"paper-section-eyebrow"},"Repositories",-1)),D((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter repositories","accept-charset":"UTF-8",onSubmit:t[2]||(t[2]=de(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",TT,[D(n("input",AT,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",OT,[n("div",PT,[n("button",IT,[t[17]||(t[17]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",VT,u({"-anonymizeDate":"Anonymize date",repoId:"ID","-status":"Status","-pageView":"Views"}[e.orderBy]||"Custom"),1)]),n("div",qT,[t[22]||(t[22]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",MT,[D(n("input",UT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"anonymizeDate"},"Anonymize date",-1))]),n("div",$T,[D(n("input",LT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",FT,[D(n("input",BT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",HT,[D(n("input",zT,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[21]||(t[21]=n("label",{class:"form-check-label",for:"sortViews"},"Views",-1))])])]),n("div",jT,[n("button",GT,[t[23]||(t[23]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",WT,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",KT,u((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",YT,[t[24]||(t[24]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(K,null,ne(e.statusLabels,(s,r,a)=>(l(),d("div",JT,[D(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,QT),[[o,{state:e.viewState,set:c=>{e.filters.status[r]=c},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},u(s),9,XT)]))),256))])])])],32)),[[i,e.viewState]]),n("div",ZT,[n("span",xT,[e.filteredRepositories?.length===e.conference?.repositories?.length?(l(),d("span",eA,[v(u(e.fmt?.number(e.conference?.repositories?.length))+" repositor",1),e.conference?.repositories?.length===1?(l(),d("span",tA,"y")):p("v-if",!0),e.conference?.repositories?.length!==1?(l(),d("span",nA,"ies")):p("v-if",!0)])):p("v-if",!0),e.filteredRepositories?.length!==e.conference?.repositories?.length?(l(),d("span",oA,u(e.fmt?.number(e.filteredRepositories?.length))+" of "+u(e.fmt?.number(e.conference?.repositories?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(K,null,ne(e.filters?.status,(s,r,a)=>(l(),d(K,null,[s===!1?(l(),d("span",sA,[v(" Hiding "+u(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:c=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,iA)])):p("v-if",!0)],64))),256))]),n("div",rA,[t[36]||(t[36]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Repository"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Views"),n("div",{role:"columnheader"},"Expires"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(K,null,ne(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error"}]),role:"row",key:s?.repoId},[n("div",aA,[t[27]||(t[27]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",lA,[n("a",{class:"repo-name",textContent:u(s?.repoId),href:e.safeUrl("/r/"+s?.repoId+"/")},null,8,dA),n("div",uA,[n("span",cA,[n("a",{target:"_blank",rel:"noopener",textContent:u(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,pA),s?.options?.update&&s?.source?.branch?(l(),d("span",fA,[t[25]||(t[25]=v(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:u(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,hA)])):p("v-if",!0),s?.source?.commit?(l(),d("span",mA,[t[26]||(t[26]=v(" \xB7 ",-1)),n("a",{class:"commit-hash",target:"_blank",rel:"noopener",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},"@"+u(s?.source?.commit?.substring(0,8)),9,vA)])):p("v-if",!0)])])])]),n("div",gA,[n("div",yA,[n("span",{class:P(["status-dot","status-"+(s?.status=="error"?"error":s?.status=="ready"?"ready":s?.status=="expired"||s?.status=="removed"?s?.status:"progress")]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:u(e.fmt?.statusLabel(s?.status))},null,8,bA)]),s?.anonymizeDate?(l(),d("div",wA,"anonymized "+u(e.fmt?.humanTime(s?.anonymizeDate)),1)):p("v-if",!0)]),n("div",kA,[t[28]||(t[28]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[29]||(t[29]=v()),n("span",{textContent:u(e.fmt?.number(s?.pageView))},null,8,EA)]),n("div",CA,[t[31]||(t[31]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.status=="ready"&&(s?.options?.expirationMode==="never"||!s?.options?.expirationDate)?(l(),d("span",SA,"Never")):p("v-if",!0),s?.status=="ready"&&s?.options?.expirationMode!=="never"&&s?.options?.expirationDate?(l(),d("span",{key:1,textContent:u(e.fmt?.humanTime(s?.options?.expirationDate))},null,8,_A)):p("v-if",!0),s?.status=="expired"?(l(),d("span",NA,[t[30]||(t[30]=v("Expired",-1)),s?.options?.expirationDate?(l(),d("span",RA,u(e.fmt?.humanTime(s?.options?.expirationDate)),1)):p("v-if",!0)])):p("v-if",!0),s?.status!="ready"&&s?.status!="expired"?(l(),d("span",DA,"\u2014")):p("v-if",!0)]),n("div",TA,[n("div",AA,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions for "+s?.repoId},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,OA),n("div",PA,[n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View ",-1)])],8,IA),n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[34]||(t[34]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit ",-1)])],8,VA)])])])],2))),128)),e.filteredRepositories?.length==0?(l(),d("div",qA,[t[35]||(t[35]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conference?.repositories?.length?p("v-if",!0):(l(),d("span",MA,"No repository has been submitted to this conference yet.")),e.conference?.repositories?.length?(l(),d("span",UA,"Nothing matches the current filters.")):p("v-if",!0),e.conference?.repositories?.length?(l(),d("div",$A,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")])):p("v-if",!0)])):p("v-if",!0)])])])}var LA={class:"container page paper-page conferences-page"},FA={class:"row"},BA={class:"w-100"},HA={class:"search-wrap"},zA={type:"search",id:"search",class:"form-control","aria-label":"Search conferences",placeholder:"Search by name or ID\u2026",autocomplete:"off"},jA={class:"dashboard-filter-controls"},GA={class:"dropdown"},WA={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},KA={class:"filter-btn-value"},YA={class:"dropdown-menu","aria-labelledby":"dropdownSort"},JA={class:"form-check dropdown-item"},QA={class:"form-check-input",type:"radio",name:"sort",id:"sortName",value:"name"},XA={class:"form-check dropdown-item"},ZA={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"conferenceID"},xA={class:"form-check dropdown-item"},eO={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},tO={class:"dropdown"},nO={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},oO={key:0,class:"filter-btn-value"},sO={key:1,class:"filter-btn-value"},iO={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},rO={class:"form-check dropdown-item"},aO=["id"],lO=["for"],dO={class:"dashboard-meta"},uO={class:"dashboard-count"},cO={key:0},pO={key:0},fO={key:1},hO={key:0,class:"filter-chip"},mO=["onClick","aria-label"],vO={key:0,class:"conference-feedback",role:"alert"},gO={key:1,class:"conference-feedback",role:"status"},yO={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},bO={class:"cell-anon",role:"cell"},wO={class:"anon-text"},kO=["textContent","href"],EO={class:"anon-sub"},CO={class:"anon-source"},SO=["textContent"],_O={key:0},NO=["textContent","href"],RO={class:"cell-status",role:"cell"},DO={class:"status-line"},TO=["textContent"],AO={class:"cell-views num",role:"cell"},OO=["textContent"],PO={class:"cell-expires",role:"cell"},IO={key:0},VO={key:1,class:"empty-dash","aria-label":"No review window"},qO={class:"cell-actions",role:"cell"},MO={class:"dropdown"},UO=["disabled","aria-label"],$O={class:"dropdown-menu dropdown-menu-right"},LO=["href"],FO=["href"],BO={key:0},HO=["onClick"],zO={key:0,class:"paper-table-empty"},jO={key:0},GO={key:1},WO={class:"paper-table-empty-actions"},KO={key:1,href:"/conference/new",class:"btn btn-ink"};function Hl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",LA,[n("div",FA,[n("div",BA,[t[10]||(t[10]=fe('
My work \xA0/\xA0 Conferences

Your conferences

Group anonymizations by venue, give chairs a shared dashboard, and set one expiry for every submission.

New conference
',2)),D((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter conferences","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=de(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",HA,[D(n("input",zA,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",jA,[n("div",GA,[n("button",WA,[t[3]||(t[3]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",KA,u({name:"Name",conferenceID:"ID","-status":"Status"}[e.orderBy]||"Custom"),1)]),n("div",YA,[t[7]||(t[7]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",JA,[D(n("input",QA,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortName"},"Name",-1))]),n("div",XA,[D(n("input",ZA,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[5]||(t[5]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",xA,[D(n("input",eO,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[6]||(t[6]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))])])]),n("div",tO,[n("button",nO,[t[8]||(t[8]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",oO,"All")):p("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?p("v-if",!0):(l(),d("span",sO,u((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",iO,[t[9]||(t[9]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(K,null,ne(e.statusLabels,(s,r,a)=>(l(),d("div",rO,[D(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,aO),[[o,{state:e.viewState,set:c=>{e.filters.status[r]=c},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},u(s),9,lO)]))),256))])])])],32)),[[i,e.viewState]]),n("div",dO,[n("span",uO,[e.filteredConferences?.length===e.conferences?.length?(l(),d("span",cO,[v(u(e.fmt?.number(e.conferences?.length))+" conference",1),e.conferences?.length!==1?(l(),d("span",pO,"s")):p("v-if",!0)])):p("v-if",!0),e.filteredConferences?.length!==e.conferences?.length?(l(),d("span",fO,u(e.fmt?.number(e.filteredConferences?.length))+" of "+u(e.fmt?.number(e.conferences?.length))+" shown",1)):p("v-if",!0)]),(l(!0),d(K,null,ne(e.filters?.status,(s,r,a)=>(l(),d(K,null,[s===!1?(l(),d("span",hO,[v(" Hiding "+u(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:c=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,mO)])):p("v-if",!0)],64))),256))])]),e.error?(l(),d("div",vO,[n("span",null,u(e.error),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>e.loadConferences())},"Retry")])):p("v-if",!0),e.loading?(l(),d("div",gO,"Loading conferences\u2026")):p("v-if",!0),n("div",yO,[t[24]||(t[24]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Conference"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Repos"),n("div",{role:"columnheader"},"Review window"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(K,null,ne(e.filteredConferences,(s,r)=>(l(),d("div",{class:P(["paper-table-row row-clickable",{"repo-inactive":s?.status=="expired"||s?.status=="removed"}]),role:"row",key:s?.conferenceID},[n("div",bO,[t[13]||(t[13]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",wO,[n("a",{class:"repo-name",textContent:u(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,kO),n("div",EO,[n("span",CO,[t[12]||(t[12]=v("ID ",-1)),n("span",{class:"commit-hash",textContent:u(s?.conferenceID)},null,8,SO),s?.url?(l(),d("span",_O,[t[11]||(t[11]=v(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:u(e.fmt?.limitTo(s?.url,60)),href:e.safeUrl(s?.url)},null,8,NO)])):p("v-if",!0)])])])]),n("div",RO,[n("div",DO,[n("span",{class:P(["status-dot","status-"+s?.status]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:u(e.fmt?.statusLabel(s?.status))},null,8,TO)])]),n("div",AO,[t[14]||(t[14]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),t[15]||(t[15]=v()),n("span",{textContent:u(e.fmt?.number(s?.nbRepositories||0))},null,8,OO)]),n("div",PO,[t[16]||(t[16]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.startDate?(l(),d("span",IO,u(e.fmt?.date(s?.startDate,"mediumDate"))+" \u2013 "+u(e.fmt?.date(s?.endDate,"mediumDate")),1)):p("v-if",!0),s?.startDate?p("v-if",!0):(l(),d("span",VO,"\u2014"))]),n("div",qO,[n("div",MO,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:s?.removing,"aria-label":"Actions for "+s?.name},[...t[17]||(t[17]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,UO),n("div",$O,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[18]||(t[18]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View ",-1)])],8,LO),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit ",-1)])],8,FO),s?.status!="removed"?(l(),d("div",BO,[t[21]||(t[21]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:a=>e.removeConference(s)},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove ",-1)])],8,HO)])):p("v-if",!0)])])])],2))),128)),!e.loading&&!e.error&&e.filteredConferences?.length==0?(l(),d("div",zO,[t[23]||(t[23]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conferences?.length==0?(l(),d("span",jO,"You have not created a conference yet.")):p("v-if",!0),e.conferences?.length>0?(l(),d("span",GO,"Nothing matches the current filters.")):p("v-if",!0),n("div",WO,[e.conferences?.length>0?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")):p("v-if",!0),e.conferences?.length==0?(l(),d("a",KO,[...t[22]||(t[22]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),v(" New conference",-1)])])):p("v-if",!0)])])):p("v-if",!0)])])])}var YO={class:"container page dashboard-page paper-page"},JO={class:"row"},QO={class:"w-100"},XO={class:"dashboard-heading"},ZO=["open"],xO=["aria-expanded"],eP=["stroke-dasharray"],tP={key:1,d:"M7 12c0-4 4-4 5 0s5 4 5 0-4-4-5 0-5 4-5 0",class:"quota-ring-unlimited"},nP={key:0,class:"quota-summary-value"},oP={key:0},sP={class:"quota-panel",id:"dashboard-usage"},iP={class:"quota-panel-heading"},rP={key:1,class:"quota-loading",role:"status"},aP={class:"search-wrap"},lP={type:"search",id:"search",class:"form-control","aria-label":"Search anonymizations",placeholder:"Search projects, IDs, or conferences\u2026",autocomplete:"off"},dP=["aria-expanded"],uP={class:"btn-group",role:"group","aria-label":"Type"},cP=["aria-pressed"],pP=["aria-pressed"],fP=["aria-pressed"],hP=["aria-pressed"],mP={class:"dropdown"},vP={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},gP={class:"filter-btn-value"},yP={class:"sr-only"},bP={class:"dropdown-menu","aria-labelledby":"dropdownSort"},wP={class:"form-check dropdown-item"},kP=["onClick","checked","id"],EP=["for"],CP={class:"dropdown"},SP={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},_P={key:0,class:"filter-btn-value"},NP={key:1,class:"filter-btn-value"},RP={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},DP={class:"form-check dropdown-item"},TP=["id"],AP=["for"],OP={key:0,class:"dashboard-meta"},PP={class:"dashboard-view-tabs",role:"group","aria-label":"Project view"},IP=["aria-pressed"],VP=["aria-pressed","aria-label"],qP={class:"dashboard-count"},MP={key:0},UP={key:0},$P={key:1},LP={class:"dashboard-active-filters"},FP=["onClick","aria-label","title"],BP=["aria-busy"],HP={class:"paper-table-head",role:"row"},zP=["aria-sort"],jP=["aria-sort"],GP=["aria-sort"],WP=["aria-sort"],KP={key:0,class:"paper-table-row paper-table-skeleton",role:"row","aria-hidden":"true"},YP=["onClick"],JP={class:"cell-anon",role:"cell"},QP=["aria-label","title"],XP={class:"project-type-svg","aria-hidden":"true"},ZP=["href"],xP={class:"anon-text"},eI={class:"anon-title"},tI=["title","textContent","href"],nI=["textContent"],oI={key:2,class:"type-badge type-coauthor",title:"You are a co-author on this anonymization"},sI={class:"anon-sub"},iI=["title"],rI=["title"],aI=["title"],lI=["textContent"],dI={class:"dashboard-row-meta",role:"presentation"},uI={class:"cell-status",role:"cell"},cI={class:"status-line"},pI=["textContent"],fI=["textContent","title"],hI=["title"],mI=["href"],vI=["onClick"],gI={key:4,class:"status-sub status-sub-date"},yI=["aria-label"],bI={class:"cell-expires",role:"cell"},wI={key:0,class:"expires-never"},kI=["textContent"],EI={key:2,class:"expires-past"},CI={key:3,class:"expires-past"},SI={key:4,class:"empty-dash","aria-label":"Not applicable"},_I={class:"cell-actions",role:"cell"},NI=["onClick","disabled","title","aria-label"],RI=["onClick","data-project-actions","aria-controls","aria-expanded"],DI={key:2,class:"dropdown"},TI=["data-project-actions","aria-label"],AI={class:"dropdown-menu dropdown-menu-right"},OI=["onClick","aria-controls","aria-expanded"],PI=["href"],II=["href"],VI=["onClick","disabled"],qI=["href"],MI=["onClick"],UI=["onClick"],$I=["onClick"],LI={key:5},FI=["onClick"],BI={key:1,class:"project-details-row",role:"row"},HI=["id","onKeydown"],zI={class:"project-details-heading"},jI=["onClick"],GI={class:"project-details-list"},WI={key:0},KI={key:1},YI={key:0},JI={key:2},QI={key:0,class:"project-progress-help"},XI=["href"],ZI=["onSubmit"],xI=["for"],e4=["id"],t4={class:"project-name-controls"},n4=["id","aria-describedby","disabled"],o4=["disabled"],s4={key:0,class:"project-name-error",role:"alert"},i4={key:1,role:"status"},r4={key:0,class:"paper-table-empty"},a4={key:0},l4={key:1},d4={class:"paper-table-empty-actions"},u4={key:1,href:"/anonymize",class:"btn btn-ink"},c4={key:0,class:"dashboard-pagination"},p4={key:0,role:"alert"},f4=["disabled"];function zl(e,t){let o=Ge("quota-usage"),i=ge("field"),s=ge("form");return l(),d("div",YO,[n("div",JO,[n("div",QO,[n("div",XO,[n("div",null,[t[27]||(t[27]=n("h1",{class:"paper-page-title"},"Projects",-1)),t[28]||(t[28]=n("p",{class:"paper-page-lede"},"Manage your anonymous links.",-1)),n("details",{class:"dashboard-quota",open:e.quotaExpanded,onToggle:t[1]||(t[1]=r=>e.quotaExpanded=r.target.open),onKeydown:t[2]||(t[2]=An(de(r=>e.closeQuota(),["prevent","stop"]),["esc"]))},[n("summary",{"aria-controls":"dashboard-usage","aria-expanded":e.quotaExpanded},[(l(),d("svg",{class:P(["quota-summary-ring",e.quota?"quota-"+e.quota.repository.level:""]),viewBox:"0 0 24 24","aria-hidden":"true"},[t[21]||(t[21]=n("circle",{class:"quota-ring-track",cx:"12",cy:"12",r:"9"},null,-1)),e.quota&&!e.quota.repository.unlimited?(l(),d("circle",{key:0,class:"quota-ring-fill",cx:"12",cy:"12",r:"9",pathLength:"100","stroke-dasharray":e.quota.repository.percent+" 100"},null,8,eP)):p("v-if",!0),e.quota?.repository.unlimited?(l(),d("path",tP)):p("v-if",!0)],2)),t[23]||(t[23]=n("span",{class:"quota-summary-label"},"Usage",-1)),e.quota?(l(),d("span",nP,[v(u(e.fmt.number(e.quota.repository.used)),1),e.quota.repository.unlimited?p("v-if",!0):(l(),d("span",oP," / "+u(e.fmt.number(e.quota.repository.total)),1)),t[22]||(t[22]=v(" repos",-1))])):p("v-if",!0),t[24]||(t[24]=n("svg",{class:"project-type-svg quota-summary-chevron","aria-hidden":"true"},[n("use",{href:"#project-icon-chevron"})],-1))],8,xO),n("div",sP,[n("div",iP,[t[26]||(t[26]=n("h2",null,"Account usage",-1)),n("button",{type:"button",class:"project-close","aria-label":"Close usage",onClick:t[0]||(t[0]=r=>e.closeQuota())},[...t[25]||(t[25]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),e.quota?(l(),Ft(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",rP,"Loading usage\u2026"))])],40,ZO)]),t[29]||(t[29]=fe('',1))]),p(" Search + filters "),D((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter anonymizations","accept-charset":"UTF-8",onSubmit:t[9]||(t[9]=de(r=>e.submitForm(r,()=>{r.preventDefault()}),["prevent"]))},[n("div",aP,[D(n("input",lP,null,512),[[i,{state:e.viewState,set:r=>{e.search=r},value:e.search,form:null,options:{}}]])]),n("button",{class:"btn dashboard-filters-toggle",type:"button","aria-expanded":e.filtersExpanded,"aria-controls":"dashboard-filter-controls",onClick:t[3]||(t[3]=r=>e.filtersExpanded=!e.filtersExpanded)},[...t[30]||(t[30]=[v("Filters",-1),n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})],-1)])],8,dP),n("div",{id:"dashboard-filter-controls",class:P(["dashboard-filter-controls",{expanded:e.filtersExpanded}])},[n("div",uP,[n("button",{type:"button",class:P(["btn",{"btn-primary":e.typeFilter==="all"}]),onClick:t[4]||(t[4]=r=>e.typeFilter="all"),"aria-pressed":e.typeFilter==="all"},"All",10,cP),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="repo"}]),title:"Repositories",onClick:t[5]||(t[5]=r=>e.typeFilter="repo"),"aria-pressed":e.typeFilter==="repo"},[...t[31]||(t[31]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("span",{class:"type-filter-label"},"Repos",-1)])],10,pP),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="pr"}]),title:"Pull requests",onClick:t[6]||(t[6]=r=>e.typeFilter="pr"),"aria-pressed":e.typeFilter==="pr"},[...t[32]||(t[32]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-pr"})],-1),n("span",{class:"type-filter-label"},"PRs",-1)])],10,fP),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="gist"}]),title:"Gists",onClick:t[7]||(t[7]=r=>e.typeFilter="gist"),"aria-pressed":e.typeFilter==="gist"},[...t[33]||(t[33]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1),n("span",{class:"type-filter-label"},"Gists",-1)])],10,hP)]),n("div",{id:"dashboard-extra-filters",class:P(["dashboard-extra-filters",{expanded:e.filtersExpanded}])},[n("div",mP,[n("button",vP,[t[35]||(t[35]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",gP,u(e.sortLabel()),1),(l(),d("svg",{class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)),n("span",yP,u(e.sortDesc()?"descending":"ascending"),1)]),n("div",bP,[t[36]||(t[36]=n("h6",{class:"dropdown-header"},"Order by",-1)),(l(!0),d(K,null,ne(e.sortFields,(r,a,c)=>(l(),d("div",wP,[n("input",{class:"form-check-input",type:"radio",name:"sort",onClick:f=>e.setSort(a,r.defaultDesc),checked:e.isSortedBy(a),id:"sort-"+c},null,8,kP),n("label",{class:"form-check-label",for:"sort-"+c},u(r?.label),9,EP)]))),256)),t[37]||(t[37]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item",onClick:t[8]||(t[8]=r=>e.toggleSortDirection())},u(e.sortDesc()?"Switch to ascending":"Switch to descending"),1)])]),n("div",CP,[n("button",SP,[t[38]||(t[38]=n("span",{class:"filter-btn-label"},"Status",-1)),e.hasHiddenStatus()?p("v-if",!0):(l(),d("span",_P,"All")),e.hasHiddenStatus()?(l(),d("span",NP,u(e.hiddenStatusCount())+" hidden",1)):p("v-if",!0)]),n("div",RP,[t[39]||(t[39]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(K,null,ne(e.statusKeyLabels,(r,a,c)=>(l(),d("div",DP,[D(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+a},null,8,TP),[[i,{state:e.viewState,set:f=>{e.filters.status[a]=f},value:e.filters?.status[a],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+a},u(r),9,AP)]))),256))])])],2)],2)],32)),[[s,e.viewState]]),p(" Result count + active filter chips "),e.loading?p("v-if",!0):(l(),d("div",OP,[n("div",PP,[n("button",{type:"button","aria-pressed":e.projectView==="all",onClick:t[10]||(t[10]=r=>e.setProjectView("all")),"aria-label":"All projects"},[...t[40]||(t[40]=[n("span",{class:"dashboard-view-long"},"All projects",-1),n("span",{class:"dashboard-view-short","aria-hidden":"true"},"All",-1)])],8,IP),n("button",{type:"button","aria-pressed":e.projectView==="attention",onClick:t[11]||(t[11]=r=>e.setProjectView("attention")),"aria-label":"Needs attention "+e.attentionCount()},[t[41]||(t[41]=n("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[42]||(t[42]=n("span",null,"attention",-1)),t[43]||(t[43]=v()),n("span",{class:P(["attention-count",{"has-attention":e.attentionCount()>0}])},u(e.attentionCount()),3)],8,VP)]),n("span",qP,[(e.dashboardTotals?.filtered??e.filteredItems?.length)===(e.dashboardTotals?.total??e.items?.length)?(l(),d("span",MP,[v(u(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" project",1),(e.dashboardTotals?.total??e.items?.length)!==1?(l(),d("span",UP,"s")):p("v-if",!0)])):(l(),d("span",$P,u(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" of "+u(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" shown",1))]),n("div",LP,[(l(!0),d(K,null,ne(e.filters?.status,(r,a,c)=>(l(),d(K,null,[r===!1?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:f=>e.filters.status[a]=!0,"aria-label":"Show "+e.statusKeyLabels[a]+" again",title:"Show "+e.statusKeyLabels[a]+" again"},[v(u(e.statusKeyLabels[a])+" hidden",1),t[44]||(t[44]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))],8,FP)):p("v-if",!0)],64))),256)),e.typeFilter!=="all"?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:t[12]||(t[12]=r=>e.typeFilter="all"),"aria-label":"Show all project types"},[v(u(e.typeFilter==="repo"?"Repositories":e.typeFilter==="pr"?"Pull requests":"Gists"),1),t[45]||(t[45]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))])):p("v-if",!0),e.showClearFilters()?(l(),d("button",{key:1,type:"button",class:"btn-link-inline",onClick:t[13]||(t[13]=r=>e.clearFilters())},"Clear filters")):p("v-if",!0)])]))]),p(" Table "),n("div",{class:"paper-table paper-table-dashboard",role:"table","aria-label":"Anonymizations","aria-busy":e.loading},[n("div",HP,[n("div",{role:"columnheader","aria-sort":e.isSortedBy("_label")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("_label")}]),onClick:t[14]||(t[14]=r=>e.setSort("_label"))},[t[47]||(t[47]=v(" Project ",-1)),e.isSortedBy("_label")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[46]||(t[46]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,zP),n("div",{role:"columnheader","aria-sort":e.isSortedBy("status")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("status")}]),onClick:t[15]||(t[15]=r=>e.setSort("status"))},[t[49]||(t[49]=v(" Status ",-1)),e.isSortedBy("status")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[48]||(t[48]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,jP),n("div",{role:"columnheader",class:"num","aria-sort":e.isSortedBy("pageView")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("pageView")}]),onClick:t[16]||(t[16]=r=>e.setSort("pageView"))},[t[51]||(t[51]=v(" Views ",-1)),e.isSortedBy("pageView")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[50]||(t[50]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,GP),n("div",{role:"columnheader","aria-sort":e.isSortedBy("options.expirationDate")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("options.expirationDate")}]),onClick:t[17]||(t[17]=r=>e.setSort("options.expirationDate"))},[t[53]||(t[53]=v(" Expires ",-1)),e.isSortedBy("options.expirationDate")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[52]||(t[52]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):p("v-if",!0)],2)],8,WP),t[54]||(t[54]=n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")],-1))]),p(" Loading skeleton: keeps the layout stable while the three lists load "),(l(),d(K,null,ne([1,2,3,4],(r,a)=>(l(),d(K,null,[e.loading?(l(),d("div",KP,[...t[55]||(t[55]=[n("div",{class:"cell-anon",role:"cell"},[n("span",{class:"skeleton skeleton-badge"}),n("div",{class:"anon-text"},[n("span",{class:"skeleton skeleton-line",style:{width:"38%"}}),n("span",{class:"skeleton skeleton-line skeleton-line-sm",style:{width:"56%"}})])],-1),n("div",{class:"cell-status",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"60%"}})],-1),n("div",{class:"cell-views num",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"40%"}})],-1),n("div",{class:"cell-expires",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"55%"}})],-1),n("div",{class:"cell-actions",role:"cell"},null,-1)])])):p("v-if",!0)],64))),64)),(l(!0),d(K,null,ne(e.filteredItems,(r,a)=>(l(),d(K,{key:r?._type+":"+(r?._id||a)},[e.loading?p("v-if",!0):(l(),d("div",{key:0,class:P(["paper-table-row",{"repo-inactive":r?._statusKey=="expired"||r?._statusKey=="removed","repo-error":r?.status=="error","row-clickable":!!r?._viewUrl}]),role:"row",onClick:c=>e.openItem(r,c)},[n("div",JP,[n("span",{class:"project-type-icon",role:"img","aria-label":r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist",title:r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist"},[(l(),d("svg",XP,[n("use",{href:"#project-type-"+r._type},null,8,ZP)]))],8,QP),n("div",xP,[n("div",eI,[r?._viewUrl?(l(),d("a",{key:0,class:"repo-name",title:r._label,textContent:u(r?._label),href:e.safeUrl(r?._viewUrl)},null,8,tI)):p("v-if",!0),r?._viewUrl?p("v-if",!0):(l(),d("span",{key:1,class:"repo-name repo-name-static",textContent:u(r?._label)},null,8,nI)),r?.role==="coauthor"?(l(),d("span",oI,"Co-author")):p("v-if",!0)]),n("div",sI,[r?._id?(l(),d("code",{key:0,class:"anonymous-id",title:r._id},u(r._id),9,iI)):p("v-if",!0),r?._type==="repo"&&r?.source?.commit?(l(),d("span",{key:1,class:"commit-hash",title:r.source.commit},u(r.source.commit.substring(0,8)),9,rI)):p("v-if",!0),r?.conference?(l(),d("span",{key:2,class:"cell-conf conf-tag",title:r?.conference},[t[56]||(t[56]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),t[57]||(t[57]=v()),n("span",{textContent:u(r?.conference)},null,8,lI)],8,aI)):p("v-if",!0)])])]),n("div",dI,[n("div",uI,[n("div",cI,[n("span",{class:P(["status-dot","status-"+r?._statusKey]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:u(e.fmt?.statusLabel(r?.status))},null,8,pI)]),r?.status=="error"&&r?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:u(e.fmt?.statusMsg(r?.statusMessage)),title:r?.statusMessage},null,8,fI)):p("v-if",!0),r?._stale?(l(),d("div",{key:1,class:"status-sub status-sub-warn",title:"Last activity "+e.fmt?.humanTime(r?.anonymizeDate||r?.lastView)}," Last activity "+u(e.fmt?.humanTime(r?.anonymizeDate||r?.lastView))+" \xB7 may be stuck ",9,hI)):p("v-if",!0),r.status==="error"&&r._editUrl?(l(),d("a",{key:2,class:"project-attention-action",href:e.safeUrl(r._editUrl)},"Fix source",8,mI)):p("v-if",!0),r._stale||r._broken?(l(),d("button",{key:3,type:"button",class:"project-attention-action",onClick:de(c=>e.showProjectDetails(r),["stop"])},u(r._broken?"Review details":"Check progress"),9,vI)):p("v-if",!0),r?.status!="error"&&!r?._stale&&r?.anonymizeDate?(l(),d("div",gI," anonymized "+u(e.fmt?.humanTime(r?.anonymizeDate)),1)):p("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","aria-label":e.fmt.number(r.pageView)+" views"},[t[58]||(t[58]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),n("span",null,u(e.fmt.number(r.pageView)),1)],8,yI),n("div",bI,[t[59]||(t[59]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),r?._expiry?.kind==="never"?(l(),d("span",wI,"Never")):p("v-if",!0),r?._expiry?.kind==="date"?(l(),d("span",{key:1,textContent:u(e.fmt?.humanTime(r?._expiry?.date))},null,8,kI)):p("v-if",!0),r?._expiry?.kind==="expired"&&r?._expiry?.date?(l(),d("span",EI,"Expired "+u(e.fmt?.humanTime(r?._expiry?.date)),1)):p("v-if",!0),r?._expiry?.kind==="expired"&&!r?._expiry?.date?(l(),d("span",CI,"Expired")):p("v-if",!0),r?._expiry?.kind==="none"?(l(),d("span",SI,"\u2014")):p("v-if",!0)])]),n("div",_I,[r._viewUrl?(l(),d("button",{key:0,type:"button",class:"copy-link-inline",onClick:de(c=>e.copyLink(r),["stop"]),disabled:!!e.copyingId,title:"Copy anonymous link for "+r._label,"aria-label":"Copy anonymous link for "+r._label},[...t[60]||(t[60]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-copy"})],-1)])],8,NI)):p("v-if",!0),r._broken?(l(),d("button",{key:1,type:"button",class:"project-details-button",onClick:de(c=>e.showProjectDetails(r),["stop"]),"data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Details",8,RI)):p("v-if",!0),r?._broken?p("v-if",!0):(l(),d("div",DI,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-label":"Actions for "+r?._name},[...t[61]||(t[61]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,TI),n("div",AI,[n("button",{type:"button",class:"dropdown-item",onClick:c=>e.showProjectDetails(r),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Project details & name",8,OI),n("a",{class:"dropdown-item",href:e.safeUrl(r?._viewUrl)}," View ",8,PI),r?._type==="repo"&&r?.options?.page&&r?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+r?.repoId+"/")}," View page ",8,II)):p("v-if",!0),r?._viewUrl?(l(),d("button",{key:1,type:"button",class:"dropdown-item",onClick:c=>e.copyLink(r),disabled:!!e.copyingId}," Copy anonymous link ",8,VI)):p("v-if",!0),n("a",{class:"dropdown-item",href:e.safeUrl(r?._editUrl)}," Edit ",8,qI),r?.status=="ready"||r?.status=="error"?(l(),d("button",{key:2,type:"button",class:"dropdown-item",onClick:c=>e.refreshItem(r)}," Force update ",8,MI)):p("v-if",!0),r?.status=="removed"?(l(),d("button",{key:3,type:"button",class:"dropdown-item",onClick:c=>e.refreshItem(r)}," Enable ",8,UI)):p("v-if",!0),r?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"dropdown-item",onClick:c=>e.extendItem(r)}," Extend 6 months ",8,$I)):p("v-if",!0),(r?.status=="ready"||r?.status=="expired"||r?.status=="error")&&r?.role!=="coauthor"?(l(),d("div",LI,[t[62]||(t[62]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:c=>e.removeItem(r)}," Remove ",8,FI)])):p("v-if",!0)])]))])],10,YP)),!e.loading&&e.selectedProject===r?(l(),d("div",BI,[n("div",{class:"project-details",role:"cell","aria-colspan":"5",id:e.projectDetailsId(r),tabindex:"-1",onKeydown:An(de(c=>e.closeProjectDetails(r),["stop"]),["esc"])},[n("div",zI,[t[64]||(t[64]=n("h2",null,"Project details",-1)),n("button",{type:"button",class:"project-close",onClick:c=>e.closeProjectDetails(r),"aria-label":"Close project details"},[...t[63]||(t[63]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,jI)]),n("dl",GI,[n("div",null,[t[65]||(t[65]=n("dt",null,"Source",-1)),n("dd",null,u(r._source||"Not available"),1)]),n("div",null,[t[66]||(t[66]=n("dt",null,"Anonymous ID",-1)),n("dd",null,[n("code",null,u(r._id||"Missing identifier"),1)])]),r.source?.commit?(l(),d("div",WI,[t[67]||(t[67]=n("dt",null,"Commit",-1)),n("dd",null,[n("code",null,u(r.source.commit),1)])])):p("v-if",!0),r.conference?(l(),d("div",KI,[t[68]||(t[68]=n("dt",null,"Conference",-1)),n("dd",null,u(r.conference),1)])):p("v-if",!0),n("div",null,[t[69]||(t[69]=n("dt",null,"Status",-1)),n("dd",null,[v(u(e.fmt.statusLabel(r.status)),1),r.statusMessage?(l(),d("span",YI," \xB7 "+u(e.fmt.statusMsg(r.statusMessage)),1)):p("v-if",!0)])]),r.anonymizeDate?(l(),d("div",JI,[t[70]||(t[70]=n("dt",null,"Last anonymized",-1)),n("dd",null,u(e.fmt.humanTime(r.anonymizeDate)),1)])):p("v-if",!0)]),r._stale?(l(),d("p",QI,"This download has not progressed recently. Check the source access and selected branch before retrying.")):p("v-if",!0),r._editUrl?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl(r._editUrl)},u(e.needsAttention(r)?"Check source settings":"Edit anonymization settings"),9,XI)):p("v-if",!0),r._id?(l(),d("form",{key:2,class:"project-name-form",onSubmit:de(c=>e.saveProjectName(r),["prevent"])},[n("label",{for:"project-name-"+r._type+"-"+r._id},"Project name",8,xI),n("p",{id:"project-name-help-"+r._type+"-"+r._id},"Only you see this name. Leave it blank to use the default.",8,e4),n("div",t4,[D(n("input",{class:"form-control",type:"text",id:"project-name-"+r._type+"-"+r._id,"aria-describedby":"project-name-help-"+r._type+"-"+r._id,maxlength:"100","onUpdate:modelValue":t[18]||(t[18]=c=>e.projectName=c),disabled:e.nameSaving},null,8,n4),[[wt,e.projectName]]),n("button",{class:"btn btn-ink",type:"submit",disabled:e.nameSaving},u(e.nameSaving?"Saving\u2026":"Save name"),9,o4)]),e.nameError?(l(),d("p",s4,u(e.nameError),1)):p("v-if",!0),e.nameMessage?(l(),d("p",i4,u(e.nameMessage),1)):p("v-if",!0)],40,ZI)):p("v-if",!0)],40,HI)])):p("v-if",!0)],64))),128)),!e.loading&&e.filteredItems?.length==0?(l(),d("div",r4,[t[72]||(t[72]=n("svg",{class:"project-type-svg project-empty-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.hasProjects()?p("v-if",!0):(l(),d("span",a4,"You have no anonymizations yet.")),e.hasProjects()?(l(),d("span",l4,"Nothing matches the current filters.")):p("v-if",!0),n("div",d4,[e.hasActiveFilters()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=r=>e.clearFilters())},"Clear filters")):p("v-if",!0),e.hasProjects()?p("v-if",!0):(l(),d("a",u4,[...t[71]||(t[71]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),v(" New anonymization",-1)])]))])])):p("v-if",!0)],8,BP)]),e.dashboardCursor||e.dashboardError?(l(),d("div",c4,[e.dashboardError?(l(),d("p",p4,u(e.dashboardError),1)):p("v-if",!0),e.dashboardCursor?(l(),d("button",{key:1,type:"button",class:"btn",onClick:t[20]||(t[20]=r=>e.loadMoreProjects()),disabled:e.loadingMore},u(e.loadingMore?"Loading\u2026":"Load more projects"),9,f4)):p("v-if",!0)])):p("v-if",!0)])}var h4={class:"explorer-page"},m4=["aria-label"],v4={class:"ui-icon","aria-hidden":"true"},g4=["href"],y4=["textContent"],b4={class:"leftCol-head"},w4={class:"leftCol-search"},k4={class:"tree-search-box"},E4=["href"],C4={type:"text",class:"tree-search-input",placeholder:"Search files","aria-label":"Search files"},S4={class:"leftCol-project-header"},_4=["textContent","title"],N4={key:0,class:"project-file-count"},R4=["title"],D4={class:"leftCol-body"},T4={key:0,class:"paper-inline-warning",role:"alert"},A4={key:1,class:"paper-inline-warning",role:"alert"},O4={class:"leftCol-foot"},P4=["title"],I4=["title"],V4=["title"],q4={key:2,class:"last-update",title:"Older repositories have no recorded publication date. The source commit date does not establish when files became available here."},M4={class:"explorer-main"},U4={class:"status-bar"},$4={class:"breadcrumb paths","aria-label":"Path"},L4=["textContent"],F4={class:"status-bar-actions"},B4=["href"],H4={class:"d-none d-md-inline"},z4={class:"ui-icon","aria-hidden":"true"},j4=["href"],G4={class:"d-none d-md-inline"},W4=["href"],K4=["href"],Y4=["href"],J4=["href"],Q4={class:"explorer-content"};function jl(e,t){let o=Ge("tree"),i=Ge("partial-view"),s=ge("field");return l(),d("div",h4,[D(n("button",{class:"sidebar-toggle",onClick:t[0]||(t[0]=r=>e.sidebarCollapsed=!e.sidebarCollapsed),"aria-label":e.sidebarCollapsed?"Show files":"Hide files"},[(l(),d("svg",v4,[n("use",{href:e.sidebarCollapsed?"#ui-icon-folder":"#project-icon-close"},null,8,g4)])),n("span",{textContent:u(e.sidebarCollapsed?"Files":"Close")},null,8,y4)],8,m4),[[W,e.files?.length]]),D(n("div",{class:P(["leftCol",{collapsed:e.sidebarCollapsed}])},[n("div",b4,[t[7]||(t[7]=n("span",{class:"leftCol-eyebrow"},"Files",-1)),n("button",{class:"leftCol-close","aria-label":"Close files",onClick:t[1]||(t[1]=r=>e.sidebarCollapsed=!0)},[...t[6]||(t[6]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),n("div",w4,[n("div",k4,[(l(),d("svg",{class:P(["ui-icon tree-search-icon",{"fa-spin":e.fileSearchLoading}]),"aria-hidden":"true"},[n("use",{href:e.fileSearchLoading?"#ui-icon-spinner":"#ui-icon-search"},null,8,E4)],2)),D(n("input",C4,null,512),[[s,{state:e.viewState,set:r=>{e.fileSearchQuery=r},value:e.fileSearchQuery,form:null,options:{debounce:300},change:()=>{e.onFileSearchChange()}}]]),D(n("kbd",{class:"tree-search-kbd"},u(e.isMac?"\u2318":"Ctrl+")+"K",513),[[W,!e.fileSearchQuery]]),D(n("button",{class:"tree-search-clear","aria-label":"Clear search",onClick:t[2]||(t[2]=r=>{e.fileSearchQuery="",e.onFileSearchChange()})},"\xD7",512),[[W,e.fileSearchQuery]])])]),n("div",S4,[n("span",{class:"project-name",textContent:u(e.repoId),title:e.repoId},null,8,_4),e.fileCounts?.[""]!=null?(l(),d("span",N4,u(e.fileCounts[""])+" files",1)):p("v-if",!0),e.options?.expirationDate?(l(),d("span",{key:1,class:"project-expiry",title:e.options.expirationDate},[t[8]||(t[8]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),v(" Available until "+u(e.fmt?.date(e.options.expirationDate)),1)],8,R4)):p("v-if",!0)]),n("div",D4,[e.options?.truncatedFolders?.length>0?(l(),d("div",T4,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fmt?.translate("WARNINGS.repo_truncated")),1)])):p("v-if",!0),e.options?.hasSubmodules?(l(),d("div",A4,[t[10]||(t[10]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),v(" "+u(e.fmt?.translate("WARNINGS.submodules_not_included")),1)])):p("v-if",!0),Ce(o,{class:"files",file:e.files,"search-query":e.fileSearchQuery,"search-results":e.fileSearchResults,page:e.viewState},null,8,["file","search-query","search-results","page"])]),n("div",O4,[n("span",{class:"last-update",title:e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate},u(e.options?.sourceCommitDate?"Source commit":e.options?.anonymizedAt?"Anonymized":"Updated")+" "+u(e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),9,P4),e.options?.settingsSavedAt?(l(),d("span",{key:0,class:"last-update",title:e.options.settingsSavedAt}," Settings saved "+u(e.fmt?.date(e.options.settingsSavedAt)),9,I4)):p("v-if",!0),e.options?.publishedAt?(l(),d("span",{key:1,class:"last-update",title:e.options.publishedAt}," Snapshot ready "+u(e.fmt?.date(e.options.publishedAt)),9,V4)):p("v-if",!0),e.options?.anonymizedAt&&!e.options?.publishedAt?(l(),d("span",q4," Snapshot ready date not recorded ")):p("v-if",!0)])],2),[[W,e.files?.length]]),D(n("div",{class:"leftCol-backdrop",onClick:t[3]||(t[3]=r=>e.sidebarCollapsed=!0)},null,512),[[W,e.files?.length&&!e.sidebarCollapsed]]),n("div",M4,[D(n("div",U4,[n("ol",$4,[(l(!0),d(K,null,ne(e.paths,(r,a)=>(l(),d("li",{class:"breadcrumb-item",textContent:u(r)},null,8,L4))),256))]),n("div",F4,[e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[11]||(t[11]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,B4)):p("v-if",!0),e.type=="html-doc"&&!e.showSource?(l(),d("button",{key:1,class:P(["btn btn-sm",{"btn-active":e.allowScripts}]),"aria-label":"Allow this document to run JavaScript",title:"Scripts in this file are blocked by default. Enable them only if you trust the repository \u2014 the document stays isolated from your session either way.",onClick:t[4]||(t[4]=r=>e.toggleAllowScripts())},[t[12]||(t[12]=n("i",{class:"fab fa-js"},null,-1)),n("span",H4,u(e.allowScripts?"JS on":"JS off"),1)],2)):p("v-if",!0),e.type=="html-doc"?(l(),d("button",{key:2,class:"btn btn-sm","aria-label":"Toggle between the rendered document and its source",title:"Toggle between the rendered document and its source",onClick:t[5]||(t[5]=r=>e.toggleSource())},[(l(),d("svg",z4,[n("use",{href:e.showSource?"#project-icon-eye":"#ui-icon-code"},null,8,j4)])),n("span",G4,u(e.showSource?"Rendered":"Source"),1)])):p("v-if",!0),D(n("a",{target:"_self",class:"btn btn-sm btn-icon-only","aria-label":"View raw current file",title:"View raw file",href:e.safeUrl(e.url)},[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1)])],8,W4),[[W,e.content!=null&&e.type!="error"&&e.type!="rate_limited"]]),D(n("a",{target:"_self",class:"btn btn-sm btn-icon-only","aria-label":"Download current file",title:"Download this file",href:e.safeUrl(e.url+"&download=true")},[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,K4),[[W,e.content!=null&&e.type!="error"&&e.type!="rate_limited"]]),e.options?.download?(l(),d("a",{key:3,target:"_self",class:"btn btn-sm btn-ink","aria-label":"Download repository as ZIP",title:"Download the whole repository as a ZIP archive",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),n("span",{class:"d-none d-md-inline"}," Download repository",-1)])],8,Y4)):p("v-if",!0),e.options?.hasWebsite?(l(),d("a",{key:4,target:"_self",class:"btn btn-sm","aria-label":"Website",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),n("span",{class:"d-none d-md-inline"}," Website",-1)])],8,J4)):p("v-if",!0)])],512),[[W,e.type!="error"||e.files?.length]]),n("div",Q4,[Ce(i,{name:"partials/pageView.htm",state:e.viewState},null,8,["state"])])])])}var X4={class:"paper-faq"};function Gl(e,t){return l(),d("div",X4,[...t[0]||(t[0]=[fe('
Help

Answers to the questions that come up most.

If something's missing, write to us \u2014 report a bug on GitHub.

',1),n("div",{class:"paper-faq-body"},[n("aside",{class:"paper-faq-toc"},[n("div",{class:"paper-faq-toc-head"},"Contents"),n("nav",null,[n("a",{href:"#faq-general"},"General"),n("a",{href:"#faq-plans"},"Plans and billing"),n("a",{href:"#faq-features"},"Features"),n("a",{href:"#faq-limitations"},"Limitations"),n("a",{href:"#faq-privacy"},"Privacy & Security"),n("a",{href:"#faq-hosting"},"Self-Hosting")])]),n("section",{class:"faq-section","aria-label":"FAQs"},[n("div",null,[p(" General "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),v("General ")]),n("div",{class:"panel-group",id:"faq-general",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingWhatIs"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#whatIs","aria-expanded":"false","aria-controls":"whatIs"}," What is Anonymous GitHub? ")])]),n("div",{id:"whatIs",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingWhatIs"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub is an open-source tool with free hosting and optional paid plans that anonymizes GitHub repositories and pull requests for double-anonymous (double-blind) peer review. It replaces identifying information \u2014 such as the repository owner, organization name, and custom terms \u2014 so that reviewers cannot determine the identity of the authors through the code repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingHowWork"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#howWork","aria-expanded":"false","aria-controls":"howWork"}," How does Anonymous GitHub work? ")])]),n("div",{id:"howWork",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingHowWork"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies requests to GitHub on the fly. In both cases, the original and anonymized versions of files are cached on the server. The system automatically detects and replaces the repository owner, organization name, and repository name. You can also specify additional custom terms to anonymize using one-per-line regex patterns. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingScope"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#scope","aria-expanded":"false","aria-controls":"scope"}," What is the scope of anonymization? ")])]),n("div",{id:"scope",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingScope"},[n("div",{class:"panel-body p-3"},[n("p",null," In double-anonymous peer review, the boundary of anonymization is the paper plus its online appendix \u2014 not the entire internet. Searching for any part of the paper or the online appendix can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the repository owner, organization, repository name, file and directory names, and file contents across all text-based file types. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCost"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#cost","aria-expanded":"false","aria-controls":"cost"}," How much does it cost? ")])]),n("div",{id:"cost",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCost"},[n("div",{class:"panel-body p-3"},[n("p",null," A free account includes 5 owned repositories and 2 GiB of source files. Optional paid plans offer more capacity, automatic refresh, and, with an author subscription, never-expiring repositories. Reviewers can read shared repositories without an account or payment. "),n("p",null,[v(" See "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(" for available plans and current prices. Offers depend on whether payments are enabled on this instance; the checkout shows the amount before you pay. Subscriptions help fund hosting, storage, backups, and continued maintenance. ")]),n("p",null,[v(" You can also support development through "),n("a",{href:"https://github.com/sponsors/tdurieux/",target:"_blank",rel:"noopener"},"GitHub Sponsors"),v(" or "),n("a",{href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener"},"Ko-fi"),v(". Donations are separate from subscriptions and do not automatically unlock paid features. ")])])])])]),p(" Plans and billing "),n("h4",{class:"faq-cat",id:"faq-plans-title"},"Plans and billing"),n("div",{class:"panel-group",id:"faq-plans",role:"tablist","aria-label":"Plans and billing","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFreePlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#freePlan","aria-expanded":"false","aria-controls":"freePlan"},"What is included in a free account?")])]),n("div",{id:"freePlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFreePlan"},[n("div",{class:"panel-body p-3"},[n("p",null,"The default free allowance is 5 repositories you own and 2 GiB of source files in total. Core anonymization and reviewer access remain free. You can manually refresh a repository within your allowance and choose a dated expiration up to one year ahead."),n("p",null,"Repositories shared with you as a coauthor do not use your own slots. Gists and pull requests are not included in these repository quotas. The usage shown in your account is the allowance available on this instance.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingAuthorPlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#authorPlans","aria-expanded":"false","aria-controls":"authorPlans"},"What do monthly and annual author subscriptions include?")])]),n("div",{id:"authorPlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingAuthorPlans"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Both include 20 owned repositories and 10 GiB of source files in total. They also allow automatic refresh when enabled in repository settings and let the owner choose "),n("strong",null,"Never expire"),v(".")]),n("p",null,[v("Monthly and annual plans offer the same features with different billing periods. They renew automatically until you cancel renewal. Current prices are shown in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(".")]),n("p",null,"Paid plans do not change how anonymization works. File-size limits and other service safeguards still apply. Review your anonymized content before sharing it.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingReviewPass"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#reviewPass","aria-expanded":"false","aria-controls":"reviewPass"},"Can I pay for one repository without subscribing?")])]),n("div",{id:"reviewPass",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingReviewPass"},[n("div",{class:"panel-body p-3"},[n("p",null,"The author review pass covers one selected repository for 180 days, with a separate 2 GiB allowance and automatic refresh when enabled. It is a one-time purchase and does not renew automatically."),n("p",null,[v("Enter the anonymized ID of an existing repository you own in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(". A pass does not unlock Never expire and does not override the repository's chosen expiration date.")])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConferencePlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#conferencePlans","aria-expanded":"false","aria-controls":"conferencePlans"},"Can a conference or lab pay for a group?")])]),n("div",{id:"conferencePlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConferencePlans"},[n("div",{class:"panel-body p-3"},[n("p",null,"A conference review package provides a shared allowance of 100 repositories and 50 GiB for a review window of up to 180 days. The organizer pays once; the package does not renew automatically. A lab organizing a review can use this shared package too."),n("p",null,"The paid conference must be activated by payment before authors can submit under its Conference ID. Eligible repositories use the conference allowance before an author's personal allowance, so authors do not each need a subscription for that capacity."),n("p",null,"The package has a fixed review window. Never expire still requires the repository owner's monthly or annual author subscription. See the available offer when creating a conference.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaidCoauthors"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paidCoauthors","aria-expanded":"false","aria-controls":"paidCoauthors"},"Does every coauthor need to pay?")])]),n("div",{id:"paidCoauthors",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaidCoauthors"},[n("div",{class:"panel-body p-3"},[n("p",null,"No. Coauthors can collaborate without buying a subscription. A shared repository uses its owner's allowance, unless a repository pass or paid conference covers it. It does not consume each coauthor's personal allowance."),n("p",null,"A coauthor's subscription does not increase the owner's allowance. If the owner's available capacity is exhausted, a coauthor's refresh or edit may also be blocked. Reviewers never need a paid account.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCapacity"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#capacity","aria-expanded":"false","aria-controls":"capacity"},"What counts toward my allowance, and what happens at the limit?")])]),n("div",{id:"capacity",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCapacity"},[n("div",{class:"panel-body p-3"},[n("p",null,"The repository limit counts work you own. Storage counts the source-file sizes reserved for those repositories, not just files a reviewer opens. Archived or failed repositories can still reserve capacity, and a refresh does not automatically reduce a previous storage reservation."),n("p",null,"At the repository limit you cannot add another repository to that allowance. An edit or refresh must also fit the available storage. Remove work you no longer need, choose a paid plan, or use an eligible conference allowance."),n("p",null,"Removing a repository releases its reservation when capacity is next checked. Expired repositories may continue to reserve capacity until cleanup. Reaching a limit does not itself delete existing review links.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingNeverExpire"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#neverExpire","aria-expanded":"false","aria-controls":"neverExpire"},"What happens to Never expire repositories if I stop subscribing?")])]),n("div",{id:"neverExpire",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingNeverExpire"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Never expire is available to monthly and annual author subscribers. If paid access ends, these repositories remain available for a "),n("strong",null,"90-day grace period"),v(", then expire and their hosted content is removed.")]),n("p",null,"Renewing during the grace period keeps them active. After expiration, you must renew and explicitly reactivate the repository; restoring content also requires access to its GitHub source. A repository does not become public on GitHub when it expires."),n("p",null,"Existing never-expiring repositories created before this billing policy retain their settings. Never expire is not a guarantee of perpetual service availability.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCancelPlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#cancelPlan","aria-expanded":"false","aria-controls":"cancelPlan"},"How do I cancel, and what happens after paid access ends?")])]),n("div",{id:"cancelPlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCancelPlan"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Open "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(" and choose "),n("strong",null,"Manage billing and invoices"),v(" to manage renewal. Cancelling renewal keeps subscription benefits until the end of the paid period.")]),n("p",null,"After paid access ends, repositories fall back to another eligible allowance or the free allowance. Automatic refresh pauses on the free allowance; manual refresh remains available within its limits. Existing review links keep their configured expiration dates, except paid Never expire repositories, which follow the 90-day grace period described above."),n("p",null,"A repository pass or conference package ends after its paid window without automatic renewal.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaymentHandling"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paymentHandling","aria-expanded":"false","aria-controls":"paymentHandling"},"How are payments handled?")])]),n("div",{id:"paymentHandling",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaymentHandling"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("Stripe processes checkout and billing management. Anonymous GitHub does not store your card details. You can access billing management and invoices from "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),v(".")]),n("p",null,[v("Paid access is activated after payment is confirmed. If checkout succeeds but your account has not updated, choose "),n("strong",null,"Refresh payment status"),v(" before trying another purchase. If paid plans are unavailable on this instance, no checkout is offered.")])])])])]),p(" Features "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})]),v("Features ")]),n("div",{class:"panel-group",id:"faq-features",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFormats"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#formats","aria-expanded":"false","aria-controls":"formats"}," Which file formats are supported? ")])]),n("div",{id:"formats",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFormats"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub can display and render a wide variety of file types: "),n("ul",null,[n("li",null,[n("strong",null,"Text and source code"),v(" \u2014 displayed with syntax highlighting")]),n("li",null,[n("strong",null,"Markdown"),v(" \u2014 rendered as formatted HTML")]),n("li",null,[n("strong",null,"Images"),v(" (PNG, JPG, SVG, etc.) \u2014 displayed inline")]),n("li",null,[n("strong",null,"PDFs"),v(" \u2014 rendered directly in the browser")]),n("li",null,[n("strong",null,"Jupyter Notebooks"),v(" \u2014 rendered with code cells and outputs")])]),n("p",null," Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to determine whether it is textual or binary. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPR"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#pullRequests","aria-expanded":"false","aria-controls":"pullRequests"}," Can I anonymize pull requests? ")])]),n("div",{id:"pullRequests",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPR"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository, and the system will automatically detect that it is a pull request and anonymize it accordingly. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConference"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#conference","aria-expanded":"false","aria-controls":"conference"}," What is the Conference ID feature? ")])]),n("div",{id:"conference",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConference"},[n("div",{class:"panel-body p-3"},[n("p",null," When creating an anonymized repository, you can associate it with a Conference ID. This allows conferences to define default anonymization settings (such as expiration dates) that are automatically applied to repositories submitted under that conference. If your conference provides a Conference ID, enter it during the anonymization setup. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingExpiration"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#expiration","aria-expanded":"false","aria-controls":"expiration"}," What happens when an anonymized repository expires? ")])]),n("div",{id:"expiration",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingExpiration"},[n("div",{class:"panel-body p-3"},[n("p",null," You can configure one of three expiration strategies when creating your anonymized repository: "),n("ul",null,[n("li",null,[n("strong",null,"Never expire"),v(": with a monthly or annual author subscription, no scheduled expiration while subscribed. A 90-day grace period applies after paid access ends. See "),n("a",{href:"#neverExpire"},"the subscription expiration policy"),v(".")]),n("li",null,[n("strong",null,"Redirect to GitHub"),v(" \u2014 after expiration, visitors are redirected to the original GitHub repository.")]),n("li",null,[n("strong",null,"Remove content"),v(" \u2014 after expiration, the anonymized content is deleted from the server.")])])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDownload"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#download","aria-expanded":"false","aria-controls":"download"}," Can I download an anonymized repository? ")])]),n("div",{id:"download",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDownload"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers want to build or test the code locally. The downloaded archive contains the fully anonymized version of the repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingUpdates"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#updates","aria-expanded":"false","aria-controls":"updates"}," Are updates to the original repository reflected in the anonymized version? ")])]),n("div",{id:"updates",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingUpdates"},[n("div",{class:"panel-body p-3"},[n("p",null," You can refresh the anonymized repository from GitHub without creating a new share link. Free accounts can request a manual refresh within their allowance. Automatic refresh requires an eligible paid allowance and must be enabled in repository settings. It pauses when the repository falls back to the free allowance. "),n("p",null," After changing files or contributor names, review your anonymization terms before sharing the updated content. If GitHub access is revoked or the source is deleted, the service cannot fetch updates. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCLI"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#cli","aria-expanded":"false","aria-controls":"cli"}," Is there a command-line tool? ")])]),n("div",{id:"cli",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCLI"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally, generating an anonymized ZIP file on your machine. Install it via npm: "),n("pre",{style:{"background-color":"var(--hover-bg-color)",padding:"12px","border-radius":"4px","margin-top":"8px",color:"var(--color)"}},[n("code",null,`npm install -g @tdurieux/anonymous_github +anonymous_github`)])])])])]),p(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),v("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),p(" Privacy & Security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),v("Privacy & Security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Repository data is used to provide the anonymization service. If you purchase a plan, Stripe processes payment and billing information. When a repository is removed or expires, only its configuration is retained \u2014 this makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[v("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),v(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),p(" Self-Hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),v("Self-Hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[v(" Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment. Billing is optional and disabled by default for self-hosted instances; paid hosted plans are not required to run your own server. You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup instructions are available on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/",target:"_blank"},"GitHub repository"),v(". ")]),n("p",null," The basic steps are: "),n("ol",null,[n("li",null,"Clone the repository and install dependencies"),n("li",null,[v("Create a "),n("code",null,".env"),v(" file with your GitHub token, OAuth client ID, and client secret")]),n("li",null,[v("Run "),n("code",null,"docker-compose up -d")])])])])])]),n("div",{class:"text-center mt-5 mb-5 p-4",style:{"background-color":"var(--hover-bg-color)","border-radius":"8px"}},[n("p",{class:"mb-2",style:{"font-size":"1.1rem"}}," Still have questions? "),n("p",{class:"text-muted mb-0"},[v(" Open an issue on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/issues",target:"_blank"},"GitHub repository"),v(" and we'll be happy to help. ")])])])])],-1)])])}var Z4={class:"pr-page"},x4={class:"container paper-page pr-page-inner"},e3={class:"pr-header"},t3={class:"pr-title-row"},n3={class:"paper-page-title pr-title"},o3=["textContent"],s3={key:1,class:"text-muted"},i3=["href"],r3={class:"pr-header-meta"},a3={key:0,class:"pr-meta-item"},l3=["textContent"],d3={key:1,class:"pr-meta-item"},u3=["textContent"],c3={key:2,class:"pr-meta-item"},p3=["textContent"],f3={key:0,class:"paper-tabs",role:"tablist"},h3=["aria-selected","tabindex"],m3=["textContent"],v3=["aria-selected","tabindex"],g3=["textContent"],y3={class:"paper-tab-content"},b3={key:0,role:"tabpanel",id:"gist-files-panel","aria-labelledby":"gist-files-tab"},w3={class:"pr-comments"},k3={class:"pr-comment"},E3={class:"pr-comment-head"},C3=["textContent"],S3={key:0,class:"pr-comment-date"},_3={key:0,class:"paper-table-empty"},N3={key:1,role:"tabpanel",id:"gist-comments-panel","aria-labelledby":"gist-comments-tab"},R3={class:"pr-comments"},D3={class:"pr-comment"},T3={class:"pr-comment-head"},A3={key:0,class:"pr-comment-author"},O3=["textContent"],P3=["textContent"],I3={key:0,class:"pr-comment-body"},V3={key:0,class:"paper-table-empty"};function Wl(e,t){let o=Ge("gist-file"),i=Ge("markdown");return l(),d("div",Z4,[n("div",x4,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),v(" \xA0/\xA0 "),n("span",{class:"here"},"Gist")],-1)),n("header",e3,[n("div",t3,[n("h1",n3,[e.details?.description?(l(),d("span",{key:0,textContent:u(e.details?.description)},null,8,o3)):p("v-if",!0),e.details?.description?p("v-if",!0):(l(),d("span",s3,"Untitled gist"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/gist-anonymize/"+e.gistId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,i3)):p("v-if",!0)]),n("div",r3,[n("span",{class:P(["paper-pill",{good:e.details?.isPublic,warn:!e.details?.isPublic}])},u(e.details?.isPublic?"Public":"Secret"),3),e.details?.ownerLogin?(l(),d("span",a3,[t[5]||(t[5]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[6]||(t[6]=v(" @",-1)),n("span",{textContent:u(e.details?.ownerLogin)},null,8,l3)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",d3,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=v()),n("span",{textContent:u(e.fmt?.date(e.details?.updatedDate))},null,8,u3)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",c3,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=v(" Anonymized ",-1)),n("span",{textContent:u(e.fmt?.date(e.details?.anonymizeDate))},null,8,p3)])):p("v-if",!0)])]),e.details?.files&&e.details?.files?.length||e.details?.comments&&e.details?.comments?.length?(l(),d("nav",f3,[e.details?.files?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.tabState?.active=="files"}]),type:"button",role:"tab",id:"gist-files-tab","aria-selected":e.tabState?.active==="files","aria-controls":"gist-files-panel",tabindex:e.tabState?.active==="files"?0:-1,onKeydown:t[0]||(t[0]=s=>e.previewTabKeydown(s)),onClick:t[1]||(t[1]=s=>e.tabState.active="files")},[t[11]||(t[11]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.files?.length,{0:"No files",one:"1 file",other:"{} files"}))},null,8,m3)],42,h3)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"gist-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"gist-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=s=>e.previewTabKeydown(s)),onClick:t[3]||(t[3]=s=>e.tabState.active="comments")},[t[12]||(t[12]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,g3)],42,v3)):p("v-if",!0)])):p("v-if",!0),n("div",y3,[e.details?.files&&e.tabState?.active=="files"?(l(),d("div",b3,[n("ul",w3,[(l(!0),d(K,null,ne(e.details?.files,(s,r)=>(l(),d("li",k3,[n("div",E3,[n("strong",{textContent:u(s?.filename)},null,8,C3),s?.language?(l(),d("span",S3,u(s?.language),1)):p("v-if",!0)]),Ce(o,{file:s},null,8,["file"])]))),256)),e.details?.files?.length?p("v-if",!0):(l(),d("li",_3,[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1),n("span",null,"No files in this gist.",-1)])]))])])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",N3,[n("ul",R3,[(l(!0),d(K,null,ne(e.details?.comments,(s,r)=>(l(),d("li",D3,[n("div",T3,[s?.author?(l(),d("span",A3,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=v(" @",-1)),n("span",{textContent:u(s?.author)},null,8,O3)])):p("v-if",!0),s?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(s?.updatedDate))},null,8,P3)):p("v-if",!0)]),s?.body?(l(),d("div",I3,[Ce(i,{content:s?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",V3,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this gist.",-1)])]))])])):p("v-if",!0)])])])}var q3={class:"collapse navbar-collapse",id:"navbarSupportedContent"},M3={class:"navbar-nav mr-auto smooth-scroll"},U3={key:0,class:"nav-item"},$3={key:1,class:"nav-item"},L3={key:2,class:"nav-item"},F3={key:3,class:"nav-item"},B3={class:"nav-item"},H3={key:4,class:"nav-item"},z3={class:"navbar-nav"},j3={key:0,class:"nav-item"},G3={key:1,class:"nav-item"},W3={key:2,class:"nav-item"},K3={key:3,class:"nav-item"},Y3={key:4,class:"nav-item"},J3={key:5,class:"nav-item dropdown user-chip-wrap"},Q3={class:"nav-link user-chip dropdown-toggle",href:"#",id:"navbarDropdownMenuLink",role:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},X3=["src"],Z3={class:"user-chip-name"},x3={class:"dropdown-menu dropdown-menu-right user-menu","aria-labelledby":"navbarDropdownMenuLink"},e5={class:"dropdown-header"},t5=["innerHTML"],n5=["disabled"],o5={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},s5={class:"email-prompt-actions"},i5=["disabled"],r5=["disabled"],a5=["disabled"];function Kl(e,t){return l(),d(K,null,[n("nav",{class:P(["navbar navbar-expand-lg",{"navbar-dark":e.isDarkMode}])},[t[19]||(t[19]=fe('Anonymous GitHubSupport',3)),n("div",q3,[n("ul",M3,[e.user?p("v-if",!0):(l(),d("li",U3,[n("a",{class:P(["nav-link",{active:e.path=="/"}]),href:"/"}," Home ",2)])),e.user?(l(),d("li",$3,[n("a",{class:P(["nav-link",{active:e.path=="/dashboard"}]),href:"/dashboard"},[...t[8]||(t[8]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-grid"})],-1),v(" My work ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",L3,[n("a",{class:P(["nav-link",{active:e.path=="/anonymize"||e.path=="/pull-request-anonymize"}]),href:"/anonymize"},[...t[9]||(t[9]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),v(" Anonymize ",-1)])],2)])):p("v-if",!0),e.user?(l(),d("li",F3,[n("a",{class:P(["nav-link",{active:e.path=="/conferences"}]),href:"/conferences"},[...t[10]||(t[10]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1),v(" Conferences ",-1)])],2)])):p("v-if",!0),n("li",B3,[n("a",{class:P(["nav-link",{active:e.path=="/faq"}]),href:"/faq"},[...t[11]||(t[11]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})],-1),v("FAQ",-1)])],2)]),e.user&&e.user?.isAdmin?(l(),d("li",H3,[n("a",{class:P(["nav-link",{active:e.path?.indexOf("/admin")===0}]),href:"/admin/"},[...t[12]||(t[12]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})],-1),v(" Admin ",-1)])],2)])):p("v-if",!0)]),n("ul",z3,[e.user||!e.isReviewerRoute?(l(),d("li",j3,[...t[13]||(t[13]=[n("a",{class:"nav-link nav-icon",target:"_blank",href:"https://github.com/tdurieux/anonymous_github/",title:"Anonymous GitHub source code","aria-label":"Anonymous GitHub source code on GitHub",rel:"noopener","data-offset":"30"},[n("i",{class:"fab fa-github","aria-hidden":"true"})],-1)])])):p("v-if",!0),p(` "Report a bug" is about this service. Reviewers who land on an anonymized repository often think it is about the paper, so the - label names the service and the tooltip says who to contact. `),t[18]||(t[18]=n("li",{class:"nav-item d-none d-lg-block"},[n("a",{class:"nav-link",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",title:"Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors.","data-offset":"30"},[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),v("Report a bug ")])],-1)),e.isDarkMode?p("v-if",!0):(l(),d("li",G3,[n("a",{class:"nav-link nav-icon",href:"#",title:"Switch to dark mode","aria-label":"Switch to dark mode",role:"button",onClick:t[0]||(t[0]=ae(o=>{e.darkMode(!0)},["prevent"]))},[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",W3,[n("a",{class:"nav-link nav-icon",href:"#",title:"Switch to light mode","aria-label":"Switch to light mode",role:"button",onClick:t[1]||(t[1]=ae(o=>{e.darkMode(!1)},["prevent"]))},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):p("v-if",!0),!e.user&&!e.isReviewerRoute?(l(),d("li",K3,[...t[16]||(t[16]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),v(" Sign in ")],-1)])])):p("v-if",!0),e.user?.username&&e.headerCanUpgrade&&!e.headerBillingPending?(l(),d("li",Y3,[n("a",{class:"nav-link nav-upgrade",href:"/profile?upgrade=1",onClick:t[2]||(t[2]=ae(o=>e.openHeaderUpgrade(),["prevent"]))},"Upgrade")])):p("v-if",!0),e.user?(l(),d("li",J3,[n("a",Q3,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,X3)):p("v-if",!0),n("span",Z3,u(e.user?.username),1)]),n("div",x3,[n("h6",e5,"Signed in as @"+u(e.user?.username),1),t[17]||(t[17]=fe('SettingsDefaults, quotas, accountGitHub connectionsRepository access and OAuthClaim an anonymizationAttach an existing mirror to your accountReport a bugAbout this service, not a paperSource codeSupport the projectSign out',9))])])):p("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,t5)):p("v-if",!0),e.emailPromptOpen?(l(),d("dialog",{key:1,id:"email-prompt",class:"email-prompt","aria-labelledby":"email-prompt-title","aria-describedby":"email-prompt-reason",onCancel:t[7]||(t[7]=ae(o=>e.respondToEmailPrompt("later"),["prevent"]))},[n("form",{onSubmit:t[6]||(t[6]=ae(o=>e.respondToEmailPrompt("save"),["prevent"]))},[t[20]||(t[20]=n("h2",{id:"email-prompt-title"},"Stay informed about access problems",-1)),t[21]||(t[21]=n("p",{id:"email-prompt-reason"},"Get email alerts when your GitHub token or repository access fails.",-1)),t[22]||(t[22]=n("label",{for:"email-prompt-address"},"Email address",-1)),D(n("input",{id:"email-prompt-address",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[3]||(t[3]=o=>e.emailPromptAddress=o),disabled:e.emailPromptBusy},null,8,n5),[[wt,e.emailPromptAddress]]),e.emailPromptError?(l(),d("p",o5,u(e.emailPromptError),1)):p("v-if",!0),n("div",s5,[n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[4]||(t[4]=o=>e.respondToEmailPrompt("later"))},"Remind me later",8,i5),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[5]||(t[5]=o=>e.respondToEmailPrompt("never"))},"Never",8,r5),n("button",{type:"submit",class:"btn btn-ink",disabled:e.emailPromptBusy},u(e.emailPromptBusy?"Saving\u2026":"Save"),9,a5)])],32)],32)):p("v-if",!0)],64)}var l5={class:"paper-landing"},d5={class:"paper-hero"},u5={class:"paper-hero-copy"},c5={class:"paper-cta-row"},p5={key:0,href:"/signin",target:"_self",class:"btn-hero"},f5={key:1,href:"/anonymize",class:"btn-hero"},h5={class:"paper-stats paper-wrap",id:"metrics","aria-label":"Usage over the last 60 days"},m5={class:"paper-stats-grid"},v5={class:"paper-stat-value"},g5={class:"paper-stat-label"},y5=["viewBox"],b5=["x","y","width","height"],w5={key:1,class:"paper-stat-delta"},k5={class:"paper-features paper-wrap","aria-label":"Product features"},E5={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},C5=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],S5={class:"paper-eyebrow"},_5={class:"paper-feature-title"},N5={class:"paper-feature-more"},R5={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},D5=["href","target"],T5={class:"paper-features-stage"},A5=["id","aria-labelledby"],O5={class:"paper-frame"},P5={class:"paper-frame-bar","aria-hidden":"true"},I5={class:"url"},V5=["src","alt"],q5={class:"paper-footer"},M5={class:"paper-footer-inner"},U5={class:"paper-footer-col"},$5={key:0,href:"/dashboard"},L5={key:1,href:"/conferences"},F5={class:"paper-footer-foot"};function Yl(e,t){return l(),d("div",l5,[p(" Hero: copy on the left, the product on the right "),n("section",d5,[n("div",u5,[t[2]||(t[2]=n("div",{class:"paper-eyebrow"},"For double-blind peer review",-1)),t[3]||(t[3]=n("h1",{class:"hero-title"},[v(" Share the code,"),n("br"),n("span",{class:"accent"},"not the author.")],-1)),t[4]||(t[4]=n("p",{class:"hero-subtitle"}," Anonymous GitHub makes a read-only mirror of your repository, pull request, or gist. It redacts the terms you choose in text files, so reviewers can browse your artifact through an anonymous link. ",-1)),n("div",c5,[e.user?p("v-if",!0):(l(),d("a",p5,[...t[0]||(t[0]=[n("i",{class:"fab fa-github mr-2","aria-hidden":"true"},null,-1),v("Sign in with GitHub ",-1)])])),e.user?(l(),d("a",f5," Anonymize a repository \u2192 ")):p("v-if",!0),t[1]||(t[1]=n("a",{class:"paper-link-arrow",target:"_self",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/"},"See an anonymized repository \u2192",-1))]),t[5]||(t[5]=n("ul",{class:"paper-reassure"},[n("li",null,"Free and open source"),n("li",null,"Read-only: never writes to your repos"),n("li",null,"Expires on the date you set")],-1))]),t[6]||(t[6]=fe('
A reviewer preview with the author, affiliation, and email replaced by anonymous terms
',1))]),p(" Proof "),t[16]||(t[16]=fe('
Trusted by authors at
ICSEFSEOOPSLA
',1)),p(" Live stats "),n("section",h5,[t[7]||(t[7]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},"Live \xB7 last 60 days"),n("div",{class:"paper-stats-meta-right"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),v(" updated daily ")])],-1)),n("div",m5,[(l(!0),d(K,null,te(e.cards,(o,i)=>(l(),d("div",{class:"paper-stat-card",key:o?.key},[n("div",v5,u(e.fmt?.bigNum(o?.total)),1),n("div",g5,u(o?.label),1),e.history[o?.key].bars?.length>1?(l(),d("svg",{key:0,class:"paper-stat-bars",preserveAspectRatio:"none","aria-hidden":"true",viewBox:"0 0 "+e.history[o?.key].viewW+" 36"},[(l(!0),d(K,null,te(e.history[o?.key].bars,(s,r)=>(l(),d("rect",{key:r,class:P({"is-latest":r===e.history[o.key].bars.length-1}),x:s?.x,y:s?.y,width:s?.w,height:s?.h},null,10,b5))),128))],8,y5)):p("v-if",!0),e.history[o?.key].bars?.length>1?(l(),d("div",w5," +"+u(e.fmt?.number(e.history[o?.key].deltaToday))+" today ",1)):p("v-if",!0)]))),128))])]),p(" Before / after "),t[17]||(t[17]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Before \xB7 after"),n("h2",null,[v("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),t[18]||(t[18]=n("div",{class:"paper-preview paper-wrap","aria-label":"Before and after example"},[n("div",{class:"pane"},[n("div",{class:"pane-header"},[n("span",{class:"pane-label"},"Before \xB7 your repo"),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")]),n("div",{class:"pane-body"},[n("div",null,[n("span",{class:"tok"},"#"),v(),n("strong",null,"DeepLearnUtils")]),n("div",null,"Developed by Jane Smith at MIT CSAIL."),n("div",null,"See Smith et\xA0al., \u201CAttention That Works,\u201D 2026."),n("div",null,"Contact: jane.smith@mit.edu")])]),n("div",{class:"pane"},[n("div",{class:"pane-header"},[n("span",{class:"pane-label"},"After \xB7 anonymous mirror"),n("span",{class:"pane-url"},"anonymous.4open.science/r/paper-7f2a")]),n("div",{class:"pane-body"},[n("div",null,[n("span",{class:"tok"},"#"),v(),n("strong",null,"DeepLearnUtils")]),n("div",null,[v("Developed by "),n("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),v(" at "),n("span",{class:"redact",role:"img","aria-label":"redacted affiliation"},"XXXX-2"),v(".")]),n("div",null,[v("See "),n("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),v(" et\xA0al., \u201CAttention That Works,\u201D 2026.")]),n("div",null,[v("Contact: "),n("span",{class:"redact",role:"img","aria-label":"redacted email address"},"XXXX-3")])])])],-1)),p(" What you get: one screenshot, three tabs "),t[19]||(t[19]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,[v("Anonymize, review, "),n("em",null,"manage.")])]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",k5,[n("div",E5,[(l(!0),d(K,null,te(e.features,(o,i)=>(l(),d("div",{class:P(["paper-feature",{"is-on":e.feature===o?.key}]),key:o?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(o.key),onKeydown:s=>e.featureKeydown(s,i),id:"feature-tab-"+o?.key,"aria-controls":"feature-panel-"+o?.key,"aria-selected":e.feature===o?.key,tabindex:e.feature===o?.key?0:-1},[n("span",S5,u(o?.num)+" \xB7 "+u(o?.eyebrow),1),n("span",_5,[v(u(o?.title)+" ",1),n("em",null,u(o?.accent),1)])],40,C5),n("div",N5,[n("span",R5,[v(u(o?.title)+" ",1),n("em",null,u(o?.accent),1)]),n("p",null,u(o?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(o)),target:e.featureTarget(o)},u(o?.cta)+" \u2192",9,D5)])],2))),128))]),n("div",T5,[(l(!0),d(K,null,te(e.features,(o,i)=>D((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:o?.key,id:"feature-panel-"+o?.key,"aria-labelledby":"feature-tab-"+o?.key},[n("div",O5,[n("div",P5,[t[8]||(t[8]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",I5,u(o?.url),1)]),n("div",{class:P("paper-crop paper-crop-"+o?.key)},[n("img",{loading:"lazy",width:"2880",height:"1800",src:e.safeUrl(o?.img),alt:o?.alt},null,8,V5)],2)])],8,A5)),[[W,e.feature===o?.key]])),128))])]),p(" FAQ teaser "),t[20]||(t[20]=fe('
Before you sign in

The questions that come up most.

Read the full FAQ \u2192
What access does GitHub sign-in require?

The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories.

Which file formats are supported?

Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged.

What happens when an anonymized repository expires?

You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over.

',1)),n("footer",q5,[n("div",M5,[t[12]||(t[12]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[v("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",U5,[t[9]||(t[9]=n("div",{class:"paper-footer-head"},"Product",-1)),t[10]||(t[10]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",$5,"My work")):p("v-if",!0),e.user?(l(),d("a",L5,"Conferences")):p("v-if",!0),t[11]||(t[11]=n("a",{href:"/faq"},"FAQ",-1))]),t[13]||(t[13]=fe('',2))]),t[15]||(t[15]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",F5,[n("span",null,"\xA9 "+u(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[14]||(t[14]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var B5={class:"paper-empty"},H5={class:"paper-empty-inner"},z5={key:0,class:"paper-eyebrow"},j5={key:1,class:"paper-eyebrow"},G5={key:2,class:"paper-empty-title"},W5=["textContent"];function Jl(e,t){return l(),d("div",B5,[n("div",H5,[e.error?p("v-if",!0):(l(),d("div",z5,"Working")),e.error?(l(),d("div",j5,"Error")):p("v-if",!0),e.error?p("v-if",!0):(l(),d("h1",G5,[...t[0]||(t[0]=[v(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:u(e.fmt.translate(e.error))},null,8,W5)):p("v-if",!0)])])}var K5={class:"container paper-page paper-settings"},Y5={class:"paper-crumbs"},J5={class:"here"},Q5={class:"paper-page-title"},X5={class:"paper-settings-body"},Z5={class:"paper-settings-toc"},x5={href:"#conf-billing"},eV={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},tV={id:"conf-basics",class:"paper-settings-section"},nV={class:"form-group"},oV={class:"invalid-feedback"},sV={class:"invalid-feedback"},iV={class:"form-group"},rV={class:"invalid-feedback"},aV={class:"form-group"},lV={class:"invalid-feedback"},dV={class:"invalid-feedback"},uV={id:"conf-window",class:"paper-settings-section"},cV={class:"form-grid-2"},pV={class:"form-group"},fV={class:"invalid-feedback"},hV={class:"invalid-feedback"},mV={class:"form-group"},vV={class:"invalid-feedback"},gV={class:"invalid-feedback"},yV={id:"conf-rendering",class:"paper-settings-section"},bV={class:"form-check"},wV={class:"form-check-input",type:"checkbox",id:"link",name:"link"},kV={class:"form-check"},EV={class:"form-check-input",type:"checkbox",id:"image",name:"image"},CV={class:"form-check"},SV={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},_V={class:"form-check"},NV={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},RV={id:"conf-features",class:"paper-settings-section"},DV={class:"form-check"},TV={class:"form-check-input",type:"checkbox",id:"update",name:"update"},AV={class:"form-check"},OV={class:"form-check-input",type:"checkbox",id:"page",name:"page"},PV={id:"conf-plan",class:"paper-settings-section"},IV={class:"paper-plan-grid"},VV=["disabled","value"],qV=["textContent"],MV={class:"paper-plan-price"},UV={class:"paper-plan-per"},$V=["innerHTML"],LV={key:0,id:"conf-billing",class:"paper-settings-section"},FV={class:"form-group"},BV={class:"form-group"},HV={class:"form-group"},zV={class:"form-group"},jV={class:"form-grid-3"},GV={class:"form-group"},WV={class:"form-group"},KV={class:"form-group"},YV={class:"form-group"},JV={class:"paper-settings-footer"},QV=["textContent"],XV=["textContent"],ZV=["disabled"];function Ql(e,t){let o=ge("paper-scrollspy"),i=ge("field"),s=ge("form");return l(),d("div",K5,[n("div",Y5,[t[1]||(t[1]=n("a",{href:"/dashboard"},"My work",-1)),t[2]||(t[2]=v(" \xA0/\xA0 ",-1)),t[3]||(t[3]=n("a",{href:"/conferences"},"Conferences",-1)),t[4]||(t[4]=v(" \xA0/\xA0 ",-1)),n("span",J5,u(e.editionMode?"Edit":"New"),1)]),n("h1",Q5,[v(u(e.editionMode?"Edit":"Create a")+" ",1),t[5]||(t[5]=n("em",null,"conference",-1))]),t[42]||(t[42]=n("p",{class:"paper-page-lede"}," Give chairs access to every anonymization submitted to a venue, and lift author quotas during the review window. ",-1)),n("div",X5,[D((l(),d("aside",Z5,[t[7]||(t[7]=n("div",{class:"paper-settings-toc-head"},"On this page",-1)),n("nav",null,[t[6]||(t[6]=fe('BasicsReview windowRendering defaultsFeaturesPlan',5)),D(n("a",x5,"Billing",512),[[W,e.plan?.pricePerRepo>0]])])])),[[o]]),D((l(),d("form",eV,[n("section",tV,[t[12]||(t[12]=n("div",{class:"paper-section-eyebrow"},"Basics",-1)),n("div",nV,[t[8]||(t[8]=n("label",{class:"paper-field-label",for:"name"},"Conference name",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.name?.invalid&&(e.conference?.name?.touched||e.conference?.submitted)}]),name:"name",id:"name",required:"",placeholder:"e.g. International Conference on Software Engineering"},null,2),[[i,{state:e.viewState,set:r=>{e.options.name=r},value:e.options?.name,form:"conference",options:{}}]]),D(n("div",oV," The name of the conference is invalid. ",512),[[W,e.conference?.name?.errors?.invalid]]),D(n("div",sV," The name of the conference is required. ",512),[[W,e.conference?.name?.errors?.required]])]),n("div",iV,[t[9]||(t[9]=n("label",{class:"paper-field-label",for:"url"},"Website",-1)),D(n("input",{type:"url",class:P(["form-control",{"is-invalid":e.conference?.url?.invalid&&(e.conference?.url?.touched||e.conference?.submitted)}]),name:"url",id:"url",placeholder:"https://example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.url=r},value:e.options?.url,form:"conference",options:{}}]]),D(n("div",rV," The url of the conference is invalid. ",512),[[W,e.conference?.url?.errors?.url]])]),n("div",aV,[t[10]||(t[10]=n("label",{class:"paper-field-label",for:"conferenceID"},"Conference ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.conferenceID?.invalid&&(e.conference?.conferenceID?.touched||e.conference?.submitted)}]),name:"conferenceID",id:"conferenceID",required:"",pattern:"[a-zA-Z0-9\\-_]{3,10}",placeholder:"ICSE26"},null,2),[[i,{state:e.viewState,set:r=>{e.options.conferenceID=r},value:e.options?.conferenceID,form:"conference",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},[v("3\u201310 characters, letters, numbers, "),n("code",null,"-"),v(" and "),n("code",null,"_"),v(". Authors reference this when they anonymize.")],-1)),D(n("div",{class:"invalid-feedback"}," The conference ID '"+u(e.options?.conferenceID)+"' is already used. ",513),[[W,e.conference?.conferenceID?.errors?.used]]),D(n("div",lV," The conference ID is required. ",512),[[W,e.conference?.conferenceID?.errors?.required]]),D(n("div",dV," The format of the conference ID is incorrect ([a-zA-Z0-9-_]{3,10}). ",512),[[W,e.conference?.conferenceID?.errors?.pattern]])])]),n("section",uV,[t[17]||(t[17]=n("div",{class:"paper-section-eyebrow"},"Review window",-1)),n("div",cV,[n("div",pV,[t[13]||(t[13]=n("label",{class:"paper-field-label",for:"startDate"},"Start date",-1)),D(n("input",{type:"date",class:P(["form-control",{"is-invalid":e.conference?.startDate?.invalid&&(e.conference?.startDate?.touched||e.conference?.submitted)}]),name:"startDate",id:"startDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.startDate=r},value:e.options?.startDate,form:"conference",options:{}}]]),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Beginning of the review process.",-1)),D(n("div",fV," Start date is required. ",512),[[W,e.conference?.startDate?.errors?.required]]),D(n("div",hV," Start date must be before end date. ",512),[[W,e.conference?.startDate?.errors?.invalid]])]),n("div",mV,[t[15]||(t[15]=n("label",{class:"paper-field-label",for:"endDate"},"End date",-1)),D(n("input",{type:"date",class:P(["form-control",{"is-invalid":e.conference?.endDate?.invalid&&(e.conference?.endDate?.touched||e.conference?.submitted)}]),name:"endDate",id:"endDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.endDate=r},value:e.options?.endDate,form:"conference",options:{}}]]),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"All repositories expire on this date.",-1)),D(n("div",vV," End date is required. ",512),[[W,e.conference?.endDate?.errors?.required]]),D(n("div",gV," End date is invalid. ",512),[[W,e.conference?.endDate?.errors?.invalid]])])])]),n("section",yV,[t[26]||(t[26]=n("div",{class:"paper-section-eyebrow"},"Rendering defaults",-1)),n("div",bV,[D(n("input",wV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.link=r},value:e.options?.options?.link,form:"conference",options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[19]||(t[19]=n("small",{class:"form-text text-muted"},"Keep or remove all links from text files.",-1))]),n("div",kV,[D(n("input",EV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.image=r},value:e.options?.options?.image,form:"conference",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[21]||(t[21]=n("small",{class:"form-text text-muted"},"Images are not anonymized.",-1))]),n("div",CV,[D(n("input",SV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.pdf=r},value:e.options?.options?.pdf,form:"conference",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[23]||(t[23]=n("small",{class:"form-text text-muted"},"PDFs are not anonymized.",-1))]),n("div",_V,[D(n("input",NV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.notebook=r},value:e.options?.options?.notebook,form:"conference",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1)),t[25]||(t[25]=n("small",{class:"form-text text-muted"},"Render Jupyter notebooks instead of raw JSON.",-1))])]),n("section",RV,[t[31]||(t[31]=n("div",{class:"paper-section-eyebrow"},"Features",-1)),n("div",DV,[D(n("input",TV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.update=r},value:e.options?.options?.update,form:"conference",options:{}}]]),t[27]||(t[27]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[28]||(t[28]=n("small",{class:"form-text text-muted"},"Pull the latest commit automatically (hourly maximum).",-1))]),n("div",AV,[D(n("input",OV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.page=r},value:e.options?.options?.page,form:"conference",options:{}}]]),t[29]||(t[29]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[30]||(t[30]=n("small",{class:"form-text text-muted"},"Enable anonymized GitHub pages.",-1))])]),n("section",PV,[t[32]||(t[32]=n("div",{class:"paper-section-eyebrow"},"Plan",-1)),t[33]||(t[33]=n("p",{class:"paper-section-copy"},"The review package is prepaid and covers up to 180 days. Pay from the conference page after creating it. Plan and review dates cannot change after creation.",-1)),n("div",IV,[(l(!0),d(K,null,te(e.plans,(r,a)=>(l(),d("label",{class:P(["paper-plan-card",{selected:e.options?.plan?.planID==r?.id}])},[D(n("input",{type:"radio",disabled:e.editionMode,name:"planPicker",value:r?.id},null,8,VV),[[i,{state:e.viewState,set:c=>{e.options.plan.planID=c},value:e.options?.plan?.planID,form:"conference",options:{}}]]),n("div",{class:"paper-plan-head",textContent:u(r?.name)},null,8,qV),n("div",MV,[v(u(r.id==="free_conference"?"Free":"Prepaid package")+" ",1),n("span",UV,u(r.id==="free_conference"?"":"Price on the conference page"),1)]),n("div",{class:"paper-plan-desc",innerHTML:e.sanitize(r?.description)},null,8,$V)],2))),256))])]),e.plan?.pricePerRepo>0?(l(),d("section",LV,[t[41]||(t[41]=n("div",{class:"paper-section-eyebrow"},"Billing",-1)),n("div",FV,[t[34]||(t[34]=n("label",{class:"paper-field-label",for:"billing_name"},"Name",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.billing_name?.invalid&&(e.conference?.billing_name?.touched||e.conference?.submitted)}]),name:"billing_name",id:"billing_name",required:"",placeholder:"First & last name"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.name=r},value:e.options?.billing?.name,form:"conference",options:{}}]])]),n("div",BV,[t[35]||(t[35]=n("label",{class:"paper-field-label",for:"email"},"Email",-1)),D(n("input",{type:"email",class:P(["form-control",{"is-invalid":e.conference?.email?.invalid&&(e.conference?.email?.touched||e.conference?.submitted)}]),name:"email",id:"email",required:"",placeholder:"you@example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.email=r},value:e.options?.billing?.email,form:"conference",options:{}}]])]),n("div",HV,[t[36]||(t[36]=n("label",{class:"paper-field-label",for:"inputAddress"},"Address",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.inputAddress?.invalid&&(e.conference?.inputAddress?.touched||e.conference?.submitted)}]),name:"inputAddress",id:"inputAddress",required:"",placeholder:"1234 Main St"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address=r},value:e.options?.billing?.address,form:"conference",options:{}}]])]),n("div",zV,[D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.inputAddress2?.invalid&&(e.conference?.inputAddress2?.touched||e.conference?.submitted)}]),name:"inputAddress2",id:"inputAddress2",placeholder:"Apartment, studio, or floor"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address2=r},value:e.options?.billing?.address2,form:"conference",options:{}}]])]),n("div",jV,[n("div",GV,[t[37]||(t[37]=n("label",{class:"paper-field-label",for:"city"},"City",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.city?.invalid&&(e.conference?.city?.touched||e.conference?.submitted)}]),name:"city",id:"city",required:"",placeholder:"City"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.city=r},value:e.options?.billing?.city,form:"conference",options:{}}]])]),n("div",WV,[t[38]||(t[38]=n("label",{class:"paper-field-label",for:"country"},"Country",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.country?.invalid&&(e.conference?.country?.touched||e.conference?.submitted)}]),name:"country",id:"country",required:"",placeholder:"Country"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.country=r},value:e.options?.billing?.country,form:"conference",options:{}}]])]),n("div",KV,[t[39]||(t[39]=n("label",{class:"paper-field-label",for:"zip"},"Zip",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.zip?.invalid&&(e.conference?.zip?.touched||e.conference?.submitted)}]),name:"zip",id:"zip",required:"",placeholder:"Zip"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.zip=r},value:e.options?.billing?.zip,form:"conference",options:{}}]])])]),n("div",YV,[t[40]||(t[40]=n("label",{class:"paper-field-label",for:"vat"},"VAT number",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.vat?.invalid&&(e.conference?.vat?.touched||e.conference?.submitted)}]),name:"vat",id:"vat",placeholder:"VAT Number"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.vat=r},value:e.options?.billing?.vat,form:"conference",options:{}}]])])])):p("v-if",!0),n("div",JV,[e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:u(e.error)},null,8,QV)):p("v-if",!0),e.message?(l(),d("div",{key:1,class:"alert alert-success",role:"alert",textContent:u(e.message)},null,8,XV)):p("v-if",!0),n("button",{id:"send",disabled:e.saving,type:"submit",class:"btn btn-ink",onClick:t[0]||(t[0]=ae(r=>e.submitForm(r,()=>{e.submit(r)}),["prevent"]))},u(e.saving?e.editionMode?"Updating\u2026":"Creating\u2026":e.editionMode?"Update conference":"Create conference"),9,ZV)])])),[[s,e.viewState]])])])}var xV={key:0},eq=["innerHTML"],tq={key:3},nq=["src"],oq=["src"],sq={key:7},iq={controls:"controls"},rq=["src"],aq={key:8},lq={key:9,class:"file-error container d-flex h-100"},dq={class:"paper-ratelimit-card m-auto",style:{"max-width":"520px"}},uq={class:"paper-error-msg"},cq={key:10,class:"file-error container d-flex h-100"},pq={class:"viewer-error paper-error-card file-error-card m-auto",role:"alert","aria-labelledby":"viewer-error-title"},fq={id:"viewer-error-title",class:"paper-empty-title"},hq={class:"paper-error-actions"},mq={key:0,href:"/",class:"btn btn-sm"},vq={key:1,href:"/faq",class:"btn btn-sm"},gq={key:2,class:"btn btn-outline-ink",href:"/dashboard"},yq={key:11,class:"file-error container d-flex h-100"},bq={key:12,class:"file-error container d-flex h-100"},wq={key:13,class:"file-error container d-flex h-100"},kq={key:14,class:"file-error container d-flex h-100"},Eq={class:"paper-empty-title m-auto"},Cq=["href"];function Xl(e,t){let o=Ge("html-doc"),i=Ge("pdfviewer"),s=Ge("notebook"),r=ge("code-editor");return l(),d(K,null,[e.type=="text"?D((l(),d("div",xV,null,512)),[[r,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="html"?(l(),d("div",{key:1,class:"file-content markdown-body",innerHTML:e.highlightRedactions(e.sanitize(e.content))},null,8,eq)):p("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),Ft(o,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):p("v-if",!0),(e.type=="code"||e.type=="html-doc"&&e.showSource)&&e.content!=null?D((l(),d("div",tq,null,512)),[[r,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="image"?(l(),d("img",{key:4,class:"image-content",src:e.safeUrl(e.url)},null,8,nq)):p("v-if",!0),e.type=="media"?(l(),d("iframe",{key:5,class:"h-100 overflow-auto w-100 b-0",src:e.safeUrl(e.url)},null,8,oq)):p("v-if",!0),e.type=="pdf"?(l(),Ft(i,{key:6,src:e.safeUrl(e.url)},null,8,["src"])):p("v-if",!0),e.type=="audio"?(l(),d("div",sq,[n("audio",iq,[n("source",{src:e.safeUrl(e.url)},null,8,rq)])])):p("v-if",!0),e.type=="IPython"?(l(),d("div",aq,[Ee(s,{file:e.url,content:e.content},null,8,["file","content"])])):p("v-if",!0),e.type=="rate_limited"?(l(),d("div",lq,[n("div",dq,[t[3]||(t[3]=fe('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",uq,[t[1]||(t[1]=v("This repository will be available in ",-1)),n("strong",null,u(e.rateLimitCountdown),1),t[2]||(t[2]=v(". The page will reload automatically.",-1))])])])):p("v-if",!0),e.type=="error"?(l(),d("div",cq,[n("section",pq,[n("h1",fq,u(e.fmt.translate(e.isSourceAccessError()?"VIEWER_ERRORS.access_title":"VIEWER_ERRORS.title")),1),n("p",null,u(e.fmt.translate("ERRORS."+e.content)),1),e.isSourceAccessError()?(l(),d(K,{key:0},[n("p",null,u(e.fmt.translate("VIEWER_ERRORS.reader_help")),1),n("p",null,u(e.fmt.translate("VIEWER_ERRORS.owner_help")),1)],64)):p("v-if",!0),n("div",hq,[e.isSourceAccessError()?p("v-if",!0):(l(),d("a",mq,"Back to home")),e.isSourceAccessError()?p("v-if",!0):(l(),d("a",vq,"Read the FAQ")),n("button",{type:"button",class:"btn btn-primary",onClick:t[0]||(t[0]=a=>e.retryContent())},u(e.fmt.translate("VIEWER_ERRORS.retry")),1),e.isSourceAccessError()?(l(),d("a",gq,u(e.fmt.translate("VIEWER_ERRORS.dashboard")),1)):p("v-if",!0)])])])):p("v-if",!0),e.type=="loading"&&!e.error?(l(),d("div",yq,[...t[4]||(t[4]=[n("h1",{class:"paper-empty-title m-auto"},"Loading\u2026",-1)])])):p("v-if",!0),e.type=="empty"?(l(),d("div",bq,[...t[5]||(t[5]=[n("h1",{class:"paper-empty-title m-auto"},[v("Empty "),n("em",null,"repository"),v(".")],-1)])])):p("v-if",!0),e.content==null&&e.type!="empty"?(l(),d("div",wq,[...t[6]||(t[6]=[n("h1",{class:"paper-empty-title m-auto"},[v("Empty "),n("em",null,"file"),v(".")],-1)])])):p("v-if",!0),e.type=="binary"?(l(),d("div",kq,[n("h1",Eq,[t[7]||(t[7]=v("Unsupported ",-1)),t[8]||(t[8]=n("em",null,"binary file",-1)),t[9]||(t[9]=v(". You can ",-1)),n("a",{target:"_blank",href:e.safeUrl(e.url+"&download=true")},"download it",8,Cq),t[10]||(t[10]=v(".",-1))])])):p("v-if",!0)],64)}var Sq={class:"container page dashboard-page paper-page"},_q={class:"row"},Nq={class:"w-100"},Rq={class:"w-100","aria-label":"Pull Requests","accept-charset":"UTF-8"},Dq={class:"d-flex flex-column flex-md-row align-items-md-center",style:{gap:"8px"}},Tq={class:"flex-grow-1"},Aq={type:"search",id:"search",class:"form-control","aria-label":"Find a pull request...",placeholder:"Find a pull request...",autocomplete:"off"},Oq={class:"d-flex flex-wrap",style:{gap:"6px"}},Pq={class:"dropdown"},Iq={class:"dropdown-menu","aria-labelledby":"dropdownSort"},Vq={class:"form-check dropdown-item"},qq={class:"form-check-input",type:"radio",name:"sort",id:"sortFullName",value:"fullName"},Mq={class:"form-check dropdown-item"},Uq={class:"form-check-input",type:"radio",name:"sort",id:"sortAnonymizeDate",value:"-anonymizeDate"},$q={class:"form-check dropdown-item"},Lq={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},Fq={class:"form-check dropdown-item"},Bq={class:"form-check-input",type:"radio",name:"sort",id:"sortLastView",value:"-lastView"},Hq={class:"form-check dropdown-item"},zq={class:"form-check-input",type:"radio",name:"sort",id:"sortPageView",value:"-pageView"},jq={class:"dropdown"},Gq={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},Wq={class:"form-check dropdown-item"},Kq={class:"form-check-input",type:"checkbox",name:"sort",id:"statusReady",value:"ready"},Yq={class:"form-check dropdown-item"},Jq={class:"form-check-input",type:"checkbox",name:"sort",id:"statusExpired",value:"expired"},Qq={class:"form-check dropdown-item"},Xq={class:"form-check-input",type:"checkbox",name:"sort",id:"statusRemoved",value:"removed"},Zq={class:"d-flex flex-wrap mt-2",style:{gap:"6px"}},xq={class:"filter-chip"},e8=["onClick"],t8={class:"repo-list w-100"},n8={class:"repo-list-item-content"},o8={class:"repo-list-item-main"},s8={class:"repo-list-item-header"},i8=["textContent","href"],r8=["textContent"],a8=["textContent"],l8={class:"repo-source"},d8=["href"],u8={class:"repo-date"},c8={class:"repo-meta"},p8={key:0,title:"Conference"},f8=["title"],h8=["title"],m8=["title"],v8={key:1},g8={class:"repo-list-item-actions"},y8={class:"dropdown"},b8={class:"dropdown-menu dropdown-menu-right"},w8=["href"],k8=["onClick"],E8=["onClick"],C8=["onClick"],S8=["href"],_8={key:0,class:"repo-list-empty"};function Zl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",Sq,[n("div",_q,[n("div",Nq,[t[12]||(t[12]=fe('
My work \xA0/\xA0 Pull requests

Anonymized pull requests

Track PR mirrors you\u2019ve created and their reviewer traffic.

',2)),p(" Search + filters row "),D((l(),d("form",Rq,[n("div",Dq,[n("div",Tq,[D(n("input",Aq,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",Oq,[n("div",Pq,[t[6]||(t[6]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Sort ",-1)),n("div",Iq,[t[5]||(t[5]=n("h6",{class:"dropdown-header"},"Select order",-1)),n("div",Vq,[D(n("input",qq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[0]||(t[0]=n("label",{class:"form-check-label",for:"sortFullName"},"Pull Request",-1))]),n("div",Mq,[D(n("input",Uq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[1]||(t[1]=n("label",{class:"form-check-label",for:"sortAnonymizeDate"},"Anonymize Date",-1))]),n("div",$q,[D(n("input",Lq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[2]||(t[2]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",Fq,[D(n("input",Bq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"sortLastView"},"Last View",-1))]),n("div",Hq,[D(n("input",zq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortPageView"},"Page View",-1))])])]),n("div",jq,[t[11]||(t[11]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Status ",-1)),n("div",Gq,[t[10]||(t[10]=n("h6",{class:"dropdown-header"},"Select status",-1)),n("div",Wq,[D(n("input",Kq,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.ready=s},value:e.filters?.status?.ready,form:null,options:{}}]]),t[7]||(t[7]=n("label",{class:"form-check-label",for:"statusReady"},"Ready",-1))]),n("div",Yq,[D(n("input",Jq,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.expired=s},value:e.filters?.status?.expired,form:null,options:{}}]]),t[8]||(t[8]=n("label",{class:"form-check-label",for:"statusExpired"},"Expired",-1))]),n("div",Qq,[D(n("input",Xq,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.removed=s},value:e.filters?.status?.removed,form:null,options:{}}]]),t[9]||(t[9]=n("label",{class:"form-check-label",for:"statusRemoved"},"Removed",-1))])])])])])])),[[i,e.viewState]]),p(" Active filter chips "),D(n("div",Zq,[(l(!0),d(K,null,te(e.filters?.status,(s,r,a)=>D((l(),d("span",xq,[v(u(e.fmt?.title(r))+" ",1),n("button",{type:"button",class:"filter-chip-close","aria-label":"Remove filter",onClick:c=>{e.filters.status[r]=!0}}," \xD7 ",8,e8)],512)),[[W,!s]])),256))],512),[[W,e.filters?.status?.ready===!1||e.filters?.status?.expired===!1||e.filters?.status?.removed===!1]])]),p(" Pull request list "),n("ul",t8,[(l(!0),d(K,null,te(e.filteredPullRequests,(s,r)=>(l(),d("li",{class:P(["repo-list-item",{"repo-inactive":s?.status=="expired"||s?.status=="removed"||s?.status=="error"}])},[n("div",n8,[n("div",o8,[n("div",s8,[n("a",{class:"repo-name",textContent:u(s?.pullRequestId),href:e.safeUrl("/pr/"+s?.pullRequestId)},null,8,i8),n("span",{class:P(["status-badge",{"status-removed":s?.status=="removed"||s?.status=="expired"||s?.status=="removing"||s?.status=="expiring","status-preparing":s?.status=="preparing"||s?.status=="download","status-ready":s?.status=="ready","status-error":s?.status=="error"}])},[n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,r8),s?.status=="error"?(l(),d("span",{key:0,textContent:u(": "+s?.statusMessage)},null,8,a8)):p("v-if",!0)],2)]),n("div",l8,[n("span",null,[t[13]||(t[13]=n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)),n("a",{href:e.safeUrl("https://github.com/"+s?.source?.repositoryFullName+"/pull/"+s?.source?.pullRequestId)},u(s?.source?.repositoryFullName)+"#"+u(s?.source?.pullRequestId),9,d8)]),n("span",{class:P(["status-badge",{"status-ready":s?.merged,"status-removed":s?.state=="open","status-error":s?.state=="closed"&&!s?.merged}]),style:{"font-size":"10px"}},u(e.fmt?.title(s?.merged?"merged":s?.state)),3),n("span",u8,"anonymized "+u(e.fmt?.humanTime(s?.anonymizeDate)),1)])]),n("div",c8,[s?.conference?(l(),d("span",p8,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),v(" "+u(s?.conference),1)])):p("v-if",!0),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Terms: "+s?.options?.terms?.join(", ")},[t[15]||(t[15]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),v(" "+u(e.fmt?.number(s?.options?.terms?.length)),1)],8,f8),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Views: "+e.fmt?.number(s?.pageView)},[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),v(" "+u(e.fmt?.number(s?.pageView)),1)],8,h8),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Last view: "+e.fmt?.date(s?.lastView)},[t[17]||(t[17]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-calendar"})],-1)),v(" "+u(e.fmt?.humanTime(s?.lastView)),1)],8,m8),s?.options?.expirationMode!="never"&&s?.status=="ready"?(l(),d("span",v8,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),v(" Expire: "+u(e.fmt?.humanTime(s?.options?.expirationDate)),1)])):p("v-if",!0)])]),n("div",g8,[n("div",y8,[t[24]||(t[24]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Actions ",-1)),n("div",b8,[n("a",{class:"dropdown-item",href:e.safeUrl("/pull-request-anonymize/"+s?.pullRequestId)},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit ",-1)])],8,w8),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.updatePullRequest(s),["prevent"])},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force update ",-1)])],8,k8),[[W,s?.status=="ready"||s?.status=="error"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.updatePullRequest(s),["prevent"])},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Enable ",-1)])],8,E8),[[W,s?.status=="removed"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:ae(a=>e.removePullRequest(s),["prevent"])},[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove ",-1)])],8,C8),[[W,s?.status=="ready"]]),n("a",{class:"dropdown-item",href:e.safeUrl("/pr/"+s?.pullRequestId+"/")},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View PR ",-1)])],8,S8)])])])],2))),256)),e.filteredPullRequests?.length==0?(l(),d("li",_8,[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No pull requests to display.",-1)])])):p("v-if",!0)])])])}var N8={class:"container paper-page user-settings"},R8={class:"settings-title"},D8={class:"settings-header-actions"},T8={class:"settings-nav","aria-label":"Settings"},A8=["aria-current","onClick"],O8={class:"settings-row"},P8={class:"form-control",id:"terms",name:"terms",rows:"3",placeholder:`Jane Smith + label names the service and the tooltip says who to contact. `),t[18]||(t[18]=n("li",{class:"nav-item d-none d-lg-block"},[n("a",{class:"nav-link",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",title:"Report a problem with the Anonymous GitHub service. Questions about an anonymized repository or paper go to its authors.","data-offset":"30"},[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),v("Report a bug ")])],-1)),e.isDarkMode?p("v-if",!0):(l(),d("li",G3,[n("a",{class:"nav-link nav-icon",href:"#",title:"Switch to dark mode","aria-label":"Switch to dark mode",role:"button",onClick:t[0]||(t[0]=de(o=>{e.darkMode(!0)},["prevent"]))},[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",W3,[n("a",{class:"nav-link nav-icon",href:"#",title:"Switch to light mode","aria-label":"Switch to light mode",role:"button",onClick:t[1]||(t[1]=de(o=>{e.darkMode(!1)},["prevent"]))},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):p("v-if",!0),!e.user&&!e.isReviewerRoute?(l(),d("li",K3,[...t[16]||(t[16]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),v(" Sign in ")],-1)])])):p("v-if",!0),e.user?.username&&e.headerCanUpgrade&&!e.headerBillingPending?(l(),d("li",Y3,[n("a",{class:"nav-link nav-upgrade",href:"/profile?upgrade=1",onClick:t[2]||(t[2]=de(o=>e.openHeaderUpgrade(),["prevent"]))},"Upgrade")])):p("v-if",!0),e.user?(l(),d("li",J3,[n("a",Q3,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,X3)):p("v-if",!0),n("span",Z3,u(e.user?.username),1)]),n("div",x3,[n("h6",e5,"Signed in as @"+u(e.user?.username),1),t[17]||(t[17]=fe('SettingsDefaults, quotas, accountGitHub connectionsRepository access and OAuthClaim an anonymizationAttach an existing mirror to your accountReport a bugAbout this service, not a paperSource codeSupport the projectSign out',9))])])):p("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,t5)):p("v-if",!0),e.emailPromptOpen?(l(),d("dialog",{key:1,id:"email-prompt",class:"email-prompt","aria-labelledby":"email-prompt-title","aria-describedby":"email-prompt-reason",onCancel:t[7]||(t[7]=de(o=>e.respondToEmailPrompt("later"),["prevent"]))},[n("form",{onSubmit:t[6]||(t[6]=de(o=>e.respondToEmailPrompt("save"),["prevent"]))},[t[20]||(t[20]=n("h2",{id:"email-prompt-title"},"Stay informed about access problems",-1)),t[21]||(t[21]=n("p",{id:"email-prompt-reason"},"Get email alerts when your GitHub token or repository access fails.",-1)),t[22]||(t[22]=n("label",{for:"email-prompt-address"},"Email address",-1)),D(n("input",{id:"email-prompt-address",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[3]||(t[3]=o=>e.emailPromptAddress=o),disabled:e.emailPromptBusy},null,8,n5),[[wt,e.emailPromptAddress]]),e.emailPromptError?(l(),d("p",o5,u(e.emailPromptError),1)):p("v-if",!0),n("div",s5,[n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[4]||(t[4]=o=>e.respondToEmailPrompt("later"))},"Remind me later",8,i5),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[5]||(t[5]=o=>e.respondToEmailPrompt("never"))},"Never",8,r5),n("button",{type:"submit",class:"btn btn-ink",disabled:e.emailPromptBusy},u(e.emailPromptBusy?"Saving\u2026":"Save"),9,a5)])],32)],32)):p("v-if",!0)],64)}var l5={class:"paper-landing"},d5={class:"paper-hero"},u5={class:"paper-hero-copy"},c5={class:"paper-cta-row"},p5={key:0,href:"/signin",target:"_self",class:"btn-hero"},f5={key:1,href:"/anonymize",class:"btn-hero"},h5={class:"paper-stats paper-wrap",id:"metrics","aria-label":"Usage over the last 60 days"},m5={class:"paper-stats-grid"},v5={class:"paper-stat-value"},g5={class:"paper-stat-label"},y5=["viewBox"],b5=["x","y","width","height"],w5={key:1,class:"paper-stat-delta"},k5={class:"paper-features paper-wrap","aria-label":"Product features"},E5={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},C5=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],S5={class:"paper-eyebrow"},_5={class:"paper-feature-title"},N5={class:"paper-feature-more"},R5={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},D5=["href","target"],T5={class:"paper-features-stage"},A5=["id","aria-labelledby"],O5={class:"paper-frame"},P5={class:"paper-frame-bar","aria-hidden":"true"},I5={class:"url"},V5=["src","alt"],q5={class:"paper-footer"},M5={class:"paper-footer-inner"},U5={class:"paper-footer-col"},$5={key:0,href:"/dashboard"},L5={key:1,href:"/conferences"},F5={class:"paper-footer-foot"};function Yl(e,t){return l(),d("div",l5,[p(" Hero: copy on the left, the product on the right "),n("section",d5,[n("div",u5,[t[2]||(t[2]=n("div",{class:"paper-eyebrow"},"For double-blind peer review",-1)),t[3]||(t[3]=n("h1",{class:"hero-title"},[v(" Share the code,"),n("br"),n("span",{class:"accent"},"not the author.")],-1)),t[4]||(t[4]=n("p",{class:"hero-subtitle"}," Anonymous GitHub makes a read-only mirror of your repository, pull request, or gist. It redacts the terms you choose in text files, so reviewers can browse your artifact through an anonymous link. ",-1)),n("div",c5,[e.user?p("v-if",!0):(l(),d("a",p5,[...t[0]||(t[0]=[n("i",{class:"fab fa-github mr-2","aria-hidden":"true"},null,-1),v("Sign in with GitHub ",-1)])])),e.user?(l(),d("a",f5," Anonymize a repository \u2192 ")):p("v-if",!0),t[1]||(t[1]=n("a",{class:"paper-link-arrow",target:"_self",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/"},"See an anonymized repository \u2192",-1))]),t[5]||(t[5]=n("ul",{class:"paper-reassure"},[n("li",null,"Free and open source"),n("li",null,"Read-only: never writes to your repos"),n("li",null,"Expires on the date you set")],-1))]),t[6]||(t[6]=fe('
A reviewer preview with the author, affiliation, and email replaced by anonymous terms
',1))]),p(" Proof "),t[16]||(t[16]=fe('
Trusted by authors at
ICSEFSEOOPSLA
',1)),p(" Live stats "),n("section",h5,[t[7]||(t[7]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},"Live \xB7 last 60 days"),n("div",{class:"paper-stats-meta-right"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),v(" updated daily ")])],-1)),n("div",m5,[(l(!0),d(K,null,ne(e.cards,(o,i)=>(l(),d("div",{class:"paper-stat-card",key:o?.key},[n("div",v5,u(e.fmt?.bigNum(o?.total)),1),n("div",g5,u(o?.label),1),e.history[o?.key].bars?.length>1?(l(),d("svg",{key:0,class:"paper-stat-bars",preserveAspectRatio:"none","aria-hidden":"true",viewBox:"0 0 "+e.history[o?.key].viewW+" 36"},[(l(!0),d(K,null,ne(e.history[o?.key].bars,(s,r)=>(l(),d("rect",{key:r,class:P({"is-latest":r===e.history[o.key].bars.length-1}),x:s?.x,y:s?.y,width:s?.w,height:s?.h},null,10,b5))),128))],8,y5)):p("v-if",!0),e.history[o?.key].bars?.length>1?(l(),d("div",w5," +"+u(e.fmt?.number(e.history[o?.key].deltaToday))+" today ",1)):p("v-if",!0)]))),128))])]),p(" Before / after "),t[17]||(t[17]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Before \xB7 after"),n("h2",null,[v("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),t[18]||(t[18]=n("div",{class:"paper-preview paper-wrap","aria-label":"Before and after example"},[n("div",{class:"pane"},[n("div",{class:"pane-header"},[n("span",{class:"pane-label"},"Before \xB7 your repo"),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")]),n("div",{class:"pane-body"},[n("div",null,[n("span",{class:"tok"},"#"),v(),n("strong",null,"DeepLearnUtils")]),n("div",null,"Developed by Jane Smith at MIT CSAIL."),n("div",null,"See Smith et\xA0al., \u201CAttention That Works,\u201D 2026."),n("div",null,"Contact: jane.smith@mit.edu")])]),n("div",{class:"pane"},[n("div",{class:"pane-header"},[n("span",{class:"pane-label"},"After \xB7 anonymous mirror"),n("span",{class:"pane-url"},"anonymous.4open.science/r/paper-7f2a")]),n("div",{class:"pane-body"},[n("div",null,[n("span",{class:"tok"},"#"),v(),n("strong",null,"DeepLearnUtils")]),n("div",null,[v("Developed by "),n("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),v(" at "),n("span",{class:"redact",role:"img","aria-label":"redacted affiliation"},"XXXX-2"),v(".")]),n("div",null,[v("See "),n("span",{class:"redact",role:"img","aria-label":"redacted author name"},"XXXX-1"),v(" et\xA0al., \u201CAttention That Works,\u201D 2026.")]),n("div",null,[v("Contact: "),n("span",{class:"redact",role:"img","aria-label":"redacted email address"},"XXXX-3")])])])],-1)),p(" What you get: one screenshot, three tabs "),t[19]||(t[19]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,[v("Anonymize, review, "),n("em",null,"manage.")])]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",k5,[n("div",E5,[(l(!0),d(K,null,ne(e.features,(o,i)=>(l(),d("div",{class:P(["paper-feature",{"is-on":e.feature===o?.key}]),key:o?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(o.key),onKeydown:s=>e.featureKeydown(s,i),id:"feature-tab-"+o?.key,"aria-controls":"feature-panel-"+o?.key,"aria-selected":e.feature===o?.key,tabindex:e.feature===o?.key?0:-1},[n("span",S5,u(o?.num)+" \xB7 "+u(o?.eyebrow),1),n("span",_5,[v(u(o?.title)+" ",1),n("em",null,u(o?.accent),1)])],40,C5),n("div",N5,[n("span",R5,[v(u(o?.title)+" ",1),n("em",null,u(o?.accent),1)]),n("p",null,u(o?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(o)),target:e.featureTarget(o)},u(o?.cta)+" \u2192",9,D5)])],2))),128))]),n("div",T5,[(l(!0),d(K,null,ne(e.features,(o,i)=>D((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:o?.key,id:"feature-panel-"+o?.key,"aria-labelledby":"feature-tab-"+o?.key},[n("div",O5,[n("div",P5,[t[8]||(t[8]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",I5,u(o?.url),1)]),n("div",{class:P("paper-crop paper-crop-"+o?.key)},[n("img",{loading:"lazy",width:"2880",height:"1800",src:e.safeUrl(o?.img),alt:o?.alt},null,8,V5)],2)])],8,A5)),[[W,e.feature===o?.key]])),128))])]),p(" FAQ teaser "),t[20]||(t[20]=fe('
Before you sign in

The questions that come up most.

Read the full FAQ \u2192
What access does GitHub sign-in require?

The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories.

Which file formats are supported?

Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged.

What happens when an anonymized repository expires?

You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over.

',1)),n("footer",q5,[n("div",M5,[t[12]||(t[12]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[v("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",U5,[t[9]||(t[9]=n("div",{class:"paper-footer-head"},"Product",-1)),t[10]||(t[10]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",$5,"My work")):p("v-if",!0),e.user?(l(),d("a",L5,"Conferences")):p("v-if",!0),t[11]||(t[11]=n("a",{href:"/faq"},"FAQ",-1))]),t[13]||(t[13]=fe('',2))]),t[15]||(t[15]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",F5,[n("span",null,"\xA9 "+u(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[14]||(t[14]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var B5={class:"paper-empty"},H5={class:"paper-empty-inner"},z5={key:0,class:"paper-eyebrow"},j5={key:1,class:"paper-eyebrow"},G5={key:2,class:"paper-empty-title"},W5=["textContent"];function Jl(e,t){return l(),d("div",B5,[n("div",H5,[e.error?p("v-if",!0):(l(),d("div",z5,"Working")),e.error?(l(),d("div",j5,"Error")):p("v-if",!0),e.error?p("v-if",!0):(l(),d("h1",G5,[...t[0]||(t[0]=[v(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:u(e.fmt.translate(e.error))},null,8,W5)):p("v-if",!0)])])}var K5={class:"container paper-page paper-settings"},Y5={class:"paper-crumbs"},J5={class:"here"},Q5={class:"paper-page-title"},X5={class:"paper-settings-body"},Z5={class:"paper-settings-toc"},x5={href:"#conf-billing"},eV={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},tV={id:"conf-basics",class:"paper-settings-section"},nV={class:"form-group"},oV={class:"invalid-feedback"},sV={class:"invalid-feedback"},iV={class:"form-group"},rV={class:"invalid-feedback"},aV={class:"form-group"},lV={class:"invalid-feedback"},dV={class:"invalid-feedback"},uV={id:"conf-window",class:"paper-settings-section"},cV={class:"form-grid-2"},pV={class:"form-group"},fV={class:"invalid-feedback"},hV={class:"invalid-feedback"},mV={class:"form-group"},vV={class:"invalid-feedback"},gV={class:"invalid-feedback"},yV={id:"conf-rendering",class:"paper-settings-section"},bV={class:"form-check"},wV={class:"form-check-input",type:"checkbox",id:"link",name:"link"},kV={class:"form-check"},EV={class:"form-check-input",type:"checkbox",id:"image",name:"image"},CV={class:"form-check"},SV={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},_V={class:"form-check"},NV={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},RV={id:"conf-features",class:"paper-settings-section"},DV={class:"form-check"},TV={class:"form-check-input",type:"checkbox",id:"update",name:"update"},AV={class:"form-check"},OV={class:"form-check-input",type:"checkbox",id:"page",name:"page"},PV={id:"conf-plan",class:"paper-settings-section"},IV={class:"paper-plan-grid"},VV=["disabled","value"],qV=["textContent"],MV={class:"paper-plan-price"},UV={class:"paper-plan-per"},$V=["innerHTML"],LV={key:0,id:"conf-billing",class:"paper-settings-section"},FV={class:"form-group"},BV={class:"form-group"},HV={class:"form-group"},zV={class:"form-group"},jV={class:"form-grid-3"},GV={class:"form-group"},WV={class:"form-group"},KV={class:"form-group"},YV={class:"form-group"},JV={class:"paper-settings-footer"},QV=["textContent"],XV=["textContent"],ZV=["disabled"];function Ql(e,t){let o=ge("paper-scrollspy"),i=ge("field"),s=ge("form");return l(),d("div",K5,[n("div",Y5,[t[1]||(t[1]=n("a",{href:"/dashboard"},"My work",-1)),t[2]||(t[2]=v(" \xA0/\xA0 ",-1)),t[3]||(t[3]=n("a",{href:"/conferences"},"Conferences",-1)),t[4]||(t[4]=v(" \xA0/\xA0 ",-1)),n("span",J5,u(e.editionMode?"Edit":"New"),1)]),n("h1",Q5,[v(u(e.editionMode?"Edit":"Create a")+" ",1),t[5]||(t[5]=n("em",null,"conference",-1))]),t[42]||(t[42]=n("p",{class:"paper-page-lede"}," Give chairs access to every anonymization submitted to a venue, and lift author quotas during the review window. ",-1)),n("div",X5,[D((l(),d("aside",Z5,[t[7]||(t[7]=n("div",{class:"paper-settings-toc-head"},"On this page",-1)),n("nav",null,[t[6]||(t[6]=fe('BasicsReview windowRendering defaultsFeaturesPlan',5)),D(n("a",x5,"Billing",512),[[W,e.plan?.pricePerRepo>0]])])])),[[o]]),D((l(),d("form",eV,[n("section",tV,[t[12]||(t[12]=n("div",{class:"paper-section-eyebrow"},"Basics",-1)),n("div",nV,[t[8]||(t[8]=n("label",{class:"paper-field-label",for:"name"},"Conference name",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.name?.invalid&&(e.conference?.name?.touched||e.conference?.submitted)}]),name:"name",id:"name",required:"",placeholder:"e.g. International Conference on Software Engineering"},null,2),[[i,{state:e.viewState,set:r=>{e.options.name=r},value:e.options?.name,form:"conference",options:{}}]]),D(n("div",oV," The name of the conference is invalid. ",512),[[W,e.conference?.name?.errors?.invalid]]),D(n("div",sV," The name of the conference is required. ",512),[[W,e.conference?.name?.errors?.required]])]),n("div",iV,[t[9]||(t[9]=n("label",{class:"paper-field-label",for:"url"},"Website",-1)),D(n("input",{type:"url",class:P(["form-control",{"is-invalid":e.conference?.url?.invalid&&(e.conference?.url?.touched||e.conference?.submitted)}]),name:"url",id:"url",placeholder:"https://example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.url=r},value:e.options?.url,form:"conference",options:{}}]]),D(n("div",rV," The url of the conference is invalid. ",512),[[W,e.conference?.url?.errors?.url]])]),n("div",aV,[t[10]||(t[10]=n("label",{class:"paper-field-label",for:"conferenceID"},"Conference ID",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.conferenceID?.invalid&&(e.conference?.conferenceID?.touched||e.conference?.submitted)}]),name:"conferenceID",id:"conferenceID",required:"",pattern:"[a-zA-Z0-9\\-_]{3,10}",placeholder:"ICSE26"},null,2),[[i,{state:e.viewState,set:r=>{e.options.conferenceID=r},value:e.options?.conferenceID,form:"conference",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},[v("3\u201310 characters, letters, numbers, "),n("code",null,"-"),v(" and "),n("code",null,"_"),v(". Authors reference this when they anonymize.")],-1)),D(n("div",{class:"invalid-feedback"}," The conference ID '"+u(e.options?.conferenceID)+"' is already used. ",513),[[W,e.conference?.conferenceID?.errors?.used]]),D(n("div",lV," The conference ID is required. ",512),[[W,e.conference?.conferenceID?.errors?.required]]),D(n("div",dV," The format of the conference ID is incorrect ([a-zA-Z0-9-_]{3,10}). ",512),[[W,e.conference?.conferenceID?.errors?.pattern]])])]),n("section",uV,[t[17]||(t[17]=n("div",{class:"paper-section-eyebrow"},"Review window",-1)),n("div",cV,[n("div",pV,[t[13]||(t[13]=n("label",{class:"paper-field-label",for:"startDate"},"Start date",-1)),D(n("input",{type:"date",class:P(["form-control",{"is-invalid":e.conference?.startDate?.invalid&&(e.conference?.startDate?.touched||e.conference?.submitted)}]),name:"startDate",id:"startDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.startDate=r},value:e.options?.startDate,form:"conference",options:{}}]]),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Beginning of the review process.",-1)),D(n("div",fV," Start date is required. ",512),[[W,e.conference?.startDate?.errors?.required]]),D(n("div",hV," Start date must be before end date. ",512),[[W,e.conference?.startDate?.errors?.invalid]])]),n("div",mV,[t[15]||(t[15]=n("label",{class:"paper-field-label",for:"endDate"},"End date",-1)),D(n("input",{type:"date",class:P(["form-control",{"is-invalid":e.conference?.endDate?.invalid&&(e.conference?.endDate?.touched||e.conference?.submitted)}]),name:"endDate",id:"endDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.endDate=r},value:e.options?.endDate,form:"conference",options:{}}]]),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"All repositories expire on this date.",-1)),D(n("div",vV," End date is required. ",512),[[W,e.conference?.endDate?.errors?.required]]),D(n("div",gV," End date is invalid. ",512),[[W,e.conference?.endDate?.errors?.invalid]])])])]),n("section",yV,[t[26]||(t[26]=n("div",{class:"paper-section-eyebrow"},"Rendering defaults",-1)),n("div",bV,[D(n("input",wV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.link=r},value:e.options?.options?.link,form:"conference",options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[19]||(t[19]=n("small",{class:"form-text text-muted"},"Keep or remove all links from text files.",-1))]),n("div",kV,[D(n("input",EV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.image=r},value:e.options?.options?.image,form:"conference",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[21]||(t[21]=n("small",{class:"form-text text-muted"},"Images are not anonymized.",-1))]),n("div",CV,[D(n("input",SV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.pdf=r},value:e.options?.options?.pdf,form:"conference",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[23]||(t[23]=n("small",{class:"form-text text-muted"},"PDFs are not anonymized.",-1))]),n("div",_V,[D(n("input",NV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.notebook=r},value:e.options?.options?.notebook,form:"conference",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1)),t[25]||(t[25]=n("small",{class:"form-text text-muted"},"Render Jupyter notebooks instead of raw JSON.",-1))])]),n("section",RV,[t[31]||(t[31]=n("div",{class:"paper-section-eyebrow"},"Features",-1)),n("div",DV,[D(n("input",TV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.update=r},value:e.options?.options?.update,form:"conference",options:{}}]]),t[27]||(t[27]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[28]||(t[28]=n("small",{class:"form-text text-muted"},"Pull the latest commit automatically (hourly maximum).",-1))]),n("div",AV,[D(n("input",OV,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.page=r},value:e.options?.options?.page,form:"conference",options:{}}]]),t[29]||(t[29]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[30]||(t[30]=n("small",{class:"form-text text-muted"},"Enable anonymized GitHub pages.",-1))])]),n("section",PV,[t[32]||(t[32]=n("div",{class:"paper-section-eyebrow"},"Plan",-1)),t[33]||(t[33]=n("p",{class:"paper-section-copy"},"The review package is prepaid and covers up to 180 days. Pay from the conference page after creating it. Plan and review dates cannot change after creation.",-1)),n("div",IV,[(l(!0),d(K,null,ne(e.plans,(r,a)=>(l(),d("label",{class:P(["paper-plan-card",{selected:e.options?.plan?.planID==r?.id}])},[D(n("input",{type:"radio",disabled:e.editionMode,name:"planPicker",value:r?.id},null,8,VV),[[i,{state:e.viewState,set:c=>{e.options.plan.planID=c},value:e.options?.plan?.planID,form:"conference",options:{}}]]),n("div",{class:"paper-plan-head",textContent:u(r?.name)},null,8,qV),n("div",MV,[v(u(r.id==="free_conference"?"Free":"Prepaid package")+" ",1),n("span",UV,u(r.id==="free_conference"?"":"Price on the conference page"),1)]),n("div",{class:"paper-plan-desc",innerHTML:e.sanitize(r?.description)},null,8,$V)],2))),256))])]),e.plan?.pricePerRepo>0?(l(),d("section",LV,[t[41]||(t[41]=n("div",{class:"paper-section-eyebrow"},"Billing",-1)),n("div",FV,[t[34]||(t[34]=n("label",{class:"paper-field-label",for:"billing_name"},"Name",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.billing_name?.invalid&&(e.conference?.billing_name?.touched||e.conference?.submitted)}]),name:"billing_name",id:"billing_name",required:"",placeholder:"First & last name"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.name=r},value:e.options?.billing?.name,form:"conference",options:{}}]])]),n("div",BV,[t[35]||(t[35]=n("label",{class:"paper-field-label",for:"email"},"Email",-1)),D(n("input",{type:"email",class:P(["form-control",{"is-invalid":e.conference?.email?.invalid&&(e.conference?.email?.touched||e.conference?.submitted)}]),name:"email",id:"email",required:"",placeholder:"you@example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.email=r},value:e.options?.billing?.email,form:"conference",options:{}}]])]),n("div",HV,[t[36]||(t[36]=n("label",{class:"paper-field-label",for:"inputAddress"},"Address",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.inputAddress?.invalid&&(e.conference?.inputAddress?.touched||e.conference?.submitted)}]),name:"inputAddress",id:"inputAddress",required:"",placeholder:"1234 Main St"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address=r},value:e.options?.billing?.address,form:"conference",options:{}}]])]),n("div",zV,[D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.inputAddress2?.invalid&&(e.conference?.inputAddress2?.touched||e.conference?.submitted)}]),name:"inputAddress2",id:"inputAddress2",placeholder:"Apartment, studio, or floor"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address2=r},value:e.options?.billing?.address2,form:"conference",options:{}}]])]),n("div",jV,[n("div",GV,[t[37]||(t[37]=n("label",{class:"paper-field-label",for:"city"},"City",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.city?.invalid&&(e.conference?.city?.touched||e.conference?.submitted)}]),name:"city",id:"city",required:"",placeholder:"City"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.city=r},value:e.options?.billing?.city,form:"conference",options:{}}]])]),n("div",WV,[t[38]||(t[38]=n("label",{class:"paper-field-label",for:"country"},"Country",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.country?.invalid&&(e.conference?.country?.touched||e.conference?.submitted)}]),name:"country",id:"country",required:"",placeholder:"Country"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.country=r},value:e.options?.billing?.country,form:"conference",options:{}}]])]),n("div",KV,[t[39]||(t[39]=n("label",{class:"paper-field-label",for:"zip"},"Zip",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.zip?.invalid&&(e.conference?.zip?.touched||e.conference?.submitted)}]),name:"zip",id:"zip",required:"",placeholder:"Zip"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.zip=r},value:e.options?.billing?.zip,form:"conference",options:{}}]])])]),n("div",YV,[t[40]||(t[40]=n("label",{class:"paper-field-label",for:"vat"},"VAT number",-1)),D(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.vat?.invalid&&(e.conference?.vat?.touched||e.conference?.submitted)}]),name:"vat",id:"vat",placeholder:"VAT Number"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.vat=r},value:e.options?.billing?.vat,form:"conference",options:{}}]])])])):p("v-if",!0),n("div",JV,[e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:u(e.error)},null,8,QV)):p("v-if",!0),e.message?(l(),d("div",{key:1,class:"alert alert-success",role:"alert",textContent:u(e.message)},null,8,XV)):p("v-if",!0),n("button",{id:"send",disabled:e.saving,type:"submit",class:"btn btn-ink",onClick:t[0]||(t[0]=de(r=>e.submitForm(r,()=>{e.submit(r)}),["prevent"]))},u(e.saving?e.editionMode?"Updating\u2026":"Creating\u2026":e.editionMode?"Update conference":"Create conference"),9,ZV)])])),[[s,e.viewState]])])])}var xV={key:0},eq=["innerHTML"],tq={key:3},nq=["src"],oq=["src"],sq={key:7},iq={controls:"controls"},rq=["src"],aq={key:8},lq={key:9,class:"file-error container d-flex h-100"},dq={class:"paper-ratelimit-card m-auto",style:{"max-width":"520px"}},uq={class:"paper-error-msg"},cq={key:10,class:"file-error container d-flex h-100"},pq={class:"viewer-error paper-error-card file-error-card m-auto",role:"alert","aria-labelledby":"viewer-error-title"},fq={id:"viewer-error-title",class:"paper-empty-title"},hq={class:"paper-error-actions"},mq={key:0,href:"/",class:"btn btn-sm"},vq={key:1,href:"/faq",class:"btn btn-sm"},gq={key:2,class:"btn btn-outline-ink",href:"/dashboard"},yq={key:11,class:"file-error container d-flex h-100"},bq={key:12,class:"file-error container d-flex h-100"},wq={key:13,class:"file-error container d-flex h-100"},kq={key:14,class:"file-error container d-flex h-100"},Eq={class:"paper-empty-title m-auto"},Cq=["href"];function Xl(e,t){let o=Ge("html-doc"),i=Ge("pdfviewer"),s=Ge("notebook"),r=ge("code-editor");return l(),d(K,null,[e.type=="text"?D((l(),d("div",xV,null,512)),[[r,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="html"?(l(),d("div",{key:1,class:"file-content markdown-body",innerHTML:e.highlightRedactions(e.sanitize(e.content))},null,8,eq)):p("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),Ft(o,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):p("v-if",!0),(e.type=="code"||e.type=="html-doc"&&e.showSource)&&e.content!=null?D((l(),d("div",tq,null,512)),[[r,{content:e.content,options:e.aceOption}]]):p("v-if",!0),e.type=="image"?(l(),d("img",{key:4,class:"image-content",src:e.safeUrl(e.url)},null,8,nq)):p("v-if",!0),e.type=="media"?(l(),d("iframe",{key:5,class:"h-100 overflow-auto w-100 b-0",src:e.safeUrl(e.url)},null,8,oq)):p("v-if",!0),e.type=="pdf"?(l(),Ft(i,{key:6,src:e.safeUrl(e.url)},null,8,["src"])):p("v-if",!0),e.type=="audio"?(l(),d("div",sq,[n("audio",iq,[n("source",{src:e.safeUrl(e.url)},null,8,rq)])])):p("v-if",!0),e.type=="IPython"?(l(),d("div",aq,[Ce(s,{file:e.url,content:e.content},null,8,["file","content"])])):p("v-if",!0),e.type=="rate_limited"?(l(),d("div",lq,[n("div",dq,[t[3]||(t[3]=fe('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",uq,[t[1]||(t[1]=v("This repository will be available in ",-1)),n("strong",null,u(e.rateLimitCountdown),1),t[2]||(t[2]=v(". The page will reload automatically.",-1))])])])):p("v-if",!0),e.type=="error"?(l(),d("div",cq,[n("section",pq,[n("h1",fq,u(e.fmt.translate(e.isSourceAccessError()?"VIEWER_ERRORS.access_title":"VIEWER_ERRORS.title")),1),n("p",null,u(e.fmt.translate("ERRORS."+e.content)),1),e.isSourceAccessError()?(l(),d(K,{key:0},[n("p",null,u(e.fmt.translate("VIEWER_ERRORS.reader_help")),1),n("p",null,u(e.fmt.translate("VIEWER_ERRORS.owner_help")),1)],64)):p("v-if",!0),n("div",hq,[e.isSourceAccessError()?p("v-if",!0):(l(),d("a",mq,"Back to home")),e.isSourceAccessError()?p("v-if",!0):(l(),d("a",vq,"Read the FAQ")),n("button",{type:"button",class:"btn btn-primary",onClick:t[0]||(t[0]=a=>e.retryContent())},u(e.fmt.translate("VIEWER_ERRORS.retry")),1),e.isSourceAccessError()?(l(),d("a",gq,u(e.fmt.translate("VIEWER_ERRORS.dashboard")),1)):p("v-if",!0)])])])):p("v-if",!0),e.type=="loading"&&!e.error?(l(),d("div",yq,[...t[4]||(t[4]=[n("h1",{class:"paper-empty-title m-auto"},"Loading\u2026",-1)])])):p("v-if",!0),e.type=="empty"?(l(),d("div",bq,[...t[5]||(t[5]=[n("h1",{class:"paper-empty-title m-auto"},[v("Empty "),n("em",null,"repository"),v(".")],-1)])])):p("v-if",!0),e.content==null&&e.type!="empty"?(l(),d("div",wq,[...t[6]||(t[6]=[n("h1",{class:"paper-empty-title m-auto"},[v("Empty "),n("em",null,"file"),v(".")],-1)])])):p("v-if",!0),e.type=="binary"?(l(),d("div",kq,[n("h1",Eq,[t[7]||(t[7]=v("Unsupported ",-1)),t[8]||(t[8]=n("em",null,"binary file",-1)),t[9]||(t[9]=v(". You can ",-1)),n("a",{target:"_blank",href:e.safeUrl(e.url+"&download=true")},"download it",8,Cq),t[10]||(t[10]=v(".",-1))])])):p("v-if",!0)],64)}var Sq={class:"container page dashboard-page paper-page"},_q={class:"row"},Nq={class:"w-100"},Rq={class:"w-100","aria-label":"Pull Requests","accept-charset":"UTF-8"},Dq={class:"d-flex flex-column flex-md-row align-items-md-center",style:{gap:"8px"}},Tq={class:"flex-grow-1"},Aq={type:"search",id:"search",class:"form-control","aria-label":"Find a pull request...",placeholder:"Find a pull request...",autocomplete:"off"},Oq={class:"d-flex flex-wrap",style:{gap:"6px"}},Pq={class:"dropdown"},Iq={class:"dropdown-menu","aria-labelledby":"dropdownSort"},Vq={class:"form-check dropdown-item"},qq={class:"form-check-input",type:"radio",name:"sort",id:"sortFullName",value:"fullName"},Mq={class:"form-check dropdown-item"},Uq={class:"form-check-input",type:"radio",name:"sort",id:"sortAnonymizeDate",value:"-anonymizeDate"},$q={class:"form-check dropdown-item"},Lq={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},Fq={class:"form-check dropdown-item"},Bq={class:"form-check-input",type:"radio",name:"sort",id:"sortLastView",value:"-lastView"},Hq={class:"form-check dropdown-item"},zq={class:"form-check-input",type:"radio",name:"sort",id:"sortPageView",value:"-pageView"},jq={class:"dropdown"},Gq={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},Wq={class:"form-check dropdown-item"},Kq={class:"form-check-input",type:"checkbox",name:"sort",id:"statusReady",value:"ready"},Yq={class:"form-check dropdown-item"},Jq={class:"form-check-input",type:"checkbox",name:"sort",id:"statusExpired",value:"expired"},Qq={class:"form-check dropdown-item"},Xq={class:"form-check-input",type:"checkbox",name:"sort",id:"statusRemoved",value:"removed"},Zq={class:"d-flex flex-wrap mt-2",style:{gap:"6px"}},xq={class:"filter-chip"},e8=["onClick"],t8={class:"repo-list w-100"},n8={class:"repo-list-item-content"},o8={class:"repo-list-item-main"},s8={class:"repo-list-item-header"},i8=["textContent","href"],r8=["textContent"],a8=["textContent"],l8={class:"repo-source"},d8=["href"],u8={class:"repo-date"},c8={class:"repo-meta"},p8={key:0,title:"Conference"},f8=["title"],h8=["title"],m8=["title"],v8={key:1},g8={class:"repo-list-item-actions"},y8={class:"dropdown"},b8={class:"dropdown-menu dropdown-menu-right"},w8=["href"],k8=["onClick"],E8=["onClick"],C8=["onClick"],S8=["href"],_8={key:0,class:"repo-list-empty"};function Zl(e,t){let o=ge("field"),i=ge("form");return l(),d("div",Sq,[n("div",_q,[n("div",Nq,[t[12]||(t[12]=fe('
My work \xA0/\xA0 Pull requests

Anonymized pull requests

Track PR mirrors you\u2019ve created and their reviewer traffic.

',2)),p(" Search + filters row "),D((l(),d("form",Rq,[n("div",Dq,[n("div",Tq,[D(n("input",Aq,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",Oq,[n("div",Pq,[t[6]||(t[6]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Sort ",-1)),n("div",Iq,[t[5]||(t[5]=n("h6",{class:"dropdown-header"},"Select order",-1)),n("div",Vq,[D(n("input",qq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[0]||(t[0]=n("label",{class:"form-check-label",for:"sortFullName"},"Pull Request",-1))]),n("div",Mq,[D(n("input",Uq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[1]||(t[1]=n("label",{class:"form-check-label",for:"sortAnonymizeDate"},"Anonymize Date",-1))]),n("div",$q,[D(n("input",Lq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[2]||(t[2]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",Fq,[D(n("input",Bq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"sortLastView"},"Last View",-1))]),n("div",Hq,[D(n("input",zq,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortPageView"},"Page View",-1))])])]),n("div",jq,[t[11]||(t[11]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Status ",-1)),n("div",Gq,[t[10]||(t[10]=n("h6",{class:"dropdown-header"},"Select status",-1)),n("div",Wq,[D(n("input",Kq,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.ready=s},value:e.filters?.status?.ready,form:null,options:{}}]]),t[7]||(t[7]=n("label",{class:"form-check-label",for:"statusReady"},"Ready",-1))]),n("div",Yq,[D(n("input",Jq,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.expired=s},value:e.filters?.status?.expired,form:null,options:{}}]]),t[8]||(t[8]=n("label",{class:"form-check-label",for:"statusExpired"},"Expired",-1))]),n("div",Qq,[D(n("input",Xq,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.removed=s},value:e.filters?.status?.removed,form:null,options:{}}]]),t[9]||(t[9]=n("label",{class:"form-check-label",for:"statusRemoved"},"Removed",-1))])])])])])])),[[i,e.viewState]]),p(" Active filter chips "),D(n("div",Zq,[(l(!0),d(K,null,ne(e.filters?.status,(s,r,a)=>D((l(),d("span",xq,[v(u(e.fmt?.title(r))+" ",1),n("button",{type:"button",class:"filter-chip-close","aria-label":"Remove filter",onClick:c=>{e.filters.status[r]=!0}}," \xD7 ",8,e8)],512)),[[W,!s]])),256))],512),[[W,e.filters?.status?.ready===!1||e.filters?.status?.expired===!1||e.filters?.status?.removed===!1]])]),p(" Pull request list "),n("ul",t8,[(l(!0),d(K,null,ne(e.filteredPullRequests,(s,r)=>(l(),d("li",{class:P(["repo-list-item",{"repo-inactive":s?.status=="expired"||s?.status=="removed"||s?.status=="error"}])},[n("div",n8,[n("div",o8,[n("div",s8,[n("a",{class:"repo-name",textContent:u(s?.pullRequestId),href:e.safeUrl("/pr/"+s?.pullRequestId)},null,8,i8),n("span",{class:P(["status-badge",{"status-removed":s?.status=="removed"||s?.status=="expired"||s?.status=="removing"||s?.status=="expiring","status-preparing":s?.status=="preparing"||s?.status=="download","status-ready":s?.status=="ready","status-error":s?.status=="error"}])},[n("span",{textContent:u(e.fmt?.title(s?.status))},null,8,r8),s?.status=="error"?(l(),d("span",{key:0,textContent:u(": "+s?.statusMessage)},null,8,a8)):p("v-if",!0)],2)]),n("div",l8,[n("span",null,[t[13]||(t[13]=n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)),n("a",{href:e.safeUrl("https://github.com/"+s?.source?.repositoryFullName+"/pull/"+s?.source?.pullRequestId)},u(s?.source?.repositoryFullName)+"#"+u(s?.source?.pullRequestId),9,d8)]),n("span",{class:P(["status-badge",{"status-ready":s?.merged,"status-removed":s?.state=="open","status-error":s?.state=="closed"&&!s?.merged}]),style:{"font-size":"10px"}},u(e.fmt?.title(s?.merged?"merged":s?.state)),3),n("span",u8,"anonymized "+u(e.fmt?.humanTime(s?.anonymizeDate)),1)])]),n("div",c8,[s?.conference?(l(),d("span",p8,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),v(" "+u(s?.conference),1)])):p("v-if",!0),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Terms: "+s?.options?.terms?.join(", ")},[t[15]||(t[15]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),v(" "+u(e.fmt?.number(s?.options?.terms?.length)),1)],8,f8),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Views: "+e.fmt?.number(s?.pageView)},[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),v(" "+u(e.fmt?.number(s?.pageView)),1)],8,h8),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Last view: "+e.fmt?.date(s?.lastView)},[t[17]||(t[17]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-calendar"})],-1)),v(" "+u(e.fmt?.humanTime(s?.lastView)),1)],8,m8),s?.options?.expirationMode!="never"&&s?.status=="ready"?(l(),d("span",v8,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),v(" Expire: "+u(e.fmt?.humanTime(s?.options?.expirationDate)),1)])):p("v-if",!0)])]),n("div",g8,[n("div",y8,[t[24]||(t[24]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Actions ",-1)),n("div",b8,[n("a",{class:"dropdown-item",href:e.safeUrl("/pull-request-anonymize/"+s?.pullRequestId)},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit ",-1)])],8,w8),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.updatePullRequest(s),["prevent"])},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),v(" Force update ",-1)])],8,k8),[[W,s?.status=="ready"||s?.status=="error"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.updatePullRequest(s),["prevent"])},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),v(" Enable ",-1)])],8,E8),[[W,s?.status=="removed"]]),D(n("a",{class:"dropdown-item",href:"#",onClick:de(a=>e.removePullRequest(s),["prevent"])},[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),v(" Remove ",-1)])],8,C8),[[W,s?.status=="ready"]]),n("a",{class:"dropdown-item",href:e.safeUrl("/pr/"+s?.pullRequestId+"/")},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" View PR ",-1)])],8,S8)])])])],2))),256)),e.filteredPullRequests?.length==0?(l(),d("li",_8,[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No pull requests to display.",-1)])])):p("v-if",!0)])])])}var N8={class:"container paper-page user-settings"},R8={class:"settings-title"},D8={class:"settings-header-actions"},T8={class:"settings-nav","aria-label":"Settings"},A8=["aria-current","onClick"],O8={class:"settings-row"},P8={class:"form-control",id:"terms",name:"terms",rows:"3",placeholder:`Jane Smith MIT CSAIL -jane.smith@example.org`},I8={class:"settings-syntax"},V8={class:"invalid-feedback"},q8={class:"settings-row"},M8={class:"settings-checks"},U8={class:"settings-check"},$8={class:"form-check-input",type:"checkbox",id:"link",name:"link"},L8={class:"settings-check"},F8={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},B8={class:"settings-check"},H8={class:"form-check-input",type:"checkbox",id:"image",name:"image"},z8={class:"settings-check"},j8={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},G8={class:"settings-check"},W8={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},K8={class:"settings-check"},Y8={class:"form-check-input",type:"checkbox",id:"page",name:"page"},J8={class:"settings-row"},Q8={class:"settings-check"},X8={class:"form-check-input",type:"checkbox",id:"update",name:"update"},Z8={class:"settings-row"},x8={class:"form-control",id:"expiration",name:"expiration"},eM={class:"settings-help"},tM={class:"settings-save"},nM={class:"settings-save-status draft-status",role:"status"},oM={key:0},sM={key:1},iM={key:2},rM=["disabled"],aM={key:1,class:"settings-save-error",role:"alert"},lM=["aria-busy"],dM={key:0,role:"status"},uM={key:1,class:"settings-notice",role:"alert"},cM=["disabled"],pM={key:2,class:"settings-notice",role:"status"},fM={key:3,class:"settings-notice",role:"status"},hM=["disabled"],mM={class:"settings-row"},vM={class:"settings-inline"},gM={key:0,class:"settings-help"},yM={key:0,class:"settings-help"},bM={id:"settings-quota"},wM={key:1,role:"status"},kM={key:1,class:"settings-notice"},EM={key:2,class:"settings-notice"},CM={key:3,class:"settings-notice"},SM={key:4,class:"settings-help"},_M={key:5,class:"settings-plan billing-plan"},NM={class:"settings-comparison"},RM={class:"settings-cycles"},DM=["checked","onChange"],TM={class:"settings-help"},AM={class:"settings-actions"},OM=["disabled"],PM={key:6,class:"settings-help"},IM={class:"settings-row"},VM={key:0,class:"settings-inline"},qM=["disabled"],MM={key:1,class:"settings-help"},UM=["disabled"],$M={key:4,class:"settings-row"},LM={class:"settings-inline"},FM=["disabled"],BM={key:0,class:"settings-pass"},HM={class:"settings-help"},zM=["disabled"],jM={key:5,class:"settings-row"},GM={class:"settings-help"},WM={id:"settings-account",class:"settings-account-panel"},KM={class:"paper-account-card"},YM=["src"],JM={class:"paper-account-identity"},QM={class:"paper-account-name"},XM=["disabled"],ZM={key:0,role:"status"},xM={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},e6=["disabled"],t6={key:3,role:"status"},n6={class:"paper-danger-zone"},o6={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},s6=["textContent"],i6=["disabled"],r6={key:1,class:"settings-delete-confirm"},a6={for:"delete-username"},l6={class:"settings-actions"},d6=["disabled"],u6=["disabled"];function xl(e,t){let o=Ge("quota-usage"),i=ge("field"),s=ge("form");return l(),d("div",N8,[n("header",R8,[t[20]||(t[20]=n("h1",null,"Settings",-1)),n("div",D8,[n("span",null,"@"+u(e.user?.username),1)])]),n("nav",T8,[(l(),d(K,null,te([{id:"defaults",label:"Anonymization defaults"},{id:"billing",label:"Hosting & billing"},{id:"account",label:"Account"}],r=>n("button",{type:"button","aria-current":e.settingsTab===r.id?"page":null,onClick:a=>e.settingsTab=r.id},u(r.label),9,A8)),64))]),D(n("div",null,[t[41]||(t[41]=n("p",{class:"settings-scope"},"For new anonymizations only. Existing repositories keep their settings.",-1)),D((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[1]||(t[1]=ae(r=>e.submitForm(r,()=>{e.saveDefault(r)}),["prevent"]))},[n("section",O8,[t[26]||(t[26]=n("div",null,[n("label",{class:"settings-label",for:"terms"},"Terms to redact"),n("p",{class:"settings-help"},"One term per line.")],-1)),n("div",null,[D(n("textarea",P8,null,512),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("details",I8,[t[25]||(t[25]=n("summary",null,"Regex & replacement syntax",-1)),n("p",null,[t[21]||(t[21]=v("Matches become ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[22]||(t[22]=v(". Use ",-1)),t[23]||(t[23]=n("code",null,"term=>replacement",-1)),t[24]||(t[24]=v(" for a custom replacement. Regex is supported.",-1))])]),D(n("div",V8,"Terms are in an invalid format.",512),[[W,e.defaultsForm?.terms?.errors?.format]])])]),n("section",q8,[t[35]||(t[35]=n("h2",null,"Reviewer display",-1)),n("div",null,[n("div",M8,[n("label",U8,[D(n("input",$8,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=v("Keep links",-1))]),n("label",L8,[D(n("input",F8,null,512),[[i,{state:e.viewState,set:r=>{e.options.notebook=r},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[28]||(t[28]=v("Render notebooks",-1))]),n("label",B8,[D(n("input",H8,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"defaultsForm",options:{}}]]),t[29]||(t[29]=v("Show images",-1))]),n("label",z8,[D(n("input",j8,null,512),[[i,{state:e.viewState,set:r=>{e.options.pdf=r},value:e.options?.pdf,form:"defaultsForm",options:{}}]]),t[30]||(t[30]=v("Show PDFs",-1))]),n("label",G8,[D(n("input",W8,null,512),[[i,{state:e.viewState,set:r=>{e.options.loc=r},value:e.options?.loc,form:"defaultsForm",options:{}}]]),t[31]||(t[31]=v("Show line counts",-1))]),n("label",K8,[D(n("input",Y8,null,512),[[i,{state:e.viewState,set:r=>{e.options.page=r},value:e.options?.page,form:"defaultsForm",options:{}}]]),t[32]||(t[32]=v("GitHub Pages",-1))])]),t[33]||(t[33]=n("p",{class:"settings-help"},"Images and PDFs are not anonymized.",-1)),t[34]||(t[34]=n("p",{class:"settings-help"},"GitHub Pages must use the anonymized branch.",-1))])]),n("section",J8,[t[38]||(t[38]=n("h2",null,"Source updates",-1)),n("div",null,[n("label",Q8,[D(n("input",X8,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"defaultsForm",options:{}}]]),t[36]||(t[36]=v("Auto-update from GitHub",-1))]),t[37]||(t[37]=n("p",{class:"settings-help"},"Latest commit, at most once an hour.",-1))])]),n("section",Z8,[t[40]||(t[40]=n("label",{class:"settings-label",for:"expiration"},"On expiration",-1)),n("div",null,[D((l(),d("select",x8,[...t[39]||(t[39]=[n("option",{value:"redirect"},"Redirect visitors to the GitHub repository",-1),n("option",{value:"remove",selected:""},"Remove the anonymized repository",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"defaultsForm",options:{}}]]),n("p",eM,u(e.options.expirationMode==="redirect"?"Redirecting reveals the original repository. Choose the date per anonymization.":"Set the expiration date for each repository."),1)])]),n("footer",tM,[n("div",nM,[e.draftRestored?(l(),d("span",oM,"Your unsaved draft was restored.")):e.unsavedChanges?(l(),d("span",sM,"Unsaved changes"+u(e.draftSaved?" \xB7 Draft saved in this tab":""),1)):(l(),d("span",iM,u(e.message?"Defaults saved":"All changes saved"),1))]),e.draftRestored||e.unsavedChanges?(l(),d("button",{key:0,type:"button",class:"draft-discard",onClick:t[0]||(t[0]=r=>e.discardDraft())},"Discard changes")):p("v-if",!0),n("button",{id:"save",type:"submit",class:"btn btn-ink",disabled:e.saving},u(e.saving?"Saving\u2026":"Save defaults"),9,rM),e.error?(l(),d("div",aM,u(e.error),1)):p("v-if",!0)])],32)),[[s,e.viewState]])],512),[[W,e.settingsTab==="defaults"]]),D(n("section",{id:"settings-billing","aria-busy":e.billingLoading||e.billingBusy},[t[64]||(t[64]=n("p",{class:"settings-scope"},"Your plan and usage. Reviewer access is always free.",-1)),e.billingLoading?(l(),d("p",dM,"Loading billing\u2026")):p("v-if",!0),e.billingError?(l(),d("div",uM,[v(u(e.billingError)+" ",1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=r=>e.loadBilling()),disabled:e.billingBusy},"Try again",8,cM)])):p("v-if",!0),e.billingNotice?(l(),d("p",pM,u(e.billingNotice),1)):p("v-if",!0),e.billingPending?(l(),d("div",fM,[t[42]||(t[42]=n("strong",null,"Confirming your payment",-1)),t[43]||(t[43]=n("p",null,"Your allowance will update after confirmation. Please do not pay again.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=r=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,hM)])):p("v-if",!0),n("section",mM,[t[57]||(t[57]=n("h2",null,"Current plan",-1)),n("div",null,[n("div",vM,[n("div",null,[n("strong",null,u(e.profileAuthorGrant()?"Author subscription":e.billing?.enabled?"Free":"Account allowance"),1),e.profileAuthorGrant()?(l(),d("p",gM,u(e.profileAuthorGrant().cancelAtPeriodEnd?"Renewal cancelled \xB7 Access until ":"Paid access through ")+u(e.billingDate(e.profileAuthorGrant().until)),1)):p("v-if",!0)]),e.billing?.enabled&&!e.profileAuthorGrant()&&!e.billingPending&&!e.showAuthorPlans&&e.profileAuthorPlans().length?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[4]||(t[4]=r=>e.openProfileUpgrade())},"View Author plan")):p("v-if",!0)]),e.billing?.allowance?(l(),d("p",yM,u(e.billing.allowance.repositories)+" repositories \xB7 "+u(e.billingBytes(e.billing.allowance.storage)),1)):p("v-if",!0),n("div",bM,[e.quota?(l(),Ft(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",wM,"Loading usage\u2026"))]),t[56]||(t[56]=n("p",{class:"settings-help"},"Coauthored repositories use their owner's allowance. Conference hosting is separate.",-1)),e.quota?.repository&&!e.quota.repository.unlimited&&e.quota.repository.used>=e.quota.repository.total?(l(),d("p",kM,[...t[44]||(t[44]=[v("Your repository allowance is full. ",-1),n("a",{href:"/dashboard"},"Review your repositories",-1),v(" to remove work you no longer need.",-1)])])):p("v-if",!0),e.profilePastSubscription()?(l(),d("p",EM,[...t[45]||(t[45]=[v("Your previous subscription is no longer active. Never-expiring repositories receive a 90-day grace period after paid access ends. ",-1),n("a",{href:"/dashboard"},"Review repository expiration dates",-1),v(".",-1)])])):p("v-if",!0),e.profileAuthorGrant()?.status==="past_due"?(l(),d("p",CM,"A subscription payment is overdue. Use Manage billing to update your payment details.")):p("v-if",!0),e.profileAuthorGrant()?.cancelAtPeriodEnd?(l(),d("p",SM,"When paid access ends, never-expiring repositories enter a 90-day grace period. Dated repositories keep their expiration dates.")):p("v-if",!0),e.showAuthorPlans&&!e.profileAuthorGrant()&&!e.billingPending&&e.profileAuthorPlans().length?(l(),d("div",_M,[t[54]||(t[54]=n("h3",{id:"settings-plan-comparison",tabindex:"-1"},"Compare plans",-1)),n("table",NM,[t[51]||(t[51]=n("caption",{class:"sr-only"},"Free and Author hosting",-1)),t[52]||(t[52]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Included"),n("th",{scope:"col"},"Free"),n("th",{scope:"col"},"Author")])],-1)),n("tbody",null,[n("tr",null,[t[46]||(t[46]=n("th",{scope:"row"},"Active repositories",-1)),n("td",null,u(e.billing.allowance?.repositories),1),n("td",null,u(e.profileSelectedPlan()?.repositories),1)]),n("tr",null,[t[47]||(t[47]=n("th",{scope:"row"},"Source storage",-1)),n("td",null,u(e.billingBytes(e.billing.allowance?.storage)),1),n("td",null,u(e.billingBytes(e.profileSelectedPlan()?.storage)),1)]),t[48]||(t[48]=n("tr",null,[n("th",{scope:"row"},"Expiration"),n("td",null,"Scheduled"),n("td",null,"Scheduled or never")],-1)),t[49]||(t[49]=n("tr",null,[n("th",{scope:"row"},"Coauthors"),n("td",null,"Included"),n("td",null,"Included")],-1)),t[50]||(t[50]=n("tr",null,[n("th",{scope:"row"},"Reviewer access"),n("td",null,"Free"),n("td",null,"Free")],-1))])]),n("fieldset",RM,[t[53]||(t[53]=n("legend",{class:"sr-only"},"Billing frequency",-1)),(l(!0),d(K,null,te(e.profileAuthorPlans(),r=>(l(),d("label",{class:P({selected:e.profileSelectedPlan()?.id===r.id})},[n("input",{type:"radio",name:"profile-plan",checked:e.profileSelectedPlan()?.id===r.id,onChange:a=>e.profilePlan=r.id},null,40,DM),v(u(e.billingPrice(r)),1)],2))),256))]),n("p",TM,"Renews "+u(e.profileSelectedPlan()?.interval==="year"?"annually":"monthly")+" until cancelled. Tax shown at checkout.",1),t[55]||(t[55]=n("p",{class:"settings-help"},"If paid access ends, never-expiring repositories expire after a 90-day grace period.",-1)),n("div",AM,[n("button",{type:"button",class:"btn btn-ink",disabled:e.billingBusy||e.billing.checkoutEnabled===!1,onClick:t[5]||(t[5]=r=>e.checkout(e.profileSelectedPlan().id))},u(e.billingBusy?"Please wait\u2026":"Continue to checkout"),9,OM),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[6]||(t[6]=r=>e.showAuthorPlans=!1)},"Keep current plan")])])):p("v-if",!0),e.billing&&(!e.billing.enabled||e.billing.checkoutEnabled===!1)?(l(),d("p",PM,"New purchases are not available. Existing billing can still be managed below.")):p("v-if",!0)])]),n("section",IM,[t[59]||(t[59]=n("h2",null,"Billing",-1)),n("div",null,[e.billing?.portal?(l(),d("div",VM,[t[58]||(t[58]=n("p",{class:"settings-help"},"Invoices, payment details, and renewal.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[7]||(t[7]=r=>e.billingPortal()),disabled:e.billingBusy},"Manage billing",8,qM)])):(l(),d("p",MM,"No billing account available.")),e.billing?.enabled&&!e.billingPending?(l(),d("button",{key:2,type:"button",class:"settings-text-button",onClick:t[8]||(t[8]=r=>e.refreshBilling()),disabled:e.billingBusy},"Refresh payment status",8,UM)):p("v-if",!0)])]),e.billing?.enabled?(l(),d("section",$M,[t[62]||(t[62]=n("h2",null,"Repository passes",-1)),n("div",null,[n("div",LM,[t[60]||(t[60]=n("p",{class:"settings-help"},[v("One repository for 180 days."),n("br"),v("No subscription or automatic renewal.")],-1)),e.profilePassPlan()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[9]||(t[9]=r=>e.showRepositoryPass=!e.showRepositoryPass),disabled:e.billingPending},"Review a pass",8,FM)):p("v-if",!0)]),e.showRepositoryPass&&e.profilePassPlan()&&!e.billingPending?(l(),d("div",BM,[t[61]||(t[61]=n("label",{for:"billing-repository"},"Repository ID you own",-1)),D(n("input",{id:"billing-repository",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=r=>e.billingRepository=r),placeholder:"Existing anonymized repository ID",autocomplete:"off"},null,512),[[wt,e.billingRepository]]),n("p",HM,u(e.billingPrice(e.profilePassPlan()))+" \xB7 "+u(e.billingBytes(e.profilePassPlan().storage))+" \xB7 Never expire is not included.",1),n("button",{type:"button",class:"btn btn-ink",disabled:e.billingBusy||!e.billingRepository.trim()||e.billing.checkoutEnabled===!1,onClick:t[11]||(t[11]=r=>e.checkout("author_pass",e.billingRepository.trim()))},"Continue to checkout",8,zM)])):p("v-if",!0)])])):p("v-if",!0),e.billing?.grants?.length?(l(),d("section",jM,[t[63]||(t[63]=n("h2",null,"Your purchases",-1)),n("div",null,[(l(!0),d(K,null,te(e.billing.grants,r=>(l(),d("div",{class:"settings-purchase",key:r.scope+r.planId+r.until},[n("strong",null,u(e.profileGrantName(r)),1),n("span",null,u(r.scope),1),n("p",GM,[v(u(r.status),1),r.status!=="revoked"?(l(),d(K,{key:0},[v(" \xB7 Paid access through "+u(e.billingDate(r.until))+u(r.cancelAtPeriodEnd?" \xB7 Renewal cancelled":""),1)],64)):p("v-if",!0)])]))),128))])])):p("v-if",!0),t[65]||(t[65]=n("section",{class:"settings-row"},[n("h2",null,"Conference hosting"),n("div",{class:"settings-inline"},[n("p",{class:"settings-help"},"Shared hosting is managed per conference."),n("a",{href:"/conferences",class:"btn btn-outline-ink"},"My conferences")])],-1))],8,lM),[[W,e.settingsTab==="billing"]]),D(n("section",WM,[t[75]||(t[75]=n("p",{class:"settings-scope"},"Your identity, repository access, and account.",-1)),n("div",KM,[e.user?.photo?(l(),d("img",{key:0,width:"40",height:"40",class:"rounded-circle",alt:"",src:e.safeUrl(e.user?.photo)},null,8,YM)):p("v-if",!0),n("div",JM,[n("div",QM,"@"+u(e.user?.username),1),t[66]||(t[66]=n("div",{class:"paper-account-meta"},"Signed in with GitHub. Anonymous GitHub only reads your repositories.",-1))]),t[67]||(t[67]=n("a",{class:"btn btn-outline-ink",href:"/api/user/logout",target:"_self"},"Sign out",-1))]),n("form",{class:"paper-account-email",onSubmit:t[15]||(t[15]=ae(r=>e.saveAccountEmail(),["prevent"]))},[t[68]||(t[68]=n("label",{class:"paper-field-label",for:"account-email"},"Email address",-1)),t[69]||(t[69]=n("p",{id:"account-email-help",class:"paper-section-copy"},"Used for account alerts. Your address is never shown on anonymous pages.",-1)),D(n("input",{id:"account-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[12]||(t[12]=r=>e.accountEmail=r),"aria-describedby":"account-email-help",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady,onInput:t[13]||(t[13]=r=>e.emailSaved=!1)},null,40,XM),[[wt,e.accountEmail]]),e.emailLoading?(l(),d("p",ZM,"Loading your email address\u2026")):p("v-if",!0),e.emailError?(l(),d("p",xM,u(e.emailError),1)):p("v-if",!0),!e.emailCSRFReady&&!e.emailLoading?(l(),d("button",{key:2,class:"btn btn-outline-ink mt-2",type:"button",onClick:t[14]||(t[14]=r=>e.loadAccountEmail())},"Try again")):p("v-if",!0),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady},u(e.emailSaving?"Saving\u2026":"Save email address"),9,e6),e.emailSaved?(l(),d("p",t6,"Email address saved.")):p("v-if",!0)],32),t[76]||(t[76]=n("a",{class:"paper-settings-connection-link",href:"/connections"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",null,[v("GitHub connections"),n("small",null,"Manage repository access and legacy OAuth.")]),n("span",{"aria-hidden":"true"},"\u2192")],-1)),n("div",n6,[t[73]||(t[73]=n("div",{class:"paper-danger-head"},"Delete account",-1)),t[74]||(t[74]=n("p",{class:"paper-danger-copy"}," Removes all your anonymized repositories, gists, and pull requests, revokes the application's access to your GitHub account, and erases your personal data (username, email, access tokens). This cannot be undone. ",-1)),e.deleteError?(l(),d("div",o6,[t[70]||(t[70]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),t[71]||(t[71]=v()),n("span",{textContent:u(e.deleteError)},null,8,s6)])):p("v-if",!0),n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[16]||(t[16]=r=>e.confirmDeleteAccount=!0),disabled:e.deletingAccount},[t[72]||(t[72]=n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)),v(u(e.deletingAccount?"Deleting\u2026":"Delete my account"),1)],8,i6),e.confirmDeleteAccount?(l(),d("div",r6,[n("label",a6,"Type "+u(e.user?.username)+" to confirm",1),D(n("input",{id:"delete-username",class:"form-control","onUpdate:modelValue":t[17]||(t[17]=r=>e.deleteUsername=r),autocomplete:"off"},null,512),[[wt,e.deleteUsername]]),n("div",l6,[n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[18]||(t[18]=r=>e.deleteAccount()),disabled:e.deletingAccount||e.deleteUsername!==e.user?.username},u(e.deletingAccount?"Deleting\u2026":"Delete permanently"),9,d6),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=r=>{e.confirmDeleteAccount=!1,e.deleteUsername=""}),disabled:e.deletingAccount},"Cancel",8,u6)])])):p("v-if",!0)])],512),[[W,e.settingsTab==="account"]])])}var c6={class:"pr-page"},p6={class:"container paper-page pr-page-inner"},f6={class:"pr-header"},h6={class:"pr-title-row"},m6={class:"paper-page-title pr-title"},v6=["textContent"],g6={key:1,class:"text-muted"},y6=["href"],b6={class:"pr-header-meta"},w6={key:0,class:"pr-meta-item"},k6=["textContent"],E6={key:1,class:"pr-meta-item"},C6=["textContent"],S6={key:2,class:"pr-meta-item"},_6=["textContent"],N6={key:0,class:"pr-body-card"},R6={key:1,class:"paper-tabs",role:"tablist"},D6=["aria-selected","tabindex"],T6=["aria-selected","tabindex"],A6=["textContent"],O6={class:"paper-tab-content"},P6={key:0,role:"tabpanel",id:"pr-diff-panel","aria-labelledby":"pr-diff-tab"},I6=["innerHTML"],V6={key:1,role:"tabpanel",id:"pr-comments-panel","aria-labelledby":"pr-comments-tab"},q6={class:"pr-comments"},M6={class:"pr-comment"},U6={class:"pr-comment-head"},$6={key:0,class:"pr-comment-author"},L6=["textContent"],F6=["textContent"],B6={key:0,class:"pr-comment-body"},H6={key:0,class:"paper-table-empty"};function ed(e,t){let o=Ge("markdown");return l(),d("div",c6,[n("div",p6,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),v(" \xA0/\xA0 "),n("span",{class:"here"},"Pull request")],-1)),n("header",f6,[n("div",h6,[n("h1",m6,[e.details?.title?(l(),d("span",{key:0,textContent:u(e.details?.title)},null,8,v6)):p("v-if",!0),e.details?.title?p("v-if",!0):(l(),d("span",g6,"Untitled pull request"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/pull-request-anonymize/"+e.pullRequestId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,y6)):p("v-if",!0)]),n("div",b6,[n("span",{class:P(["paper-pill",{good:e.details?.merged,warn:e.details?.state=="open",bad:e.details?.state=="closed"&&!e.details?.merged}])},[n("span",{class:P(["status-dot",{"status-ready":e.details?.merged,"status-error":e.details?.state=="closed"&&!e.details?.merged}])},null,2),v(" "+u(e.details?.merged?"Merged":e.fmt.title(e.details?.state)),1)],2),e.details?.baseRepositoryFullName?(l(),d("span",w6,[t[5]||(t[5]=n("i",{class:"fab fa-github"},null,-1)),t[6]||(t[6]=v()),n("span",{textContent:u(e.details?.baseRepositoryFullName)},null,8,k6)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",E6,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=v()),n("span",{textContent:u(e.fmt?.date(e.details?.updatedDate))},null,8,C6)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",S6,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=v(" Anonymized ",-1)),n("span",{textContent:u(e.fmt?.date(e.details?.anonymizeDate))},null,8,_6)])):p("v-if",!0)])]),e.details?.body?(l(),d("section",N6,[t[11]||(t[11]=n("div",{class:"paper-section-eyebrow"},"Description",-1)),Ee(o,{content:e.details?.body},null,8,["content"])])):p("v-if",!0),e.details?.diff||e.details?.comments?(l(),d("nav",R6,[e.details?.diff?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.tabState?.active=="diff"}]),type:"button",role:"tab",id:"pr-diff-tab","aria-selected":e.tabState?.active==="diff","aria-controls":"pr-diff-panel",tabindex:e.tabState?.active==="diff"?0:-1,onKeydown:t[0]||(t[0]=i=>e.previewTabKeydown(i)),onClick:t[1]||(t[1]=i=>e.tabState.active="diff")},[...t[12]||(t[12]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),v(" Diff ",-1)])],42,D6)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"pr-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"pr-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=i=>e.previewTabKeydown(i)),onClick:t[3]||(t[3]=i=>e.tabState.active="comments")},[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,A6)],42,T6)):p("v-if",!0)])):p("v-if",!0),n("div",O6,[e.details?.diff&&e.tabState?.active=="diff"?(l(),d("div",P6,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.details?.diff))},null,8,I6)])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",V6,[n("ul",q6,[(l(!0),d(K,null,te(e.details?.comments,(i,s)=>(l(),d("li",M6,[n("div",U6,[i?.author?(l(),d("span",$6,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=v(" @",-1)),n("span",{textContent:u(i?.author)},null,8,L6)])):p("v-if",!0),i?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(i?.updatedDate))},null,8,F6)):p("v-if",!0)]),i?.body?(l(),d("div",B6,[Ee(o,{content:i?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",H6,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this pull request.",-1)])]))])])):p("v-if",!0)])])])}var z6={class:"repository-task status-page"},j6={class:"task-lede"},G6={class:"task-columns"},W6={class:"task-preparation","aria-label":"Repository preparation"},K6={key:0,class:"task-ready",role:"status"},Y6={key:1},J6={key:2,class:"text-danger",role:"alert"},Q6={key:3,class:"paper-section-copy"},X6={key:4,class:"paper-ratelimit-card",role:"status"},Z6={class:"paper-error-msg"},x6=["aria-valuenow"],eU={class:"paper-progress-label"},tU=["textContent"],nU={key:0},oU=["textContent"],sU={class:"paper-progress-pct"},iU={key:6,class:"paper-error-card",role:"alert"},rU={key:0,class:"paper-error-msg"},aU={key:1,class:"paper-error-msg"},lU={key:2},dU=["href"],uU={class:"paper-error-actions"},cU=["href"],pU={key:7,class:"share-link"},fU={class:"share-link-row"},hU=["value"],mU={class:"ui-icon","aria-hidden":"true"},vU=["href"],gU=["textContent"],yU={class:"share-link-actions"},bU=["href"],wU=["href"],kU={class:"task-summary","aria-label":"Repository summary"},EU={class:"task-summary-foot"};function td(e,t){return l(),d("div",z6,[t[23]||(t[23]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"My work"),v(" / Repository")],-1)),t[24]||(t[24]=n("h1",null,"Prepare your anonymous review link",-1)),n("p",j6,u(e.repo?.status==="ready"?"Your repository is ready to share.":"Your settings are saved. Track preparation before sharing the link."),1),t[25]||(t[25]=n("ol",{class:"task-trail","aria-label":"Repository progress"},[n("li",null,"1. Repository"),n("li",null,"2. Review and hosting"),n("li",{"aria-current":"step"},"3. Review link")],-1)),n("div",G6,[n("section",W6,[e.repo?.status==="ready"?(l(),d("div",K6,[...t[3]||(t[3]=[n("strong",null,"Your review link is ready",-1)])])):p("v-if",!0),n("h2",null,u(e.repoId),1),e.repo?.status==="ready"?(l(),d("p",Y6,"Share the link with reviewers. They do not need to sign in.")):p("v-if",!0),e.error?(l(),d("p",J6,[t[4]||(t[4]=v("Unable to load repository status. ",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[0]||(t[0]=o=>e.getStatus())},"Try again")])):p("v-if",!0),e.repo?.status!=="ready"?(l(),d("p",Q6,[...t[5]||(t[5]=[v(" The repository will take a few minutes to get ready, depending on its size. Visit the ",-1),n("a",{href:"/faq"},"FAQ",-1),v(" for more information. ",-1)])])):p("v-if",!0),e.rateLimitResetAt?(l(),d("div",X6,[t[8]||(t[8]=fe('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",Z6,[t[6]||(t[6]=v("Anonymization will resume automatically in ",-1)),n("strong",null,u(e.rateLimitCountdown),1),t[7]||(t[7]=v(". No action needed \u2014 the job is queued and will continue where it left off.",-1))])])):p("v-if",!0),e.repo?.status!=="ready"&&e.repo?.status!="error"&&!e.rateLimitResetAt?(l(),d("div",{key:5,class:P(["paper-progress",{"paper-progress-ready":e.repo?.status=="ready"}]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.progress},[n("div",{class:"paper-progress-bar",style:Ie("width: "+e.progress+"%;")},null,4),n("div",eU,[n("span",{textContent:u(e.fmt?.title(e.repo?.status))},null,8,tU),e.repo?.statusMessage?(l(),d("span",nU,[t[9]||(t[9]=v("\xA0\xB7\xA0",-1)),n("span",{textContent:u(e.repo?.statusMessage)},null,8,oU)])):p("v-if",!0),n("span",sU,u(e.progress||0)+"%",1)])],10,x6)):p("v-if",!0),e.repo?.status=="error"&&!e.rateLimitResetAt?(l(),d("div",iU,[t[13]||(t[13]=fe('
Anonymization failed
Something went wrong while preparing this repository.
',1)),e.repo?.statusMessage?(l(),d("p",rU,u(e.fmt?.translate("ERRORS."+e.repo?.statusMessage)),1)):p("v-if",!0),e.repo?.statusMessage?p("v-if",!0):(l(),d("p",aU,"No additional details were reported. The most common causes are private repositories, missing branches, and rate limits.")),e.repo?.statusMessage==="quota_exceeded"?(l(),d("p",lU,[n("a",{href:e.safeUrl("/anonymize/"+e.repoId)},"Review this repository\u2019s hosting",8,dU),t[10]||(t[10]=v(", then retry preparation.",-1))])):p("v-if",!0),t[14]||(t[14]=n("ul",{class:"paper-error-hints"},[n("li",null,"Make sure the source URL points to a repository or pull request you can access."),n("li",null,"Check that the chosen branch and commit still exist on GitHub."),n("li",null,"If you just signed in, the access token may need a moment to propagate \u2014 try again.")],-1)),n("div",uU,[n("a",{class:"btn btn-ink",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[11]||(t[11]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit anonymization",-1)])],8,cU),t[12]||(t[12]=fe(' Read the FAQ Report a bug in Anonymous GitHub',2))])])):p("v-if",!0),e.repo?.status=="ready"?(l(),d("div",pU,[t[17]||(t[17]=n("p",{class:"paper-section-copy"},"Reviewers can browse the repository at this address without seeing who you are.",-1)),n("div",fU,[n("input",{id:"share-url",class:"form-control share-link-input",readonly:"","aria-label":"Anonymous link",value:e.shareUrl,onFocus:t[1]||(t[1]=o=>o.target.select())},null,40,hU),n("button",{type:"button",class:"btn btn-ink",onClick:t[2]||(t[2]=o=>e.copyShareUrl())},[(l(),d("svg",mU,[n("use",{href:e.copied?"#ui-icon-check":"#project-icon-copy"},null,8,vU)])),n("span",{"aria-live":"polite",textContent:u(e.copied?"Copied":"Copy link")},null,8,gU)])]),n("div",yU,[n("a",{class:"btn",target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" Open repository ",-1)])],8,bU),e.repo?.options?.page?(l(),d("a",{key:0,class:"btn",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),v(" Open GitHub page ",-1)])],8,wU)):p("v-if",!0)])])):p("v-if",!0)]),n("aside",kU,[n("h3",null,u(e.repoId),1),n("dl",null,[t[18]||(t[18]=n("dt",null,"Source",-1)),n("dd",null,u(e.repo?.source?.fullName?"https://github.com/"+e.repo.source.fullName:"Loading\u2026"),1),t[19]||(t[19]=n("dt",null,"Lifetime",-1)),n("dd",null,u(e.repo?.options?.expirationMode==="never"?"Never expire while subscribed":e.repo?.options?.expirationDate?"Until "+e.fmt.date(e.repo.options.expirationDate):"Loading\u2026"),1),t[20]||(t[20]=n("dt",null,"Review access",-1)),t[21]||(t[21]=n("dd",null,"Anonymous and free",-1))]),n("div",EU,[n("strong",null,u(e.repo?.status==="ready"?"Ready to share":"Repository preparation"),1),t[22]||(t[22]=n("p",null,"Coauthors do not each need a subscription.",-1))])])])])}var us={"partials/reviewConsent.htm":Rl,"partials/connections.htm":Dl,"partials/signin.htm":Tl,"partials/404.htm":Al,"partials/admin/conferences.htm":Ol,"partials/admin/errors.htm":Pl,"partials/admin/overview.htm":Il,"partials/admin/queues.htm":Vl,"partials/admin/repositories.htm":ql,"partials/admin/user.htm":Ml,"partials/admin/users.htm":Ul,"partials/anonymize.htm":$l,"partials/anonymizePullRequest.htm":Ll,"partials/claim.htm":Fl,"partials/conference.htm":Bl,"partials/conferences.htm":Hl,"partials/dashboard.htm":zl,"partials/explorer.htm":jl,"partials/faq.htm":Gl,"partials/gist.htm":Wl,"partials/header.htm":Kl,"partials/home.htm":Yl,"partials/loading.htm":Jl,"partials/newConference.htm":Ql,"partials/pageView.htm":Xl,"partials/pr-dashboard.htm":Zl,"partials/profile.htm":xl,"partials/pullRequest.htm":ed,"partials/status.htm":td};var CU={class:"ui-icon-definitions","aria-hidden":"true",focusable:"false"};function nd(e,t){return l(),d("svg",CU,[...t[0]||(t[0]=[fe('',1)])])}function od(e,t){e==="partials/explorer.htm"&&(t.sidebarCollapsed=window.matchMedia?.("(max-width: 767px)").matches||!1),e==="partials/anonymize.htm"&&(t.prTabState={active:t.options.diff?"diff":"comments"},t.watchGroup(["options.diff","options.comments"],()=>{t.options[t.prTabState.active]||(t.prTabState.active=t.options.diff?"diff":t.options.comments?"comments":null)})),e==="partials/gist.htm"&&(t.tabState={active:t.details?.files?"files":"comments"}),["partials/conferences.htm","partials/conference.htm"].includes(e)&&(t.statusLabels={ready:"Ready",expired:"Expired",removed:"Removed"});let i={"partials/dashboard.htm":["filteredItems",()=>t.items,"itemFilter"],"partials/conferences.htm":["filteredConferences",()=>t.conferences,"conferenceFilter"],"partials/conference.htm":["filteredRepositories",()=>t.conference?.repositories,"repoFiler"],"partials/admin/repositories.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/user.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/users.htm":["filteredUsers",()=>t.users,"userFiler"],"partials/admin/conferences.htm":["filteredConferences",()=>t.conferences]}[e];if(i){let s=nt(()=>t.fmt.orderBy(t.fmt.filter(i[1](),t[i[2]]),t.orderBy));Object.defineProperty(t,i[0],{configurable:!0,get:()=>s.value})}}function sd(e=(...t)=>fetch(...t)){async function t(i,s,r,a={}){let c=new URL(s,window.location.href);for(let[y,b]of Object.entries(a.params||{}))if(b!=null)for(let h of Array.isArray(b)?b:[b])c.searchParams.append(y,typeof h=="object"?JSON.stringify(h):h);let f=new AbortController,g;a.timeout?.then?a.timeout.then(()=>f.abort()):a.timeout&&(g=setTimeout(()=>f.abort(),a.timeout));try{let y={Accept:"application/json, text/plain, */*",...a.headers},b=document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);b&&c.origin===window.location.origin&&(y["X-XSRF-TOKEN"]=decodeURIComponent(b[1]));let h;r!==void 0&&(r instanceof FormData?h=r:(y["Content-Type"]||(y["Content-Type"]="application/json;charset=utf-8"),h=JSON.stringify(r)));let E=await e(c.href,{method:i,headers:y,body:h,credentials:"same-origin",signal:f.signal}),_=await E.text(),m=_;if(a.transformResponse)m=a.transformResponse(_);else if(_&&(/json/i.test(E.headers.get("content-type")||"")||/^[\[{]/.test(_.trim())))try{m=JSON.parse(_)}catch{}let C={data:m,status:E.status,headers:N=>E.headers.get(N)};if(!E.ok)throw C;return C}catch(y){throw y.name==="AbortError"?{status:-1,data:null}:y}finally{clearTimeout(g)}}let o={};for(let i of["get","delete","head"])o[i]=(s,r)=>t(i.toUpperCase(),s,void 0,r);for(let i of["post","put","patch"])o[i]=(s,r,a)=>t(i.toUpperCase(),s,r,a);return o}var id={resolve:e=>Promise.resolve(e),reject:e=>Promise.reject(e),all:e=>Promise.all(e),defer(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),resolve:e,reject:t}}};var rd=function(e){function t(o){return o=o||{used:0,total:0},o.unlimited=!o.total,o.percent=o.unlimited?0:Math.min(100,o.used*100/o.total),o.level=o.unlimited?"unlimited":o.percent>=95?"danger":o.percent>=80?"warn":"ok",o}return{decorate:t,load:function(){return e.get("/api/user/quota").then(o=>{let i=o.data||{};return i.storage=t(i.storage),i.file=t(i.file),i.repository=t(i.repository),i})}}};var gi={};_d(gi,{bigNum:()=>_U,date:()=>MU,diff:()=>AU,filter:()=>VU,humanFileSize:()=>SU,humanTime:()=>NU,limitTo:()=>IU,number:()=>OU,orderBy:()=>qU,plural:()=>UU,statusLabel:()=>DU,statusMsg:()=>TU,title:()=>RU,uppercase:()=>PU});var SU=e=>window.humanFileSize(e),_U=(function(){return function(t){let o=Number(t)||0,i=Math.abs(o);return i<1e3?String(o):i<1e4?(o/1e3).toFixed(1).replace(/\.0$/,"")+"k":i<1e6?Math.round(o/1e3)+"k":i<1e7?(o/1e6).toFixed(1).replace(/\.0$/,"")+"M":Math.round(o/1e6)+"M"}})(),NU=(function(){return function(t){if(!t)return"never";t instanceof Date&&(t=Math.round((Date.now()-t)/1e3)),(typeof t=="string"||typeof t=="number")&&(t=Math.round((Date.now()-new Date(t))/1e3));var o=t<0?"from now":"ago";if(Math.abs(t)>7200*24){let f=new Date;return f.setSeconds(f.getSeconds()-t),"on "+f.toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"})}t=Math.abs(t);for(var i=[t/60/60/24/365,t/60/60/24/30,t/60/60/24/7,t/60/60/24,t/60/60,t/60,t],s=["year","month","week","day","hour","minute","second"],r=0;r1&&(c+="s"),a>=1)return a+" "+c+" "+o}return"0 seconds "+o}})(),RU=(function(){return function(e){if(!e)return e;e=e.toLowerCase();var t=e.split(" "),o=t.map(function(i){return i.charAt(0).toUpperCase()+i.substring(1,i.length)});return o.join(" ")}})(),DU=(function(){var e={ready:"Ready",error:"Error",expired:"Expired",expiring:"Expiring",removed:"Removed",removing:"Removing",queue:"Queued",download:"Downloading",downloaded:"Downloaded",preparing:"Preparing",anonymizing:"Anonymizing"};return function(t){if(!t)return"";if(e[t])return e[t];var o=String(t).replace(/[_-]+/g," ").toLowerCase();return o.charAt(0).toUpperCase()+o.slice(1)}})(),TU=(function(){var e={branch_not_found:"Branch not found on GitHub",repo_not_found:"Repository not found on GitHub",repository_not_found:"Repository not found on GitHub",repo_not_accessible:"Repository is not accessible with your token",pr_not_found:"Pull request not found on GitHub",gist_not_found:"Gist not found on GitHub",commit_not_found:"Commit not found on GitHub",repo_too_big:"Repository exceeds the size limit",quota_exceeded:"Storage quota exceeded",incomplete_record:"Incomplete record: missing identifier"};return function(t){if(!t)return t;var o=t.match(/^rate_limited:(\d+)$/);if(o){var i=Math.max(0,Math.ceil((parseInt(o[1],10)-Date.now())/1e3));if(i<=0)return"Rate limited \u2014 resuming soon";var s=Math.floor(i/60),r=i%60;return"Rate limited \u2014 retrying in "+(s>0?s+"m "+r+"s":r+"s")}if(e[t])return e[t];if(/^[a-z0-9]+(_[a-z0-9]+)+$/.test(t)){var a=t.replace(/_/g," ");return a.charAt(0).toUpperCase()+a.slice(1)}return t}})(),AU=(function(e){let t=i=>i.replace(/&/g,"&").replace(//g,">");function o(i,s){if(!s)return;let r=s.newPath&&s.newPath!=="/dev/null"?s.newPath:s.oldPath||"",a=s.oldPath==="/dev/null"?"added":s.newPath==="/dev/null"?"deleted":s.oldPath&&s.newPath&&s.oldPath!==s.newPath?"renamed":"modified";if(i.push('
'),i.push('
'+t(r)+''+a+"
"),s.lines.length){i.push('');for(let c of s.lines)i.push('");i.push("
'+(c.oldNo||"")+''+(c.newNo||"")+''+(c.kind==="add"?"+":c.kind==="remove"?"-":c.kind==="hunk"?"@":"")+''+t(c.text)+"
")}i.push("
")}return function(i){if(!i)return i;let s=[],r=null,a=0,c=0,f=()=>(r||(r={oldPath:"",newPath:"",lines:[]}),r),g=()=>{r&&(r.lines.length||r.oldPath||r.newPath)&&(o(s,r),r=null)},y=i.split(` -`);for(let b=0;be});function OU(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function PU(e){return String(e??"").toUpperCase()}function IU(e,t,o=0){return(e||[]).slice(o,o+t)}function VU(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function qU(e,t){if(!t)return e||[];let o=Array.isArray(t)?t:[t];return[...e||[]].sort((i,s)=>{for(let r of o){let a=r[0]==="-"?-1:1;r=r.replace(/^[+-]/,"");let c=r.split(".").reduce((g,y)=>g?.[y],i),f=r.split(".").reduce((g,y)=>g?.[y],s);if(typeof c=="string"&&(c=c.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),c!==f)return(c==null?-1:f==null?1:ci[s])}function UU(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var ad={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return Lt(()=>{let i=[t.value][0];i.classList.add("html-doc");function s(){i.innerHTML="";let r=e.content;if(typeof r!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let c=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&c.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",c.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),i.appendChild(a);let f="";e.baseUrl&&(f=''),a.srcdoc=f+r}He(()=>e.content,s,{immediate:!0}),He(()=>e.baseUrl,s,{immediate:!0}),He(()=>e.allowScripts,s,{immediate:!0})}),()=>be("html-doc",{ref:t})}};var ld={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return Lt(()=>{let o=[t.value],i=400,s=[.5,.75,1,1.25,1.5,2,3],r=1e3,a=o[0];a.classList.add("pdf-viewer");let c=null,f=[],g=!1,y=null,b=1,h=1,E=0,_=0,m=612/792,C=0,N=null,O=new Map,q=0;function L(k){let S=O.get(k);S&&(S.cancelled=!0,S.task?.cancel?.(),O.delete(k));let M=k.querySelector("canvas");M&&(M.width=0,M.height=0),k.innerHTML="",delete k.dataset.state}let U=document.createElement("div");U.className="pdf-toolbar";let z=document.createElement("div");z.className="pdf-pages",z.tabIndex=0,z.setAttribute("aria-label","PDF pages"),a.appendChild(U),a.appendChild(z);function ne(k,S,M){let j=document.createElement("button");return j.type="button",j.className="pdf-toolbar-btn",j.title=S,j.setAttribute("aria-label",S),j.innerHTML='',j.addEventListener("click",M),j}let x=ne("fa-chevron-up","Previous page",function(){Ve(h-1)}),R=ne("fa-chevron-down","Next page",function(){Ve(h+1)}),V=document.createElement("input");V.type="text",V.className="pdf-toolbar-page",V.setAttribute("aria-label","Page number"),V.title="Page number \u2014 type a page and press Enter",V.addEventListener("keydown",function(k){k.key==="Enter"&&(Ve(parseInt(V.value,10)),V.blur())}),V.addEventListener("blur",function(){V.value=String(h)});let Y=document.createElement("span");Y.className="pdf-toolbar-count";let X=ne("fa-search-minus","Zoom out",function(){oe(s[Math.max(0,de()-1)])}),G=ne("fa-search-plus","Zoom in",function(){oe(s[Math.min(s.length-1,de()+1)])}),J=document.createElement("button");J.type="button",J.className="pdf-toolbar-btn pdf-toolbar-zoom",J.title="Reset zoom to fit the width",J.setAttribute("aria-label","Reset zoom to fit the width"),J.addEventListener("click",function(){oe(1)}),U.appendChild(x),U.appendChild(R);let ie=document.createElement("span");ie.className="pdf-toolbar-group",ie.appendChild(V),ie.appendChild(Y),U.appendChild(ie);let ue=document.createElement("span");ue.className="pdf-toolbar-group pdf-toolbar-right",ue.appendChild(X),ue.appendChild(J),ue.appendChild(G),U.appendChild(ue);function de(){let k=0;for(let S=0;S=k,J.textContent=Math.round(b*100)+"%",X.disabled=de()===0,G.disabled=de()===s.length-1}function _e(k){let S=f[k-1];S&&(z.scrollTop+=S.getBoundingClientRect().top-z.getBoundingClientRect().top)}function Ve(k){if(!c||isNaN(k))return;let S=Math.min(Math.max(1,k),c.numPages);f[S-1]&&(_e(S),h=S,E=S,_=Date.now()+800,le(),ke())}function $e(){if(!f.length||Date.now()<_)return;let k=z.getBoundingClientRect(),S=k.top+k.height/2,M=1;for(let j=0;j{}),N=null),y&&(clearTimeout(y),y=null),c&&(c.destroy(),c=null),f=[],h=1,z.innerHTML="",le()}function Ne(){z.innerHTML="";let k=document.createElement("div");k.className="pdf-viewer-error",k.textContent="This PDF could not be displayed.",z.appendChild(k)}function Be(){let k=Math.max(120,z.clientWidth-24);return Math.round(Math.min(k,r)*b)}function Me(k,S,M){let j=window.devicePixelRatio||1,w=k.getViewport({scale:1}),T=parseFloat(S.style.width);if(!T)return;let A=k.getViewport({scale:T/w.width*j}),I=document.createElement("canvas");return I.width=Math.floor(A.width),I.height=Math.floor(A.height),I.style.width=T+"px",I.style.height=Math.floor(A.height/j)+"px",S.innerHTML="",S.appendChild(I),S.style.height=I.style.height,M.task=k.render({canvasContext:I.getContext("2d"),viewport:A}),M.task.promise}function ke(){if(!c)return;let k=C,S=z.getBoundingClientRect(),M=S.top-i,j=S.top+z.clientHeight+i,w=f.map((A,I)=>({slot:A,i:I,rect:A.getBoundingClientRect()})).filter(A=>A.rect.top<=j&&A.rect.bottom>=M).sort((A,I)=>Math.abs(A.rect.top-S.top)-Math.abs(I.rect.top-S.top)).slice(0,6),T=new Set(w.map(A=>A.slot));for(let A of O.keys())T.has(A)||L(A);for(let{slot:A,i:I}of w){if(A.dataset.state||q>=2)continue;let B={cancelled:!1,task:null};O.set(A,B),q++,A.dataset.state="rendering";let F;c.getPage(I+1).then(se=>{if(F=se,!(B.cancelled||k!==C))return Me(F,A,B)}).then(()=>{B.cancelled||k!==C||(A.dataset.state="done",E&&Date.now()<_&&_e(E))}).catch(()=>{!B.cancelled&&k===C&&(A.dataset.state="failed")}).finally(()=>{q--,F?.cleanup?.(),c&&ke()})}}function H(){g||(g=!0,window.requestAnimationFrame(function(){g=!1,$e(),ke()}))}function ee(){let k=!1;function S(){k||(k=!0,ke())}window.requestAnimationFrame(S),window.setTimeout(S,50)}function Q(){C++,f.forEach(L);let k=Be();f.forEach(function(S){delete S.dataset.state,S.innerHTML="",S.style.width=k+"px",S.style.height=Math.round(k/m)+"px"}),ke()}function oe(k){if(!c||!f.length||k===b)return;let S=h;b=k,le(),Q(),Ve(S)}function ve(){c&&(y&&clearTimeout(y),y=setTimeout(function(){y=null,c&&f.length&&Q()},250))}function Ce(k){if(De(),!k)return;let S=C;N=pdfjsLib.getDocument({url:k,isEvalSupported:!1,standardFontDataUrl:"/script/external/pdf-standard-fonts/",cMapUrl:"/script/external/pdf-cmaps/",cMapPacked:!0}),N.promise.then(function(M){if(S!==C){M.destroy();return}return c=M,c.getPage(1).then(function(j){if(S!==C)return;let w=j.getViewport({scale:1});w.width&&w.height&&(m=w.width/w.height);let T=Be();for(let A=1;A<=c.numPages;A++){let I=document.createElement("div");I.className="pdf-viewer-page",I.style.width=T+"px",I.style.height=Math.round(T/m)+"px",z.appendChild(I),f.push(I)}le(),ee()})}).catch(function(){S===C&&Ne()})}z.addEventListener("scroll",H,{passive:!0}),$(window).on("resize",ve),le(),He(()=>e.src,Ce,{immediate:!0}),cn(function(){z.removeEventListener("scroll",H),$(window).off("resize",ve),De()})}),()=>be("pdfviewer",{ref:t})}};var $U={key:0,class:"quota-row quota-usage"},LU={class:"quota-header"},FU={class:"quota-label"},BU={class:"project-type-svg","aria-hidden":"true"},HU=["href"],zU={key:0,class:"quota-percent"},jU={key:1,class:"quota-unlimited-tag"},GU={class:"quota-value"},WU={key:0},KU=["aria-label","aria-valuenow","aria-valuemax","aria-valuetext"],YU={key:1,class:"quota-remaining"},JU={key:2,class:"quota-remaining quota-limit"};function dd(e,t){return e.quota?(l(),d("div",$U,[(l(),d(K,null,te([{key:"repository",label:"Repositories",kind:"count",icon:"project-type-repo"},{key:"storage",label:"Storage",kind:"bytes",icon:"project-icon-storage"},{key:"file",label:"Files",kind:"count",icon:"project-icon-file"}],o=>n("div",{class:P(["quota-item","quota-"+e.quota[o.key].level]),key:o.key},[n("div",LU,[n("span",FU,[(l(),d("svg",BU,[n("use",{href:"#"+o.icon},null,8,HU)])),v(u(o.label),1)]),e.quota[o.key].unlimited?p("v-if",!0):(l(),d("span",zU,u(e.fmt.number(e.quota[o.key].percent,0))+"% used",1)),e.quota[o.key].unlimited?(l(),d("span",jU,"Unlimited")):p("v-if",!0)]),n("div",GU,[n("strong",null,u(e.formatAmount(e.quota[o.key].used,o.kind)),1),e.quota[o.key].unlimited?p("v-if",!0):(l(),d("span",WU," / "+u(e.formatAmount(e.quota[o.key].total,o.kind)),1))]),e.quota[o.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:P(["quota-track","quota-"+e.quota[o.key].level]),role:"progressbar","aria-valuemin":"0","aria-label":o.label+" quota","aria-valuenow":Math.min(e.quota[o.key].used,e.quota[o.key].total),"aria-valuemax":e.quota[o.key].total,"aria-valuetext":e.fmt.number(e.quota[o.key].percent,0)+"% used"},[e.quota[o?.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:"quota-fill",style:Ie({width:e.quota[o.key].percent+"%"})},null,4))],10,KU)),!e.quota[o.key].unlimited&&e.quota[o.key].used=e.quota[o.key].total?(l(),d("p",JU,u(e.quota[o.key].used>e.quota[o.key].total?"Limit exceeded":"Limit reached"),1)):p("v-if",!0)],2)),64))])):p("v-if",!0)}var QU={props:["quota","fmt"],setup(e){return{formatAmount:(t,o)=>o==="bytes"?e.fmt.humanFileSize(e.quota?.storage?.unit==="bytes"?t*8:t).replace(/([a-zA-Z]+)$/," $1"):e.fmt.number(t)}},render:dd},XU=new Set(ce),cd={props:["content","terms","options"],setup(e){let t=et(null),o=()=>{t.value.innerHTML=renderMD(e.content||"",window.location.pathname+"/../")};return Lt(()=>{o(),He(()=>[e.content,e.terms,e.options],o,{deep:!0})}),()=>be("markdown",{ref:t})}},ZU={props:["file","terms","options"],setup(e){let t=et(null),o=()=>Ke(()=>t.value?.querySelectorAll("pre code").forEach(i=>window.Prism?.highlightElement(i)));return Lt(o),He(()=>[e.file?.content,e.terms,e.options],o,{deep:!0}),()=>{let i=e.file||{},s=(i.filename||"").split(".").pop().toLowerCase();if(["md","markdown"].includes(s)||i.language==="Markdown")return be("gist-file",{ref:t},be(cd,{content:i.content,terms:e.terms,options:e.options}));let r={js:"javascript",jsx:"javascript",ts:"javascript",typescript:"javascript",py:"python",html:"markup",xml:"markup",svg:"markup",sh:"bash"},a=(i.language||s||"none").toLowerCase();return be("gist-file",{ref:t},be("pre",{class:"line-numbers"},be("code",{class:"language-"+(r[a]||a),key:i.content},i.content||"")))}}},xU={props:["file","content"],setup(e){let t=et(null),o=0,i,s=async()=>{let r=++o;i?.abort(),i=new AbortController;try{let a=e.content?JSON.parse(e.content):await fetch(e.file?.download_url||e.file,{signal:i.signal}).then(c=>{if(!c.ok)throw Error("Notebook request failed");return c.json()});if(await nn("notebook"),r!==o)return;t.value.innerHTML=DOMPurify.sanitize(nb.parse(a).render()),t.value.querySelectorAll("pre code").forEach(c=>window.Prism?.highlightElement(c))}catch(a){r===o&&a.name!=="AbortError"&&(t.value.textContent="Unable to render the notebook.")}};return Lt(()=>{s(),He(()=>[e.file,e.content],s)}),cn(()=>{o++,i?.abort()}),()=>be("notebook",{ref:t})}},e$={props:["stats"],setup(e){return()=>{let t=Object.entries(e.stats||{}).filter(([,i])=>i.code),o=t.reduce((i,[,s])=>i+s.code,0);return be("loc",t.map(([i,s])=>be("div",{class:"lang",title:`${i}: ${s.code.toLocaleString()} lines`,style:{width:s.code*100/o+"%",background:langColors[i]}})))}}},pd={Markdown:cd,GistFile:ZU,Notebook:xU,Loc:e$,HtmlDoc:ad,QuotaUsage:QU,Pdfviewer:_r(async()=>(await nn("pdf"),pdfjsLib.GlobalWorkerOptions.workerSrc="/script/external/pdf.worker.js",ld))},fd={async mounted(e,{value:t}){e._editorValue=t;try{if(await Si(),e._editorDisposed)return;let o=e._editorValue,i=ace.edit(e);e._editor=i,i.setValue(String(o.content??""),-1),ud(e,o.options),e._editorCleanup=o.options?.onLoad?.(i)}catch(o){e._editorDisposed||(e.textContent=o.message)}},updated(e,{value:t}){e._editorValue=t,e._editor&&(e._editor.getValue()!==String(t.content??"")&&e._editor.setValue(String(t.content??""),-1),ud(e,t.options))},beforeUnmount(e){e._editorDisposed=!0,e._editorCleanup?.(),e._editor?.destroy()}};function ud(e,t={}){let o=XU.has(t.mode)?t.mode:"text";e._editor.session.setMode("ace/mode/"+o),t.theme&&e._editor.setTheme("ace/theme/"+t.theme),e._editor.setReadOnly(t.readOnly!==!1)}var hd={mounted(e){if(!window.IntersectionObserver)return;let t=[...e.querySelectorAll('a[href^="#"]')],o=new Set,i=new IntersectionObserver(s=>{s.forEach(a=>a.isIntersecting?o.add(a.target.id):o.delete(a.target.id));let r=t.find(a=>o.has(a.hash.slice(1)));t.forEach(a=>a.classList.toggle("active",a===r))},{rootMargin:"-20% 0px -60% 0px",threshold:0});Ke(()=>t.forEach(s=>{let r=document.getElementById(s.hash.slice(1));r&&i.observe(r)})),e._observer=i},beforeUnmount(e){e._observer?.disconnect()}};function t$(e){let t={children:[]},o=new Map([["",t]]);function i(s){if(o.has(s))return o.get(s);let r=s.lastIndexOf("/"),a=i(r<0?"":s.slice(0,r)),c={name:s.slice(r+1),children:[]};return o.set(s,c),a.children.push(c),c}for(let s of e||[]){let r=s.path?`${s.path}/${s.name}`:s.name;s.size==null?i(r):i(s.path||"").children.push({...s})}return t.children}var md={name:"FileTree",props:["file","parent","searchQuery","searchResults","page"],setup(e){let t=el(),o=et(null),i=Fe(Object.create(null)),s=null,r=nt(()=>t$(e.file)),a=()=>"/"+(Array.isArray(t.params.path)?t.params.path.join("/"):t.params.path||"");He(()=>[t.params.repoId,t.params.path],()=>{let h="";a().split("/").filter(Boolean).forEach(E=>{h+="/"+E,i[h]=!0})},{immediate:!0});let c=nt(()=>{if(!e.searchQuery||!e.searchResults)return null;let h=new Set,E=new Set;return e.searchResults.forEach(_=>{h.add(_.path?`${_.path}/${_.name}`:_.name);let m="";(_.path||"").split("/").filter(Boolean).forEach(C=>{m=m?m+"/"+C:C,E.add(m)})}),{files:h,folders:E}}),f=()=>[...o.value.querySelectorAll("li > a")],g=h=>{o.value.querySelector(".tree-focused")?.classList.remove("tree-focused"),h&&(s=h.dataset.path,h.classList.add("tree-focused"),h.scrollIntoView?.({block:"nearest"}),o.value.focus())};function y(h){let E=f(),_=o.value.querySelector(".tree-focused")||E[0],m=E.indexOf(_);if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Enter"].includes(h.key)||(h.preventDefault(),h.key==="ArrowDown"&&g(E[(m+1)%E.length]),h.key==="ArrowUp"&&g(E[(m-1+E.length)%E.length]),!_))return;let C=_.closest("li");h.key==="ArrowRight"&&C.classList.contains("folder")&&(C.classList.contains("open")?g(C.querySelector(":scope > ul > li > a")):_.click()),h.key==="ArrowLeft"&&(C.classList.contains("folder")&&C.classList.contains("open")?_.click():g(C.parentElement.closest("li.folder")?.querySelector(":scope > a"))),h.key==="Enter"&&_.click()}function b(h,E=""){let _=[...h].sort((m,C)=>+!!C.children-+!!m.children||m.name.localeCompare(C.name));return be("ul",_.flatMap(m=>{let C=m,N=C.name,O=(E+"/"+N).slice(1);if(c.value&&!c.value.files.has(O)&&!c.value.folders.has(O))return[];for(;C.children?.length===1;)C=C.children[0],N+="/"+C.name;let q=E+"/"+N,L=!!C.children,U=c.value?i[q]!==!1:!!i[q],z=L&&e.page?.options?.truncatedFolders?.includes(q.slice(1)),ne=e.page?.fileCounts?.[q.slice(1)]||0,x=be("span",{class:L?"tree-icon-folder":"far fa-file tree-icon-file","aria-hidden":"true"},L?be("svg",{viewBox:"0 0 14 12",focusable:"false"},be("path",{d:"M1.5 10.5v-9h4l1.5 2h5.5v7z"})):null),R=be("span",{class:"tree-name"},N),V=X=>{g(X.currentTarget),L&&(X.preventDefault(),i[q]=!U,i[q]&&!C.children.length&&e.page.getFiles(q.slice(1)),Ke(()=>g(f().find(G=>G.dataset.path===s))))},Y=be("a",{"data-path":q,href:L?void 0:`/r/${encodeURIComponent(t.params.repoId)}${encodePathForUrl(q)}`,class:{"tree-focused":s===q},onClick:V},[L?be("span",{class:"tree-toggle"}):E?be("span",{class:"tree-spacer"}):null,x,R,z?be("span",{class:"truncated-warning",title:e.page.fmt.translate("WARNINGS.folder_truncated")},be("i",{class:"fas fa-exclamation-triangle"})):null,L&&ne?be("span",{class:"tree-count"},ne):null]);return be("li",{key:q,class:{file:!0,folder:L,open:U,active:a()===q,truncated:z},title:L?"":`Size: ${humanFileSize(C.size||0)}`},[Y,L&&U?b(C.children,q):null])}))}return()=>be("tree",{ref:o,tabindex:0,onKeydown:y},e.file?.length?c.value?.files.size===0?be("div",{class:"tree-search-empty"},"No files found"):b(r.value):"Empty repository")}};function gd(){return Fe({errors:{},dirty:!1,touched:!1,submitted:!1,get invalid(){return Object.values(this.errors).some(Boolean)},setValidity(e,t){this.errors[e]=!t},setDirty(){this.dirty=!0}})}function yd(e,t){if(!e[t]){let o=gd();Object.defineProperty(o,"invalid",{get(){return Object.values(o.errors).some(Boolean)||Object.keys(o).some(i=>i!=="invalid"&&o[i]&&typeof o[i]=="object"&&o[i].invalid)}}),e[t]=o}return e[t]}var bd={beforeMount(e,{value:t}){e._formState=yd(t,e.name),e.addEventListener("submit",o=>o.preventDefault())}};function n$(e){return e instanceof Date?isNaN(e)?"":`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:e||""}function vd(e){let t=e._field.binding.value;e.type==="checkbox"?e.checked=!!t:e.type==="radio"?e.checked=t==(e._value??e.value):e._field.timer||(e.value=e.type==="date"?n$(t):t??""),yi(e)}function yi(e){let t=e._field.validation;if(!t)return;let o=e.validity;for(let[i,s]of Object.entries({required:o.valueMissing,pattern:o.patternMismatch,min:o.rangeUnderflow,max:o.rangeOverflow,date:o.badInput,email:o.typeMismatch&&e.type==="email",url:o.typeMismatch&&e.type==="url"}))t.setValidity(i,e.disabled||!s)}var wd={beforeMount(e,{value:t}){var a;let o=t.form&&yd(t.state,t.form),i=o&&e.name?o[a=e.name]||(o[a]=gd()):null;e._field={binding:t,validation:i,timer:null};let s=()=>{clearTimeout(e._field.timer),e._field.timer=null;let c=e._field.binding,f=e.type==="checkbox"?e.checked:e._value??e.value;if(!(e.type==="radio"&&!e.checked)){if((e.type==="number"||e.type==="range")&&(f=e.value===""?null:Number(e.value)),e.type==="date"&&(f=e.value?new Date(e.value+"T00:00:00"):null),i){i.setDirty();for(let g of Object.keys(i.errors))i.setValidity(g,!0)}c.set(f),yi(e),c.change?.()}};e._field.commit=s;let r=c=>{let f=e._field.binding.options?.debounce||0,g=typeof f=="number"?f:f[c.type]??f.default??0;clearTimeout(e._field.timer),g?e._field.timer=setTimeout(s,g):s()};e.addEventListener(e.tagName==="SELECT"||["checkbox","radio","date"].includes(e.type)?"change":"input",r),e.addEventListener("blur",()=>{i&&(i.touched=!0),e._field.timer&&s()})},mounted:vd,updated(e,{value:t}){e._field.binding=t,vd(e)},beforeUnmount(e){clearTimeout(e._field.timer);let{binding:t,validation:o}=e._field,i=t.form&&t.state[t.form];i&&i[e.name]===o&&delete i[e.name]}};function kd(e,t){let o=e.target.closest("form");if(o?._formState&&(o._formState.submitted=!0),o?.querySelectorAll("input, select, textarea").forEach(i=>{i._field?.timer&&i._field.commit(),i._field&&yi(i)}),o&&!o.checkValidity()){let i=o.querySelector("input:invalid, select:invalid, textarea:invalid");i?.scrollIntoView?.({block:"center"}),i?.focus(),o.reportValidity();return}return t()}var Ed=Symbol("session"),o$=/^\/(w|api|github)(\/|$)/;function Cd(e,t={}){let o=e?.split(".").reduce((i,s)=>i?.[s],go);return o==null&&e?.startsWith("ERRORS.")&&(o=go.ERRORS.unknown_error),String(o??e??"").replace(/{{\s*([^}]+?)\s*}}/g,(i,s)=>t[s]??"")}var s$={...gi,translate:Cd};function i$(e){if(e==null||e==="")return e;try{let t=new URL(e,window.location.href);return["http:","https:","mailto:","tel:","blob:"].includes(t.protocol)?e:void 0}catch{return}}function r$(e="#app",t={}){let o=!!document.querySelector('meta[name="review-consent-page"][content="1"]'),i=o&&window.location.pathname==="/review-link"?Ei(window):null,s=()=>{let h=i;return i=null,h};!t.history&&window.location.pathname==="/"&&/^#!\/r\/[^/?#]+/.test(window.location.hash)&&window.history.replaceState(window.history.state,"",window.location.hash.slice(2));let r=new Map,a=sd(t.fetch),c,f;function g(){let h=ut(),E={url(m){return m===void 0?f.currentRoute.value.fullPath:(f.push(m),E)},replace(m){return f.replace(m)},path(){return f.currentRoute.value.path},search(){return f.currentRoute.value.query}},_=new Proxy({},{get(m,C){let N=f.currentRoute.value.params[C];return Array.isArray(N)?N.join("/"):N}});return{takeReviewHandoff:s,http:a,...h,location:E,params:_,window,promises:id,html:{trustAsHtml:m=>m},translate:(m,C)=>Promise.resolve(Cd(m,C)),quotaService:rd(a)}}function y(h){return{name:h.template,setup(){let E=pi(dt(Ed),r);h.setup(E,g()),od(h.template,E);let _=[];return()=>us[h.template](E,_)}}}f=xa({history:t.history||Qa(),routes:Nl.map(h=>h.redirect?h:{path:h.path,component:y(h),meta:{title:h.title,preserveExplorer:h.preserveExplorer}})});let b=ga({setup(){c=pi(null,r),c.fmt=s$,c.window=window,c.Math=Math,c.sanitize=m=>DOMPurify.sanitize(m??""),c.highlightRedactions=m=>(c.site_options,sl(m)),c.submitForm=kd,c.safeUrl=i$;let h=g();rl(c,h.http,h.location,h.timeout),un(Ed,c),He(()=>c.title,m=>{document.title=m||"Anonymous GitHub"});let E=[],_=m=>{let C=m.target.closest?.("a[href]");if(m.defaultPrevented||m.button!==0||m.metaKey||m.ctrlKey||m.shiftKey||m.altKey||!C||C.hasAttribute("download")||C.target&&C.target!=="_self"||C.dataset.toggle||C.getAttribute("href").startsWith("#"))return;let O=new URL(C.href,window.location.href);o||/^\/review-link\/?$/i.test(O.pathname)||O.origin!==window.location.origin||o$.test(O.pathname)||(m.preventDefault(),f.push(O.pathname+O.search+O.hash),$("#navbarSupportedContent.show").collapse("hide"))};return document.addEventListener("click",_),cn(()=>document.removeEventListener("click",_)),()=>[nd(c,[]),o?null:be("header",{class:"app-header"},us["partials/header.htm"](c,E)),be("main",{class:"app-view align-items-stretch w-100"},be(ui,null,{default:({Component:m,route:C})=>m?be(m,{key:C.meta.preserveExplorer?C.matched[0]?.path:C.path}):null})),be("div",{class:"position-fixed p-3",style:{zIndex:999999999,right:0,bottom:0}},c.toasts.map((m,C)=>be("div",{class:"toast show",role:"alert","aria-live":"assertive","aria-atomic":"true",key:C},[be("div",{class:"toast-header"},[be("strong",{class:"mr-auto"},m.title),be("button",{type:"button",class:"ml-2 mb-1 close","aria-label":"Close",onClick:()=>c.removeToast(m)},"\xD7")]),be("div",{class:"toast-body"},m.body)])))]}});for(let[h,E]of Object.entries(pd))b.component(h,E);return b.component("Tree",md),b.component("PartialView",{props:["name","state"],setup(h){let E=[];return()=>us[h.name](h.state,E)}}),b.directive("field",wd),b.directive("form",bd),b.directive("code-editor",fd),b.directive("paper-scrollspy",hd),b.use(f),f.beforeEach(async h=>{if(h.path==="/review-link"&&!o||o&&h.path!=="/review-link")return window.location.assign(h.fullPath),!1;c?.emit("routeLeave"),/^\/(r|repository|anonymize|pull-request-anonymize|gist-anonymize|pr|gist)(\/|$)/.test(h.path)&&await nn("markdown"),/^\/(r|repository)\//.test(h.path)&&await nn("org")}),f.afterEach(h=>{if(!c)return;c.title=h.meta.title,c.emit("routeChange",{title:h.meta.title}),c.emit("routeUpdate",{title:h.meta.title});let E=document.querySelector(".app-view");!h.meta.preserveExplorer&&E&&(E.scrollTop=0)}),b.mount(e),{app:b,router:f,state:c}}document.querySelector("#app")&&(window.anonymousApp=r$());})(); +jane.smith@example.org`},I8={class:"settings-syntax"},V8={class:"invalid-feedback"},q8={class:"settings-row"},M8={class:"settings-checks"},U8={class:"settings-check"},$8={class:"form-check-input",type:"checkbox",id:"link",name:"link"},L8={class:"settings-check"},F8={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},B8={class:"settings-check"},H8={class:"form-check-input",type:"checkbox",id:"image",name:"image"},z8={class:"settings-check"},j8={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},G8={class:"settings-check"},W8={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},K8={class:"settings-check"},Y8={class:"form-check-input",type:"checkbox",id:"page",name:"page"},J8={class:"settings-row"},Q8={class:"settings-check"},X8={class:"form-check-input",type:"checkbox",id:"update",name:"update"},Z8={class:"settings-row"},x8={class:"form-control",id:"expiration",name:"expiration"},eM={class:"settings-help"},tM={class:"settings-save"},nM={class:"settings-save-status draft-status",role:"status"},oM={key:0},sM={key:1},iM={key:2},rM=["disabled"],aM={key:1,class:"settings-save-error",role:"alert"},lM=["aria-busy"],dM={key:0,role:"status"},uM={key:1,class:"settings-notice",role:"alert"},cM=["disabled"],pM={key:2,class:"settings-notice",role:"status"},fM={key:3,class:"settings-notice",role:"status"},hM=["disabled"],mM={class:"settings-row"},vM={class:"settings-inline"},gM={key:0,class:"settings-help"},yM={key:0,class:"settings-help"},bM={id:"settings-quota"},wM={key:1,role:"status"},kM={key:1,class:"settings-notice"},EM={key:2,class:"settings-notice"},CM={key:3,class:"settings-notice"},SM={key:4,class:"settings-help"},_M={key:5,class:"settings-plan billing-plan"},NM={class:"settings-comparison"},RM={class:"settings-cycles"},DM=["checked","onChange"],TM={class:"settings-help"},AM={class:"settings-actions"},OM=["disabled"],PM={key:6,class:"settings-help"},IM={class:"settings-row"},VM={key:0,class:"settings-inline"},qM=["disabled"],MM={key:1,class:"settings-help"},UM=["disabled"],$M={key:4,class:"settings-row"},LM={class:"settings-inline"},FM=["disabled"],BM={key:0,class:"settings-pass"},HM={class:"settings-help"},zM=["disabled"],jM={key:5,class:"settings-row"},GM={class:"settings-help"},WM={id:"settings-account",class:"settings-account-panel"},KM={class:"paper-account-card"},YM=["src"],JM={class:"paper-account-identity"},QM={class:"paper-account-name"},XM=["disabled"],ZM={key:0,role:"status"},xM={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},e6=["disabled"],t6={key:3,role:"status"},n6={class:"paper-danger-zone"},o6={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},s6=["textContent"],i6=["disabled"],r6={key:1,class:"settings-delete-confirm"},a6={for:"delete-username"},l6={class:"settings-actions"},d6=["disabled"],u6=["disabled"];function xl(e,t){let o=Ge("quota-usage"),i=ge("field"),s=ge("form");return l(),d("div",N8,[n("header",R8,[t[20]||(t[20]=n("h1",null,"Settings",-1)),n("div",D8,[n("span",null,"@"+u(e.user?.username),1)])]),n("nav",T8,[(l(),d(K,null,ne([{id:"defaults",label:"Anonymization defaults"},{id:"billing",label:"Hosting & billing"},{id:"account",label:"Account"}],r=>n("button",{type:"button","aria-current":e.settingsTab===r.id?"page":null,onClick:a=>e.settingsTab=r.id},u(r.label),9,A8)),64))]),D(n("div",null,[t[41]||(t[41]=n("p",{class:"settings-scope"},"For new anonymizations only. Existing repositories keep their settings.",-1)),D((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[1]||(t[1]=de(r=>e.submitForm(r,()=>{e.saveDefault(r)}),["prevent"]))},[n("section",O8,[t[26]||(t[26]=n("div",null,[n("label",{class:"settings-label",for:"terms"},"Terms to redact"),n("p",{class:"settings-help"},"One term per line.")],-1)),n("div",null,[D(n("textarea",P8,null,512),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("details",I8,[t[25]||(t[25]=n("summary",null,"Regex & replacement syntax",-1)),n("p",null,[t[21]||(t[21]=v("Matches become ",-1)),n("code",null,u(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[22]||(t[22]=v(". Use ",-1)),t[23]||(t[23]=n("code",null,"term=>replacement",-1)),t[24]||(t[24]=v(" for a custom replacement. Regex is supported.",-1))])]),D(n("div",V8,"Terms are in an invalid format.",512),[[W,e.defaultsForm?.terms?.errors?.format]])])]),n("section",q8,[t[35]||(t[35]=n("h2",null,"Reviewer display",-1)),n("div",null,[n("div",M8,[n("label",U8,[D(n("input",$8,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=v("Keep links",-1))]),n("label",L8,[D(n("input",F8,null,512),[[i,{state:e.viewState,set:r=>{e.options.notebook=r},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[28]||(t[28]=v("Render notebooks",-1))]),n("label",B8,[D(n("input",H8,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"defaultsForm",options:{}}]]),t[29]||(t[29]=v("Show images",-1))]),n("label",z8,[D(n("input",j8,null,512),[[i,{state:e.viewState,set:r=>{e.options.pdf=r},value:e.options?.pdf,form:"defaultsForm",options:{}}]]),t[30]||(t[30]=v("Show PDFs",-1))]),n("label",G8,[D(n("input",W8,null,512),[[i,{state:e.viewState,set:r=>{e.options.loc=r},value:e.options?.loc,form:"defaultsForm",options:{}}]]),t[31]||(t[31]=v("Show line counts",-1))]),n("label",K8,[D(n("input",Y8,null,512),[[i,{state:e.viewState,set:r=>{e.options.page=r},value:e.options?.page,form:"defaultsForm",options:{}}]]),t[32]||(t[32]=v("GitHub Pages",-1))])]),t[33]||(t[33]=n("p",{class:"settings-help"},"Images and PDFs are not anonymized.",-1)),t[34]||(t[34]=n("p",{class:"settings-help"},"GitHub Pages must use the anonymized branch.",-1))])]),n("section",J8,[t[38]||(t[38]=n("h2",null,"Source updates",-1)),n("div",null,[n("label",Q8,[D(n("input",X8,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"defaultsForm",options:{}}]]),t[36]||(t[36]=v("Auto-update from GitHub",-1))]),t[37]||(t[37]=n("p",{class:"settings-help"},"Latest commit, at most once an hour.",-1))])]),n("section",Z8,[t[40]||(t[40]=n("label",{class:"settings-label",for:"expiration"},"On expiration",-1)),n("div",null,[D((l(),d("select",x8,[...t[39]||(t[39]=[n("option",{value:"redirect"},"Redirect visitors to the GitHub repository",-1),n("option",{value:"remove",selected:""},"Remove the anonymized repository",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"defaultsForm",options:{}}]]),n("p",eM,u(e.options.expirationMode==="redirect"?"Redirecting reveals the original repository. Choose the date per anonymization.":"Set the expiration date for each repository."),1)])]),n("footer",tM,[n("div",nM,[e.draftRestored?(l(),d("span",oM,"Your unsaved draft was restored.")):e.unsavedChanges?(l(),d("span",sM,"Unsaved changes"+u(e.draftSaved?" \xB7 Draft saved in this tab":""),1)):(l(),d("span",iM,u(e.message?"Defaults saved":"All changes saved"),1))]),e.draftRestored||e.unsavedChanges?(l(),d("button",{key:0,type:"button",class:"draft-discard",onClick:t[0]||(t[0]=r=>e.discardDraft())},"Discard changes")):p("v-if",!0),n("button",{id:"save",type:"submit",class:"btn btn-ink",disabled:e.saving},u(e.saving?"Saving\u2026":"Save defaults"),9,rM),e.error?(l(),d("div",aM,u(e.error),1)):p("v-if",!0)])],32)),[[s,e.viewState]])],512),[[W,e.settingsTab==="defaults"]]),D(n("section",{id:"settings-billing","aria-busy":e.billingLoading||e.billingBusy},[t[64]||(t[64]=n("p",{class:"settings-scope"},"Your plan and usage. Reviewer access is always free.",-1)),e.billingLoading?(l(),d("p",dM,"Loading billing\u2026")):p("v-if",!0),e.billingError?(l(),d("div",uM,[v(u(e.billingError)+" ",1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=r=>e.loadBilling()),disabled:e.billingBusy},"Try again",8,cM)])):p("v-if",!0),e.billingNotice?(l(),d("p",pM,u(e.billingNotice),1)):p("v-if",!0),e.billingPending?(l(),d("div",fM,[t[42]||(t[42]=n("strong",null,"Confirming your payment",-1)),t[43]||(t[43]=n("p",null,"Your allowance will update after confirmation. Please do not pay again.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=r=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,hM)])):p("v-if",!0),n("section",mM,[t[57]||(t[57]=n("h2",null,"Current plan",-1)),n("div",null,[n("div",vM,[n("div",null,[n("strong",null,u(e.profileAuthorGrant()?"Author subscription":e.billing?.enabled?"Free":"Account allowance"),1),e.profileAuthorGrant()?(l(),d("p",gM,u(e.profileAuthorGrant().cancelAtPeriodEnd?"Renewal cancelled \xB7 Access until ":"Paid access through ")+u(e.billingDate(e.profileAuthorGrant().until)),1)):p("v-if",!0)]),e.billing?.enabled&&!e.profileAuthorGrant()&&!e.billingPending&&!e.showAuthorPlans&&e.profileAuthorPlans().length?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[4]||(t[4]=r=>e.openProfileUpgrade())},"View Author plan")):p("v-if",!0)]),e.billing?.allowance?(l(),d("p",yM,u(e.billing.allowance.repositories)+" repositories \xB7 "+u(e.billingBytes(e.billing.allowance.storage)),1)):p("v-if",!0),n("div",bM,[e.quota?(l(),Ft(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",wM,"Loading usage\u2026"))]),t[56]||(t[56]=n("p",{class:"settings-help"},"Coauthored repositories use their owner's allowance. Conference hosting is separate.",-1)),e.quota?.repository&&!e.quota.repository.unlimited&&e.quota.repository.used>=e.quota.repository.total?(l(),d("p",kM,[...t[44]||(t[44]=[v("Your repository allowance is full. ",-1),n("a",{href:"/dashboard"},"Review your repositories",-1),v(" to remove work you no longer need.",-1)])])):p("v-if",!0),e.profilePastSubscription()?(l(),d("p",EM,[...t[45]||(t[45]=[v("Your previous subscription is no longer active. Never-expiring repositories receive a 90-day grace period after paid access ends. ",-1),n("a",{href:"/dashboard"},"Review repository expiration dates",-1),v(".",-1)])])):p("v-if",!0),e.profileAuthorGrant()?.status==="past_due"?(l(),d("p",CM,"A subscription payment is overdue. Use Manage billing to update your payment details.")):p("v-if",!0),e.profileAuthorGrant()?.cancelAtPeriodEnd?(l(),d("p",SM,"When paid access ends, never-expiring repositories enter a 90-day grace period. Dated repositories keep their expiration dates.")):p("v-if",!0),e.showAuthorPlans&&!e.profileAuthorGrant()&&!e.billingPending&&e.profileAuthorPlans().length?(l(),d("div",_M,[t[54]||(t[54]=n("h3",{id:"settings-plan-comparison",tabindex:"-1"},"Compare plans",-1)),n("table",NM,[t[51]||(t[51]=n("caption",{class:"sr-only"},"Free and Author hosting",-1)),t[52]||(t[52]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Included"),n("th",{scope:"col"},"Free"),n("th",{scope:"col"},"Author")])],-1)),n("tbody",null,[n("tr",null,[t[46]||(t[46]=n("th",{scope:"row"},"Active repositories",-1)),n("td",null,u(e.billing.allowance?.repositories),1),n("td",null,u(e.profileSelectedPlan()?.repositories),1)]),n("tr",null,[t[47]||(t[47]=n("th",{scope:"row"},"Source storage",-1)),n("td",null,u(e.billingBytes(e.billing.allowance?.storage)),1),n("td",null,u(e.billingBytes(e.profileSelectedPlan()?.storage)),1)]),t[48]||(t[48]=n("tr",null,[n("th",{scope:"row"},"Expiration"),n("td",null,"Scheduled"),n("td",null,"Scheduled or never")],-1)),t[49]||(t[49]=n("tr",null,[n("th",{scope:"row"},"Coauthors"),n("td",null,"Included"),n("td",null,"Included")],-1)),t[50]||(t[50]=n("tr",null,[n("th",{scope:"row"},"Reviewer access"),n("td",null,"Free"),n("td",null,"Free")],-1))])]),n("fieldset",RM,[t[53]||(t[53]=n("legend",{class:"sr-only"},"Billing frequency",-1)),(l(!0),d(K,null,ne(e.profileAuthorPlans(),r=>(l(),d("label",{class:P({selected:e.profileSelectedPlan()?.id===r.id})},[n("input",{type:"radio",name:"profile-plan",checked:e.profileSelectedPlan()?.id===r.id,onChange:a=>e.profilePlan=r.id},null,40,DM),v(u(e.billingPrice(r)),1)],2))),256))]),n("p",TM,"Renews "+u(e.profileSelectedPlan()?.interval==="year"?"annually":"monthly")+" until cancelled. Tax shown at checkout.",1),t[55]||(t[55]=n("p",{class:"settings-help"},"If paid access ends, never-expiring repositories expire after a 90-day grace period.",-1)),n("div",AM,[n("button",{type:"button",class:"btn btn-ink",disabled:e.billingBusy||e.billing.checkoutEnabled===!1,onClick:t[5]||(t[5]=r=>e.checkout(e.profileSelectedPlan().id))},u(e.billingBusy?"Please wait\u2026":"Continue to checkout"),9,OM),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[6]||(t[6]=r=>e.showAuthorPlans=!1)},"Keep current plan")])])):p("v-if",!0),e.billing&&(!e.billing.enabled||e.billing.checkoutEnabled===!1)?(l(),d("p",PM,"New purchases are not available. Existing billing can still be managed below.")):p("v-if",!0)])]),n("section",IM,[t[59]||(t[59]=n("h2",null,"Billing",-1)),n("div",null,[e.billing?.portal?(l(),d("div",VM,[t[58]||(t[58]=n("p",{class:"settings-help"},"Invoices, payment details, and renewal.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[7]||(t[7]=r=>e.billingPortal()),disabled:e.billingBusy},"Manage billing",8,qM)])):(l(),d("p",MM,"No billing account available.")),e.billing?.enabled&&!e.billingPending?(l(),d("button",{key:2,type:"button",class:"settings-text-button",onClick:t[8]||(t[8]=r=>e.refreshBilling()),disabled:e.billingBusy},"Refresh payment status",8,UM)):p("v-if",!0)])]),e.billing?.enabled?(l(),d("section",$M,[t[62]||(t[62]=n("h2",null,"Repository passes",-1)),n("div",null,[n("div",LM,[t[60]||(t[60]=n("p",{class:"settings-help"},[v("One repository for 180 days."),n("br"),v("No subscription or automatic renewal.")],-1)),e.profilePassPlan()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[9]||(t[9]=r=>e.showRepositoryPass=!e.showRepositoryPass),disabled:e.billingPending},"Review a pass",8,FM)):p("v-if",!0)]),e.showRepositoryPass&&e.profilePassPlan()&&!e.billingPending?(l(),d("div",BM,[t[61]||(t[61]=n("label",{for:"billing-repository"},"Repository ID you own",-1)),D(n("input",{id:"billing-repository",class:"form-control","onUpdate:modelValue":t[10]||(t[10]=r=>e.billingRepository=r),placeholder:"Existing anonymized repository ID",autocomplete:"off"},null,512),[[wt,e.billingRepository]]),n("p",HM,u(e.billingPrice(e.profilePassPlan()))+" \xB7 "+u(e.billingBytes(e.profilePassPlan().storage))+" \xB7 Never expire is not included.",1),n("button",{type:"button",class:"btn btn-ink",disabled:e.billingBusy||!e.billingRepository.trim()||e.billing.checkoutEnabled===!1,onClick:t[11]||(t[11]=r=>e.checkout("author_pass",e.billingRepository.trim()))},"Continue to checkout",8,zM)])):p("v-if",!0)])])):p("v-if",!0),e.billing?.grants?.length?(l(),d("section",jM,[t[63]||(t[63]=n("h2",null,"Your purchases",-1)),n("div",null,[(l(!0),d(K,null,ne(e.billing.grants,r=>(l(),d("div",{class:"settings-purchase",key:r.scope+r.planId+r.until},[n("strong",null,u(e.profileGrantName(r)),1),n("span",null,u(r.scope),1),n("p",GM,[v(u(r.status),1),r.status!=="revoked"?(l(),d(K,{key:0},[v(" \xB7 Paid access through "+u(e.billingDate(r.until))+u(r.cancelAtPeriodEnd?" \xB7 Renewal cancelled":""),1)],64)):p("v-if",!0)])]))),128))])])):p("v-if",!0),t[65]||(t[65]=n("section",{class:"settings-row"},[n("h2",null,"Conference hosting"),n("div",{class:"settings-inline"},[n("p",{class:"settings-help"},"Shared hosting is managed per conference."),n("a",{href:"/conferences",class:"btn btn-outline-ink"},"My conferences")])],-1))],8,lM),[[W,e.settingsTab==="billing"]]),D(n("section",WM,[t[75]||(t[75]=n("p",{class:"settings-scope"},"Your identity, repository access, and account.",-1)),n("div",KM,[e.user?.photo?(l(),d("img",{key:0,width:"40",height:"40",class:"rounded-circle",alt:"",src:e.safeUrl(e.user?.photo)},null,8,YM)):p("v-if",!0),n("div",JM,[n("div",QM,"@"+u(e.user?.username),1),t[66]||(t[66]=n("div",{class:"paper-account-meta"},"Signed in with GitHub. Anonymous GitHub only reads your repositories.",-1))]),t[67]||(t[67]=n("a",{class:"btn btn-outline-ink",href:"/api/user/logout",target:"_self"},"Sign out",-1))]),n("form",{class:"paper-account-email",onSubmit:t[15]||(t[15]=de(r=>e.saveAccountEmail(),["prevent"]))},[t[68]||(t[68]=n("label",{class:"paper-field-label",for:"account-email"},"Email address",-1)),t[69]||(t[69]=n("p",{id:"account-email-help",class:"paper-section-copy"},"Used for account alerts. Your address is never shown on anonymous pages.",-1)),D(n("input",{id:"account-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[12]||(t[12]=r=>e.accountEmail=r),"aria-describedby":"account-email-help",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady,onInput:t[13]||(t[13]=r=>e.emailSaved=!1)},null,40,XM),[[wt,e.accountEmail]]),e.emailLoading?(l(),d("p",ZM,"Loading your email address\u2026")):p("v-if",!0),e.emailError?(l(),d("p",xM,u(e.emailError),1)):p("v-if",!0),!e.emailCSRFReady&&!e.emailLoading?(l(),d("button",{key:2,class:"btn btn-outline-ink mt-2",type:"button",onClick:t[14]||(t[14]=r=>e.loadAccountEmail())},"Try again")):p("v-if",!0),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady},u(e.emailSaving?"Saving\u2026":"Save email address"),9,e6),e.emailSaved?(l(),d("p",t6,"Email address saved.")):p("v-if",!0)],32),t[76]||(t[76]=n("a",{class:"paper-settings-connection-link",href:"/connections"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",null,[v("GitHub connections"),n("small",null,"Manage repository access and legacy OAuth.")]),n("span",{"aria-hidden":"true"},"\u2192")],-1)),n("div",n6,[t[73]||(t[73]=n("div",{class:"paper-danger-head"},"Delete account",-1)),t[74]||(t[74]=n("p",{class:"paper-danger-copy"}," Removes all your anonymized repositories, gists, and pull requests, revokes the application's access to your GitHub account, and erases your personal data (username, email, access tokens). This cannot be undone. ",-1)),e.deleteError?(l(),d("div",o6,[t[70]||(t[70]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),t[71]||(t[71]=v()),n("span",{textContent:u(e.deleteError)},null,8,s6)])):p("v-if",!0),n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[16]||(t[16]=r=>e.confirmDeleteAccount=!0),disabled:e.deletingAccount},[t[72]||(t[72]=n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)),v(u(e.deletingAccount?"Deleting\u2026":"Delete my account"),1)],8,i6),e.confirmDeleteAccount?(l(),d("div",r6,[n("label",a6,"Type "+u(e.user?.username)+" to confirm",1),D(n("input",{id:"delete-username",class:"form-control","onUpdate:modelValue":t[17]||(t[17]=r=>e.deleteUsername=r),autocomplete:"off"},null,512),[[wt,e.deleteUsername]]),n("div",l6,[n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[18]||(t[18]=r=>e.deleteAccount()),disabled:e.deletingAccount||e.deleteUsername!==e.user?.username},u(e.deletingAccount?"Deleting\u2026":"Delete permanently"),9,d6),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=r=>{e.confirmDeleteAccount=!1,e.deleteUsername=""}),disabled:e.deletingAccount},"Cancel",8,u6)])])):p("v-if",!0)])],512),[[W,e.settingsTab==="account"]])])}var c6={class:"pr-page"},p6={class:"container paper-page pr-page-inner"},f6={class:"pr-header"},h6={class:"pr-title-row"},m6={class:"paper-page-title pr-title"},v6=["textContent"],g6={key:1,class:"text-muted"},y6=["href"],b6={class:"pr-header-meta"},w6={key:0,class:"pr-meta-item"},k6=["textContent"],E6={key:1,class:"pr-meta-item"},C6=["textContent"],S6={key:2,class:"pr-meta-item"},_6=["textContent"],N6={key:0,class:"pr-body-card"},R6={key:1,class:"paper-tabs",role:"tablist"},D6=["aria-selected","tabindex"],T6=["aria-selected","tabindex"],A6=["textContent"],O6={class:"paper-tab-content"},P6={key:0,role:"tabpanel",id:"pr-diff-panel","aria-labelledby":"pr-diff-tab"},I6=["innerHTML"],V6={key:1,role:"tabpanel",id:"pr-comments-panel","aria-labelledby":"pr-comments-tab"},q6={class:"pr-comments"},M6={class:"pr-comment"},U6={class:"pr-comment-head"},$6={key:0,class:"pr-comment-author"},L6=["textContent"],F6=["textContent"],B6={key:0,class:"pr-comment-body"},H6={key:0,class:"paper-table-empty"};function ed(e,t){let o=Ge("markdown");return l(),d("div",c6,[n("div",p6,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),v(" \xA0/\xA0 "),n("span",{class:"here"},"Pull request")],-1)),n("header",f6,[n("div",h6,[n("h1",m6,[e.details?.title?(l(),d("span",{key:0,textContent:u(e.details?.title)},null,8,v6)):p("v-if",!0),e.details?.title?p("v-if",!0):(l(),d("span",g6,"Untitled pull request"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/pull-request-anonymize/"+e.pullRequestId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,y6)):p("v-if",!0)]),n("div",b6,[n("span",{class:P(["paper-pill",{good:e.details?.merged,warn:e.details?.state=="open",bad:e.details?.state=="closed"&&!e.details?.merged}])},[n("span",{class:P(["status-dot",{"status-ready":e.details?.merged,"status-error":e.details?.state=="closed"&&!e.details?.merged}])},null,2),v(" "+u(e.details?.merged?"Merged":e.fmt.title(e.details?.state)),1)],2),e.details?.baseRepositoryFullName?(l(),d("span",w6,[t[5]||(t[5]=n("i",{class:"fab fa-github"},null,-1)),t[6]||(t[6]=v()),n("span",{textContent:u(e.details?.baseRepositoryFullName)},null,8,k6)])):p("v-if",!0),e.details?.updatedDate?(l(),d("span",E6,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=v()),n("span",{textContent:u(e.fmt?.date(e.details?.updatedDate))},null,8,C6)])):p("v-if",!0),e.details?.anonymizeDate?(l(),d("span",S6,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=v(" Anonymized ",-1)),n("span",{textContent:u(e.fmt?.date(e.details?.anonymizeDate))},null,8,_6)])):p("v-if",!0)])]),e.details?.body?(l(),d("section",N6,[t[11]||(t[11]=n("div",{class:"paper-section-eyebrow"},"Description",-1)),Ce(o,{content:e.details?.body},null,8,["content"])])):p("v-if",!0),e.details?.diff||e.details?.comments?(l(),d("nav",R6,[e.details?.diff?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.tabState?.active=="diff"}]),type:"button",role:"tab",id:"pr-diff-tab","aria-selected":e.tabState?.active==="diff","aria-controls":"pr-diff-panel",tabindex:e.tabState?.active==="diff"?0:-1,onKeydown:t[0]||(t[0]=i=>e.previewTabKeydown(i)),onClick:t[1]||(t[1]=i=>e.tabState.active="diff")},[...t[12]||(t[12]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),v(" Diff ",-1)])],42,D6)):p("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"pr-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"pr-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=i=>e.previewTabKeydown(i)),onClick:t[3]||(t[3]=i=>e.tabState.active="comments")},[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:u(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,A6)],42,T6)):p("v-if",!0)])):p("v-if",!0),n("div",O6,[e.details?.diff&&e.tabState?.active=="diff"?(l(),d("div",P6,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.details?.diff))},null,8,I6)])):p("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",V6,[n("ul",q6,[(l(!0),d(K,null,ne(e.details?.comments,(i,s)=>(l(),d("li",M6,[n("div",U6,[i?.author?(l(),d("span",$6,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=v(" @",-1)),n("span",{textContent:u(i?.author)},null,8,L6)])):p("v-if",!0),i?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:u(e.fmt?.date(i?.updatedDate))},null,8,F6)):p("v-if",!0)]),i?.body?(l(),d("div",B6,[Ce(o,{content:i?.body},null,8,["content"])])):p("v-if",!0)]))),256)),e.details?.comments?.length?p("v-if",!0):(l(),d("li",H6,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this pull request.",-1)])]))])])):p("v-if",!0)])])])}var z6={class:"repository-task status-page"},j6={class:"task-lede"},G6={class:"task-columns"},W6={class:"task-preparation","aria-label":"Repository preparation"},K6={key:0,class:"task-ready",role:"status"},Y6={key:1},J6={key:2,class:"text-danger",role:"alert"},Q6={key:3,class:"paper-section-copy"},X6={key:4,class:"paper-ratelimit-card",role:"status"},Z6={class:"paper-error-msg"},x6=["aria-valuenow"],eU={class:"paper-progress-label"},tU=["textContent"],nU={key:0},oU=["textContent"],sU={class:"paper-progress-pct"},iU={key:6,class:"paper-error-card",role:"alert"},rU={key:0,class:"paper-error-msg"},aU={key:1,class:"paper-error-msg"},lU={key:2},dU=["href"],uU={class:"paper-error-actions"},cU=["href"],pU={key:7,class:"share-link"},fU={class:"share-link-row"},hU=["value"],mU={class:"ui-icon","aria-hidden":"true"},vU=["href"],gU=["textContent"],yU={class:"share-link-actions"},bU=["href"],wU=["href"],kU={class:"task-summary","aria-label":"Repository summary"},EU={class:"task-summary-foot"};function td(e,t){return l(),d("div",z6,[t[23]||(t[23]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"My work"),v(" / Repository")],-1)),t[24]||(t[24]=n("h1",null,"Prepare your anonymous review link",-1)),n("p",j6,u(e.repo?.status==="ready"?"Your repository is ready to share.":"Your settings are saved. Track preparation before sharing the link."),1),t[25]||(t[25]=n("ol",{class:"task-trail","aria-label":"Repository progress"},[n("li",null,"1. Repository"),n("li",null,"2. Review and hosting"),n("li",{"aria-current":"step"},"3. Review link")],-1)),n("div",G6,[n("section",W6,[e.repo?.status==="ready"?(l(),d("div",K6,[...t[3]||(t[3]=[n("strong",null,"Your review link is ready",-1)])])):p("v-if",!0),n("h2",null,u(e.repoId),1),e.repo?.status==="ready"?(l(),d("p",Y6,"Share the link with reviewers. They do not need to sign in.")):p("v-if",!0),e.error?(l(),d("p",J6,[t[4]||(t[4]=v("Unable to load repository status. ",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[0]||(t[0]=o=>e.getStatus())},"Try again")])):p("v-if",!0),e.repo?.status!=="ready"?(l(),d("p",Q6,[...t[5]||(t[5]=[v(" The repository will take a few minutes to get ready, depending on its size. Visit the ",-1),n("a",{href:"/faq"},"FAQ",-1),v(" for more information. ",-1)])])):p("v-if",!0),e.rateLimitResetAt?(l(),d("div",X6,[t[8]||(t[8]=fe('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",Z6,[t[6]||(t[6]=v("Anonymization will resume automatically in ",-1)),n("strong",null,u(e.rateLimitCountdown),1),t[7]||(t[7]=v(". No action needed \u2014 the job is queued and will continue where it left off.",-1))])])):p("v-if",!0),e.repo?.status!=="ready"&&e.repo?.status!="error"&&!e.rateLimitResetAt?(l(),d("div",{key:5,class:P(["paper-progress",{"paper-progress-ready":e.repo?.status=="ready"}]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.progress},[n("div",{class:"paper-progress-bar",style:qe("width: "+e.progress+"%;")},null,4),n("div",eU,[n("span",{textContent:u(e.fmt?.title(e.repo?.status))},null,8,tU),e.repo?.statusMessage?(l(),d("span",nU,[t[9]||(t[9]=v("\xA0\xB7\xA0",-1)),n("span",{textContent:u(e.repo?.statusMessage)},null,8,oU)])):p("v-if",!0),n("span",sU,u(e.progress||0)+"%",1)])],10,x6)):p("v-if",!0),e.repo?.status=="error"&&!e.rateLimitResetAt?(l(),d("div",iU,[t[13]||(t[13]=fe('
Anonymization failed
Something went wrong while preparing this repository.
',1)),e.repo?.statusMessage?(l(),d("p",rU,u(e.fmt?.translate("ERRORS."+e.repo?.statusMessage)),1)):p("v-if",!0),e.repo?.statusMessage?p("v-if",!0):(l(),d("p",aU,"No additional details were reported. The most common causes are private repositories, missing branches, and rate limits.")),e.repo?.statusMessage==="quota_exceeded"?(l(),d("p",lU,[n("a",{href:e.safeUrl("/anonymize/"+e.repoId)},"Review this repository\u2019s hosting",8,dU),t[10]||(t[10]=v(", then retry preparation.",-1))])):p("v-if",!0),t[14]||(t[14]=n("ul",{class:"paper-error-hints"},[n("li",null,"Make sure the source URL points to a repository or pull request you can access."),n("li",null,"Check that the chosen branch and commit still exist on GitHub."),n("li",null,"If you just signed in, the access token may need a moment to propagate \u2014 try again.")],-1)),n("div",uU,[n("a",{class:"btn btn-ink",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[11]||(t[11]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),v(" Edit anonymization",-1)])],8,cU),t[12]||(t[12]=fe(' Read the FAQ Report a bug in Anonymous GitHub',2))])])):p("v-if",!0),e.repo?.status=="ready"?(l(),d("div",pU,[t[17]||(t[17]=n("p",{class:"paper-section-copy"},"Reviewers can browse the repository at this address without seeing who you are.",-1)),n("div",fU,[n("input",{id:"share-url",class:"form-control share-link-input",readonly:"","aria-label":"Anonymous link",value:e.shareUrl,onFocus:t[1]||(t[1]=o=>o.target.select())},null,40,hU),n("button",{type:"button",class:"btn btn-ink",onClick:t[2]||(t[2]=o=>e.copyShareUrl())},[(l(),d("svg",mU,[n("use",{href:e.copied?"#ui-icon-check":"#project-icon-copy"},null,8,vU)])),n("span",{"aria-live":"polite",textContent:u(e.copied?"Copied":"Copy link")},null,8,gU)])]),n("div",yU,[n("a",{class:"btn",target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),v(" Open repository ",-1)])],8,bU),e.repo?.options?.page?(l(),d("a",{key:0,class:"btn",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),v(" Open GitHub page ",-1)])],8,wU)):p("v-if",!0)])])):p("v-if",!0)]),n("aside",kU,[n("h3",null,u(e.repoId),1),n("dl",null,[t[18]||(t[18]=n("dt",null,"Source",-1)),n("dd",null,u(e.repo?.source?.fullName?"https://github.com/"+e.repo.source.fullName:"Loading\u2026"),1),t[19]||(t[19]=n("dt",null,"Lifetime",-1)),n("dd",null,u(e.repo?.options?.expirationMode==="never"?"Never expire while subscribed":e.repo?.options?.expirationDate?"Until "+e.fmt.date(e.repo.options.expirationDate):"Loading\u2026"),1),t[20]||(t[20]=n("dt",null,"Review access",-1)),t[21]||(t[21]=n("dd",null,"Anonymous and free",-1))]),n("div",EU,[n("strong",null,u(e.repo?.status==="ready"?"Ready to share":"Repository preparation"),1),t[22]||(t[22]=n("p",null,"Coauthors do not each need a subscription.",-1))])])])])}var us={"partials/reviewConsent.htm":Rl,"partials/connections.htm":Dl,"partials/signin.htm":Tl,"partials/404.htm":Al,"partials/admin/conferences.htm":Ol,"partials/admin/errors.htm":Pl,"partials/admin/overview.htm":Il,"partials/admin/queues.htm":Vl,"partials/admin/repositories.htm":ql,"partials/admin/user.htm":Ml,"partials/admin/users.htm":Ul,"partials/anonymize.htm":$l,"partials/anonymizePullRequest.htm":Ll,"partials/claim.htm":Fl,"partials/conference.htm":Bl,"partials/conferences.htm":Hl,"partials/dashboard.htm":zl,"partials/explorer.htm":jl,"partials/faq.htm":Gl,"partials/gist.htm":Wl,"partials/header.htm":Kl,"partials/home.htm":Yl,"partials/loading.htm":Jl,"partials/newConference.htm":Ql,"partials/pageView.htm":Xl,"partials/pr-dashboard.htm":Zl,"partials/profile.htm":xl,"partials/pullRequest.htm":ed,"partials/status.htm":td};var CU={class:"ui-icon-definitions","aria-hidden":"true",focusable:"false"};function nd(e,t){return l(),d("svg",CU,[...t[0]||(t[0]=[fe('',1)])])}function od(e,t){e==="partials/explorer.htm"&&(t.sidebarCollapsed=window.matchMedia?.("(max-width: 767px)").matches||!1),e==="partials/anonymize.htm"&&(t.prTabState={active:t.options.diff?"diff":"comments"},t.watchGroup(["options.diff","options.comments"],()=>{t.options[t.prTabState.active]||(t.prTabState.active=t.options.diff?"diff":t.options.comments?"comments":null)})),e==="partials/gist.htm"&&(t.tabState={active:t.details?.files?"files":"comments"}),["partials/conferences.htm","partials/conference.htm"].includes(e)&&(t.statusLabels={ready:"Ready",expired:"Expired",removed:"Removed"});let i={"partials/dashboard.htm":["filteredItems",()=>t.items,"itemFilter"],"partials/conferences.htm":["filteredConferences",()=>t.conferences,"conferenceFilter"],"partials/conference.htm":["filteredRepositories",()=>t.conference?.repositories,"repoFiler"],"partials/admin/repositories.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/user.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/users.htm":["filteredUsers",()=>t.users,"userFiler"],"partials/admin/conferences.htm":["filteredConferences",()=>t.conferences]}[e];if(i){let s=nt(()=>t.fmt.orderBy(t.fmt.filter(i[1](),t[i[2]]),t.orderBy));Object.defineProperty(t,i[0],{configurable:!0,get:()=>s.value})}}function sd(e=(...t)=>fetch(...t)){async function t(i,s,r,a={}){let c=new URL(s,window.location.href);for(let[y,b]of Object.entries(a.params||{}))if(b!=null)for(let h of Array.isArray(b)?b:[b])c.searchParams.append(y,typeof h=="object"?JSON.stringify(h):h);let f=new AbortController,g;a.timeout?.then?a.timeout.then(()=>f.abort()):a.timeout&&(g=setTimeout(()=>f.abort(),a.timeout));try{let y={Accept:"application/json, text/plain, */*",...a.headers},b=document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);b&&c.origin===window.location.origin&&(y["X-XSRF-TOKEN"]=decodeURIComponent(b[1]));let h;r!==void 0&&(r instanceof FormData?h=r:(y["Content-Type"]||(y["Content-Type"]="application/json;charset=utf-8"),h=JSON.stringify(r)));let E=await e(c.href,{method:i,headers:y,body:h,credentials:"same-origin",signal:f.signal}),_=await E.text(),m=_;if(a.transformResponse)m=a.transformResponse(_);else if(_&&(/json/i.test(E.headers.get("content-type")||"")||/^[\[{]/.test(_.trim())))try{m=JSON.parse(_)}catch{}let C={data:m,status:E.status,headers:N=>E.headers.get(N)};if(!E.ok)throw C;return C}catch(y){throw y.name==="AbortError"?{status:-1,data:null}:y}finally{clearTimeout(g)}}let o={};for(let i of["get","delete","head"])o[i]=(s,r)=>t(i.toUpperCase(),s,void 0,r);for(let i of["post","put","patch"])o[i]=(s,r,a)=>t(i.toUpperCase(),s,r,a);return o}var id={resolve:e=>Promise.resolve(e),reject:e=>Promise.reject(e),all:e=>Promise.all(e),defer(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),resolve:e,reject:t}}};var rd=function(e){function t(o){return o=o||{used:0,total:0},o.unlimited=!o.total,o.percent=o.unlimited?0:Math.min(100,o.used*100/o.total),o.level=o.unlimited?"unlimited":o.percent>=95?"danger":o.percent>=80?"warn":"ok",o}return{decorate:t,load:function(){return e.get("/api/user/quota").then(o=>{let i=o.data||{};return i.storage=t(i.storage),i.file=t(i.file),i.repository=t(i.repository),i})}}};var gi={};_d(gi,{bigNum:()=>_U,date:()=>MU,diff:()=>AU,filter:()=>VU,humanFileSize:()=>SU,humanTime:()=>NU,limitTo:()=>IU,number:()=>OU,orderBy:()=>qU,plural:()=>UU,statusLabel:()=>DU,statusMsg:()=>TU,title:()=>RU,uppercase:()=>PU});var SU=e=>window.humanFileSize(e),_U=(function(){return function(t){let o=Number(t)||0,i=Math.abs(o);return i<1e3?String(o):i<1e4?(o/1e3).toFixed(1).replace(/\.0$/,"")+"k":i<1e6?Math.round(o/1e3)+"k":i<1e7?(o/1e6).toFixed(1).replace(/\.0$/,"")+"M":Math.round(o/1e6)+"M"}})(),NU=(function(){return function(t){if(!t)return"never";t instanceof Date&&(t=Math.round((Date.now()-t)/1e3)),(typeof t=="string"||typeof t=="number")&&(t=Math.round((Date.now()-new Date(t))/1e3));var o=t<0?"from now":"ago";if(Math.abs(t)>7200*24){let f=new Date;return f.setSeconds(f.getSeconds()-t),"on "+f.toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"})}t=Math.abs(t);for(var i=[t/60/60/24/365,t/60/60/24/30,t/60/60/24/7,t/60/60/24,t/60/60,t/60,t],s=["year","month","week","day","hour","minute","second"],r=0;r1&&(c+="s"),a>=1)return a+" "+c+" "+o}return"0 seconds "+o}})(),RU=(function(){return function(e){if(!e)return e;e=e.toLowerCase();var t=e.split(" "),o=t.map(function(i){return i.charAt(0).toUpperCase()+i.substring(1,i.length)});return o.join(" ")}})(),DU=(function(){var e={ready:"Ready",error:"Error",expired:"Expired",expiring:"Expiring",removed:"Removed",removing:"Removing",queue:"Queued",download:"Downloading",downloaded:"Downloaded",preparing:"Preparing",anonymizing:"Anonymizing"};return function(t){if(!t)return"";if(e[t])return e[t];var o=String(t).replace(/[_-]+/g," ").toLowerCase();return o.charAt(0).toUpperCase()+o.slice(1)}})(),TU=(function(){var e={branch_not_found:"Branch not found on GitHub",repo_not_found:"Repository not found on GitHub",repository_not_found:"Repository not found on GitHub",repo_not_accessible:"Repository is not accessible with your token",pr_not_found:"Pull request not found on GitHub",gist_not_found:"Gist not found on GitHub",commit_not_found:"Commit not found on GitHub",repo_too_big:"Repository exceeds the size limit",quota_exceeded:"Storage quota exceeded",incomplete_record:"Incomplete record: missing identifier"};return function(t){if(!t)return t;var o=t.match(/^rate_limited:(\d+)$/);if(o){var i=Math.max(0,Math.ceil((parseInt(o[1],10)-Date.now())/1e3));if(i<=0)return"Rate limited \u2014 resuming soon";var s=Math.floor(i/60),r=i%60;return"Rate limited \u2014 retrying in "+(s>0?s+"m "+r+"s":r+"s")}if(e[t])return e[t];if(/^[a-z0-9]+(_[a-z0-9]+)+$/.test(t)){var a=t.replace(/_/g," ");return a.charAt(0).toUpperCase()+a.slice(1)}return t}})(),AU=(function(e){let t=i=>i.replace(/&/g,"&").replace(//g,">");function o(i,s){if(!s)return;let r=s.newPath&&s.newPath!=="/dev/null"?s.newPath:s.oldPath||"",a=s.oldPath==="/dev/null"?"added":s.newPath==="/dev/null"?"deleted":s.oldPath&&s.newPath&&s.oldPath!==s.newPath?"renamed":"modified";if(i.push('
'),i.push('
'+t(r)+''+a+"
"),s.lines.length){i.push('');for(let c of s.lines)i.push('");i.push("
'+(c.oldNo||"")+''+(c.newNo||"")+''+(c.kind==="add"?"+":c.kind==="remove"?"-":c.kind==="hunk"?"@":"")+''+t(c.text)+"
")}i.push("
")}return function(i){if(!i)return i;let s=[],r=null,a=0,c=0,f=()=>(r||(r={oldPath:"",newPath:"",lines:[]}),r),g=()=>{r&&(r.lines.length||r.oldPath||r.newPath)&&(o(s,r),r=null)},y=i.split(` +`);for(let b=0;be});function OU(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function PU(e){return String(e??"").toUpperCase()}function IU(e,t,o=0){return(e||[]).slice(o,o+t)}function VU(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function qU(e,t){if(!t)return e||[];let o=Array.isArray(t)?t:[t];return[...e||[]].sort((i,s)=>{for(let r of o){let a=r[0]==="-"?-1:1;r=r.replace(/^[+-]/,"");let c=r.split(".").reduce((g,y)=>g?.[y],i),f=r.split(".").reduce((g,y)=>g?.[y],s);if(typeof c=="string"&&(c=c.toLowerCase()),typeof f=="string"&&(f=f.toLowerCase()),c!==f)return(c==null?-1:f==null?1:ci[s])}function UU(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var ad={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=et(null);return Lt(()=>{let i=[t.value][0];i.classList.add("html-doc");function s(){i.innerHTML="";let r=e.content;if(typeof r!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let c=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&c.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",c.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),i.appendChild(a);let f="";e.baseUrl&&(f=''),a.srcdoc=f+r}Be(()=>e.content,s,{immediate:!0}),Be(()=>e.baseUrl,s,{immediate:!0}),Be(()=>e.allowScripts,s,{immediate:!0})}),()=>we("html-doc",{ref:t})}};var ld={name:"pdfviewer",props:["src"],setup(e){let t=et(null);return Lt(()=>{let o=[t.value],i=400,s=[.5,.75,1,1.25,1.5,2,3],r=1e3,a=o[0];a.classList.add("pdf-viewer");let c=null,f=[],g=!1,y=null,b=1,h=1,E=0,_=0,m=612/792,C=0,N=null,A=new Map,M=0;function U(k){let S=A.get(k);S&&(S.cancelled=!0,S.task?.cancel?.(),A.delete(k));let V=k.querySelector("canvas");V&&(V.width=0,V.height=0),k.innerHTML="",delete k.dataset.state}let q=document.createElement("div");q.className="pdf-toolbar";let B=document.createElement("div");B.className="pdf-pages",B.tabIndex=0,B.setAttribute("aria-label","PDF pages"),a.appendChild(q),a.appendChild(B);function oe(k,S,V){let G=document.createElement("button");return G.type="button",G.className="pdf-toolbar-btn",G.title=S,G.setAttribute("aria-label",S),G.innerHTML='',G.addEventListener("click",V),G}let ee=oe("fa-chevron-up","Previous page",function(){Te(h-1)}),R=oe("fa-chevron-down","Next page",function(){Te(h+1)}),j=document.createElement("input");j.type="text",j.className="pdf-toolbar-page",j.setAttribute("aria-label","Page number"),j.title="Page number \u2014 type a page and press Enter",j.addEventListener("keydown",function(k){k.key==="Enter"&&(Te(parseInt(j.value,10)),j.blur())}),j.addEventListener("blur",function(){j.value=String(h)});let ie=document.createElement("span");ie.className="pdf-toolbar-count";let ve=oe("fa-search-minus","Zoom out",function(){Z(s[Math.max(0,X()-1)])}),z=oe("fa-search-plus","Zoom in",function(){Z(s[Math.min(s.length-1,X()+1)])}),J=document.createElement("button");J.type="button",J.className="pdf-toolbar-btn pdf-toolbar-zoom",J.title="Reset zoom to fit the width",J.setAttribute("aria-label","Reset zoom to fit the width"),J.addEventListener("click",function(){Z(1)}),q.appendChild(ee),q.appendChild(R);let Q=document.createElement("span");Q.className="pdf-toolbar-group",Q.appendChild(j),Q.appendChild(ie),q.appendChild(Q);let te=document.createElement("span");te.className="pdf-toolbar-group pdf-toolbar-right",te.appendChild(ve),te.appendChild(J),te.appendChild(z),q.appendChild(te);function X(){let k=0;for(let S=0;S=k,J.textContent=Math.round(b*100)+"%",ve.disabled=X()===0,z.disabled=X()===s.length-1}function Ee(k){let S=f[k-1];S&&(B.scrollTop+=S.getBoundingClientRect().top-B.getBoundingClientRect().top)}function Te(k){if(!c||isNaN(k))return;let S=Math.min(Math.max(1,k),c.numPages);f[S-1]&&(Ee(S),h=S,E=S,_=Date.now()+800,re(),Ie())}function Ae(){if(!f.length||Date.now()<_)return;let k=B.getBoundingClientRect(),S=k.top+k.height/2,V=1;for(let G=0;G{}),N=null),y&&(clearTimeout(y),y=null),c&&(c.destroy(),c=null),f=[],h=1,B.innerHTML="",re()}function _e(){B.innerHTML="";let k=document.createElement("div");k.className="pdf-viewer-error",k.textContent="This PDF could not be displayed.",B.appendChild(k)}function ze(){let k=Math.max(120,B.clientWidth-24);return Math.round(Math.min(k,r)*b)}function Ue(k,S,V){let G=window.devicePixelRatio||1,w=k.getViewport({scale:1}),T=parseFloat(S.style.width);if(!T)return;let O=k.getViewport({scale:T/w.width*G}),I=document.createElement("canvas");return I.width=Math.floor(O.width),I.height=Math.floor(O.height),I.style.width=T+"px",I.style.height=Math.floor(O.height/G)+"px",S.innerHTML="",S.appendChild(I),S.style.height=I.style.height,V.task=k.render({canvasContext:I.getContext("2d"),viewport:O}),V.task.promise}function Ie(){if(!c)return;let k=C,S=B.getBoundingClientRect(),V=S.top-i,G=S.top+B.clientHeight+i,w=f.map((O,I)=>({slot:O,i:I,rect:O.getBoundingClientRect()})).filter(O=>O.rect.top<=G&&O.rect.bottom>=V).sort((O,I)=>Math.abs(O.rect.top-S.top)-Math.abs(I.rect.top-S.top)).slice(0,6),T=new Set(w.map(O=>O.slot));for(let O of A.keys())T.has(O)||U(O);for(let{slot:O,i:I}of w){if(O.dataset.state||M>=2)continue;let F={cancelled:!1,task:null};A.set(O,F),M++,O.dataset.state="rendering";let L;c.getPage(I+1).then(ae=>{if(L=ae,!(F.cancelled||k!==C))return Ue(L,O,F)}).then(()=>{F.cancelled||k!==C||(O.dataset.state="done",E&&Date.now()<_&&Ee(E))}).catch(()=>{!F.cancelled&&k===C&&(O.dataset.state="failed")}).finally(()=>{M--,L?.cleanup?.(),c&&Ie()})}}function H(){g||(g=!0,window.requestAnimationFrame(function(){g=!1,Ae(),Ie()}))}function se(){let k=!1;function S(){k||(k=!0,Ie())}window.requestAnimationFrame(S),window.setTimeout(S,50)}function Y(){C++,f.forEach(U);let k=ze();f.forEach(function(S){delete S.dataset.state,S.innerHTML="",S.style.width=k+"px",S.style.height=Math.round(k/m)+"px"}),Ie()}function Z(k){if(!c||!f.length||k===b)return;let S=h;b=k,re(),Y(),Te(S)}function ue(){c&&(y&&clearTimeout(y),y=setTimeout(function(){y=null,c&&f.length&&Y()},250))}function be(k){if(Se(),!k)return;let S=C;N=pdfjsLib.getDocument({url:k,isEvalSupported:!1,standardFontDataUrl:"/script/external/pdf-standard-fonts/",cMapUrl:"/script/external/pdf-cmaps/",cMapPacked:!0}),N.promise.then(function(V){if(S!==C){V.destroy();return}return c=V,c.getPage(1).then(function(G){if(S!==C)return;let w=G.getViewport({scale:1});w.width&&w.height&&(m=w.width/w.height);let T=ze();for(let O=1;O<=c.numPages;O++){let I=document.createElement("div");I.className="pdf-viewer-page",I.style.width=T+"px",I.style.height=Math.round(T/m)+"px",B.appendChild(I),f.push(I)}re(),se()})}).catch(function(){S===C&&_e()})}B.addEventListener("scroll",H,{passive:!0}),$(window).on("resize",ue),re(),Be(()=>e.src,be,{immediate:!0}),cn(function(){B.removeEventListener("scroll",H),$(window).off("resize",ue),Se()})}),()=>we("pdfviewer",{ref:t})}};var $U={key:0,class:"quota-row quota-usage"},LU={class:"quota-header"},FU={class:"quota-label"},BU={class:"project-type-svg","aria-hidden":"true"},HU=["href"],zU={key:0,class:"quota-percent"},jU={key:1,class:"quota-unlimited-tag"},GU={class:"quota-value"},WU={key:0},KU=["aria-label","aria-valuenow","aria-valuemax","aria-valuetext"],YU={key:1,class:"quota-remaining"},JU={key:2,class:"quota-remaining quota-limit"};function dd(e,t){return e.quota?(l(),d("div",$U,[(l(),d(K,null,ne([{key:"repository",label:"Repositories",kind:"count",icon:"project-type-repo"},{key:"storage",label:"Storage",kind:"bytes",icon:"project-icon-storage"},{key:"file",label:"Files",kind:"count",icon:"project-icon-file"}],o=>n("div",{class:P(["quota-item","quota-"+e.quota[o.key].level]),key:o.key},[n("div",LU,[n("span",FU,[(l(),d("svg",BU,[n("use",{href:"#"+o.icon},null,8,HU)])),v(u(o.label),1)]),e.quota[o.key].unlimited?p("v-if",!0):(l(),d("span",zU,u(e.fmt.number(e.quota[o.key].percent,0))+"% used",1)),e.quota[o.key].unlimited?(l(),d("span",jU,"Unlimited")):p("v-if",!0)]),n("div",GU,[n("strong",null,u(e.formatAmount(e.quota[o.key].used,o.kind)),1),e.quota[o.key].unlimited?p("v-if",!0):(l(),d("span",WU," / "+u(e.formatAmount(e.quota[o.key].total,o.kind)),1))]),e.quota[o.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:P(["quota-track","quota-"+e.quota[o.key].level]),role:"progressbar","aria-valuemin":"0","aria-label":o.label+" quota","aria-valuenow":Math.min(e.quota[o.key].used,e.quota[o.key].total),"aria-valuemax":e.quota[o.key].total,"aria-valuetext":e.fmt.number(e.quota[o.key].percent,0)+"% used"},[e.quota[o?.key].unlimited?p("v-if",!0):(l(),d("div",{key:0,class:"quota-fill",style:qe({width:e.quota[o.key].percent+"%"})},null,4))],10,KU)),!e.quota[o.key].unlimited&&e.quota[o.key].used=e.quota[o.key].total?(l(),d("p",JU,u(e.quota[o.key].used>e.quota[o.key].total?"Limit exceeded":"Limit reached"),1)):p("v-if",!0)],2)),64))])):p("v-if",!0)}var QU={props:["quota","fmt"],setup(e){return{formatAmount:(t,o)=>o==="bytes"?e.fmt.humanFileSize(e.quota?.storage?.unit==="bytes"?t*8:t).replace(/([a-zA-Z]+)$/," $1"):e.fmt.number(t)}},render:dd},XU=new Set(ce),cd={props:["content","terms","options"],setup(e){let t=et(null),o=()=>{t.value.innerHTML=renderMD(e.content||"",window.location.pathname+"/../")};return Lt(()=>{o(),Be(()=>[e.content,e.terms,e.options],o,{deep:!0})}),()=>we("markdown",{ref:t})}},ZU={props:["file","terms","options"],setup(e){let t=et(null),o=()=>Ke(()=>t.value?.querySelectorAll("pre code").forEach(i=>window.Prism?.highlightElement(i)));return Lt(o),Be(()=>[e.file?.content,e.terms,e.options],o,{deep:!0}),()=>{let i=e.file||{},s=(i.filename||"").split(".").pop().toLowerCase();if(["md","markdown"].includes(s)||i.language==="Markdown")return we("gist-file",{ref:t},we(cd,{content:i.content,terms:e.terms,options:e.options}));let r={js:"javascript",jsx:"javascript",ts:"javascript",typescript:"javascript",py:"python",html:"markup",xml:"markup",svg:"markup",sh:"bash"},a=(i.language||s||"none").toLowerCase();return we("gist-file",{ref:t},we("pre",{class:"line-numbers"},we("code",{class:"language-"+(r[a]||a),key:i.content},i.content||"")))}}},xU={props:["file","content"],setup(e){let t=et(null),o=0,i,s=async()=>{let r=++o;i?.abort(),i=new AbortController;try{let a=e.content?JSON.parse(e.content):await fetch(e.file?.download_url||e.file,{signal:i.signal}).then(c=>{if(!c.ok)throw Error("Notebook request failed");return c.json()});if(await nn("notebook"),r!==o)return;t.value.innerHTML=DOMPurify.sanitize(nb.parse(a).render()),t.value.querySelectorAll("pre code").forEach(c=>window.Prism?.highlightElement(c))}catch(a){r===o&&a.name!=="AbortError"&&(t.value.textContent="Unable to render the notebook.")}};return Lt(()=>{s(),Be(()=>[e.file,e.content],s)}),cn(()=>{o++,i?.abort()}),()=>we("notebook",{ref:t})}},e$={props:["stats"],setup(e){return()=>{let t=Object.entries(e.stats||{}).filter(([,i])=>i.code),o=t.reduce((i,[,s])=>i+s.code,0);return we("loc",t.map(([i,s])=>we("div",{class:"lang",title:`${i}: ${s.code.toLocaleString()} lines`,style:{width:s.code*100/o+"%",background:langColors[i]}})))}}},pd={Markdown:cd,GistFile:ZU,Notebook:xU,Loc:e$,HtmlDoc:ad,QuotaUsage:QU,Pdfviewer:_r(async()=>(await nn("pdf"),pdfjsLib.GlobalWorkerOptions.workerSrc="/script/external/pdf.worker.js",ld))},fd={async mounted(e,{value:t}){e._editorValue=t;try{if(await Si(),e._editorDisposed)return;let o=e._editorValue,i=ace.edit(e);e._editor=i,i.setValue(String(o.content??""),-1),ud(e,o.options),e._editorCleanup=o.options?.onLoad?.(i)}catch(o){e._editorDisposed||(e.textContent=o.message)}},updated(e,{value:t}){e._editorValue=t,e._editor&&(e._editor.getValue()!==String(t.content??"")&&e._editor.setValue(String(t.content??""),-1),ud(e,t.options))},beforeUnmount(e){e._editorDisposed=!0,e._editorCleanup?.(),e._editor?.destroy()}};function ud(e,t={}){let o=XU.has(t.mode)?t.mode:"text";e._editor.session.setMode("ace/mode/"+o),t.theme&&e._editor.setTheme("ace/theme/"+t.theme),e._editor.setReadOnly(t.readOnly!==!1)}var hd={mounted(e){if(!window.IntersectionObserver)return;let t=[...e.querySelectorAll('a[href^="#"]')],o=new Set,i=new IntersectionObserver(s=>{s.forEach(a=>a.isIntersecting?o.add(a.target.id):o.delete(a.target.id));let r=t.find(a=>o.has(a.hash.slice(1)));t.forEach(a=>a.classList.toggle("active",a===r))},{rootMargin:"-20% 0px -60% 0px",threshold:0});Ke(()=>t.forEach(s=>{let r=document.getElementById(s.hash.slice(1));r&&i.observe(r)})),e._observer=i},beforeUnmount(e){e._observer?.disconnect()}};function t$(e){let t={children:[]},o=new Map([["",t]]);function i(s){if(o.has(s))return o.get(s);let r=s.lastIndexOf("/"),a=i(r<0?"":s.slice(0,r)),c={name:s.slice(r+1),children:[]};return o.set(s,c),a.children.push(c),c}for(let s of e||[]){let r=s.path?`${s.path}/${s.name}`:s.name;s.size==null?i(r):i(s.path||"").children.push({...s})}return t.children}var md={name:"FileTree",props:["file","parent","searchQuery","searchResults","page"],setup(e){let t=el(),o=et(null),i=Fe(Object.create(null)),s=null,r=nt(()=>t$(e.file)),a=()=>"/"+(Array.isArray(t.params.path)?t.params.path.join("/"):t.params.path||"");Be(()=>[t.params.repoId,t.params.path],()=>{let h="";a().split("/").filter(Boolean).forEach(E=>{h+="/"+E,i[h]=!0})},{immediate:!0});let c=nt(()=>{if(!e.searchQuery||!e.searchResults)return null;let h=new Set,E=new Set;return e.searchResults.forEach(_=>{h.add(_.path?`${_.path}/${_.name}`:_.name);let m="";(_.path||"").split("/").filter(Boolean).forEach(C=>{m=m?m+"/"+C:C,E.add(m)})}),{files:h,folders:E}}),f=()=>[...o.value.querySelectorAll("li > a")],g=h=>{o.value.querySelector(".tree-focused")?.classList.remove("tree-focused"),h&&(s=h.dataset.path,h.classList.add("tree-focused"),h.scrollIntoView?.({block:"nearest"}),o.value.focus())};function y(h){let E=f(),_=o.value.querySelector(".tree-focused")||E[0],m=E.indexOf(_);if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Enter"].includes(h.key)||(h.preventDefault(),h.key==="ArrowDown"&&g(E[(m+1)%E.length]),h.key==="ArrowUp"&&g(E[(m-1+E.length)%E.length]),!_))return;let C=_.closest("li");h.key==="ArrowRight"&&C.classList.contains("folder")&&(C.classList.contains("open")?g(C.querySelector(":scope > ul > li > a")):_.click()),h.key==="ArrowLeft"&&(C.classList.contains("folder")&&C.classList.contains("open")?_.click():g(C.parentElement.closest("li.folder")?.querySelector(":scope > a"))),h.key==="Enter"&&_.click()}function b(h,E=""){let _=[...h].sort((m,C)=>+!!C.children-+!!m.children||m.name.localeCompare(C.name));return we("ul",_.flatMap(m=>{let C=m,N=C.name,A=(E+"/"+N).slice(1);if(c.value&&!c.value.files.has(A)&&!c.value.folders.has(A))return[];for(;C.children?.length===1;)C=C.children[0],N+="/"+C.name;let M=E+"/"+N,U=!!C.children,q=c.value?i[M]!==!1:!!i[M],B=U&&e.page?.options?.truncatedFolders?.includes(M.slice(1)),oe=e.page?.fileCounts?.[M.slice(1)]||0,ee=we("span",{class:U?"tree-icon-folder":"far fa-file tree-icon-file","aria-hidden":"true"},U?we("svg",{viewBox:"0 0 14 12",focusable:"false"},we("path",{d:"M1.5 10.5v-9h4l1.5 2h5.5v7z"})):null),R=we("span",{class:"tree-name"},N),j=ve=>{g(ve.currentTarget),U&&(ve.preventDefault(),i[M]=!q,i[M]&&!C.children.length&&e.page.getFiles(M.slice(1)),Ke(()=>g(f().find(z=>z.dataset.path===s))))},ie=we("a",{"data-path":M,href:U?void 0:`/r/${encodeURIComponent(t.params.repoId)}${encodePathForUrl(M)}`,class:{"tree-focused":s===M},onClick:j},[U?we("span",{class:"tree-toggle"}):E?we("span",{class:"tree-spacer"}):null,ee,R,B?we("span",{class:"truncated-warning",title:e.page.fmt.translate("WARNINGS.folder_truncated")},we("i",{class:"fas fa-exclamation-triangle"})):null,U&&oe?we("span",{class:"tree-count"},oe):null]);return we("li",{key:M,class:{file:!0,folder:U,open:q,active:a()===M,truncated:B},title:U?"":`Size: ${humanFileSize(C.size||0)}`},[ie,U&&q?b(C.children,M):null])}))}return()=>we("tree",{ref:o,tabindex:0,onKeydown:y},e.file?.length?c.value?.files.size===0?we("div",{class:"tree-search-empty"},"No files found"):b(r.value):"Empty repository")}};function gd(){return Fe({errors:{},dirty:!1,touched:!1,submitted:!1,get invalid(){return Object.values(this.errors).some(Boolean)},setValidity(e,t){this.errors[e]=!t},setDirty(){this.dirty=!0}})}function yd(e,t){if(!e[t]){let o=gd();Object.defineProperty(o,"invalid",{get(){return Object.values(o.errors).some(Boolean)||Object.keys(o).some(i=>i!=="invalid"&&o[i]&&typeof o[i]=="object"&&o[i].invalid)}}),e[t]=o}return e[t]}var bd={beforeMount(e,{value:t}){e._formState=yd(t,e.name),e.addEventListener("submit",o=>o.preventDefault())}};function n$(e){return e instanceof Date?isNaN(e)?"":`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:e||""}function vd(e){let t=e._field.binding.value;e.type==="checkbox"?e.checked=!!t:e.type==="radio"?e.checked=t==(e._value??e.value):e._field.timer||(e.value=e.type==="date"?n$(t):t??""),yi(e)}function yi(e){let t=e._field.validation;if(!t)return;let o=e.validity;for(let[i,s]of Object.entries({required:o.valueMissing,pattern:o.patternMismatch,min:o.rangeUnderflow,max:o.rangeOverflow,date:o.badInput,email:o.typeMismatch&&e.type==="email",url:o.typeMismatch&&e.type==="url"}))t.setValidity(i,e.disabled||!s)}var wd={beforeMount(e,{value:t}){var a;let o=t.form&&yd(t.state,t.form),i=o&&e.name?o[a=e.name]||(o[a]=gd()):null;e._field={binding:t,validation:i,timer:null};let s=()=>{clearTimeout(e._field.timer),e._field.timer=null;let c=e._field.binding,f=e.type==="checkbox"?e.checked:e._value??e.value;if(!(e.type==="radio"&&!e.checked)){if((e.type==="number"||e.type==="range")&&(f=e.value===""?null:Number(e.value)),e.type==="date"&&(f=e.value?new Date(e.value+"T00:00:00"):null),i){i.setDirty();for(let g of Object.keys(i.errors))i.setValidity(g,!0)}c.set(f),yi(e),c.change?.()}};e._field.commit=s;let r=c=>{let f=e._field.binding.options?.debounce||0,g=typeof f=="number"?f:f[c.type]??f.default??0;clearTimeout(e._field.timer),g?e._field.timer=setTimeout(s,g):s()};e.addEventListener(e.tagName==="SELECT"||["checkbox","radio","date"].includes(e.type)?"change":"input",r),e.addEventListener("blur",()=>{i&&(i.touched=!0),e._field.timer&&s()})},mounted:vd,updated(e,{value:t}){e._field.binding=t,vd(e)},beforeUnmount(e){clearTimeout(e._field.timer);let{binding:t,validation:o}=e._field,i=t.form&&t.state[t.form];i&&i[e.name]===o&&delete i[e.name]}};function kd(e,t){let o=e.target.closest("form");if(o?._formState&&(o._formState.submitted=!0),o?.querySelectorAll("input, select, textarea").forEach(i=>{i._field?.timer&&i._field.commit(),i._field&&yi(i)}),o&&!o.checkValidity()){let i=o.querySelector("input:invalid, select:invalid, textarea:invalid");i?.scrollIntoView?.({block:"center"}),i?.focus(),o.reportValidity();return}return t()}var Ed=Symbol("session"),o$=/^\/(w|api|github)(\/|$)/;function Cd(e,t={}){let o=e?.split(".").reduce((i,s)=>i?.[s],go);return o==null&&e?.startsWith("ERRORS.")&&(o=go.ERRORS.unknown_error),String(o??e??"").replace(/{{\s*([^}]+?)\s*}}/g,(i,s)=>t[s]??"")}var s$={...gi,translate:Cd};function i$(e){if(e==null||e==="")return e;try{let t=new URL(e,window.location.href);return["http:","https:","mailto:","tel:","blob:"].includes(t.protocol)?e:void 0}catch{return}}function r$(e="#app",t={}){let o=!!document.querySelector('meta[name="review-consent-page"][content="1"]'),i=o&&window.location.pathname==="/review-link"?Ei(window):null,s=()=>{let h=i;return i=null,h};!t.history&&window.location.pathname==="/"&&/^#!\/r\/[^/?#]+/.test(window.location.hash)&&window.history.replaceState(window.history.state,"",window.location.hash.slice(2));let r=new Map,a=sd(t.fetch),c,f;function g(){let h=ut(),E={url(m){return m===void 0?f.currentRoute.value.fullPath:(f.push(m),E)},replace(m){return f.replace(m)},path(){return f.currentRoute.value.path},search(){return f.currentRoute.value.query}},_=new Proxy({},{get(m,C){let N=f.currentRoute.value.params[C];return Array.isArray(N)?N.join("/"):N}});return{takeReviewHandoff:s,http:a,...h,location:E,params:_,window,promises:id,html:{trustAsHtml:m=>m},translate:(m,C)=>Promise.resolve(Cd(m,C)),quotaService:rd(a)}}function y(h){return{name:h.template,setup(){let E=pi(dt(Ed),r);h.setup(E,g()),od(h.template,E);let _=[];return()=>us[h.template](E,_)}}}f=xa({history:t.history||Qa(),routes:Nl.map(h=>h.redirect?h:{path:h.path,component:y(h),meta:{title:h.title,preserveExplorer:h.preserveExplorer}})});let b=ga({setup(){c=pi(null,r),c.fmt=s$,c.window=window,c.Math=Math,c.sanitize=m=>DOMPurify.sanitize(m??""),c.highlightRedactions=m=>(c.site_options,sl(m)),c.submitForm=kd,c.safeUrl=i$;let h=g();rl(c,h.http,h.location,h.timeout),un(Ed,c),Be(()=>c.title,m=>{document.title=m||"Anonymous GitHub"});let E=[],_=m=>{let C=m.target.closest?.("a[href]");if(m.defaultPrevented||m.button!==0||m.metaKey||m.ctrlKey||m.shiftKey||m.altKey||!C||C.hasAttribute("download")||C.target&&C.target!=="_self"||C.dataset.toggle||C.getAttribute("href").startsWith("#"))return;let A=new URL(C.href,window.location.href);o||/^\/review-link\/?$/i.test(A.pathname)||A.origin!==window.location.origin||o$.test(A.pathname)||(m.preventDefault(),f.push(A.pathname+A.search+A.hash),$("#navbarSupportedContent.show").collapse("hide"))};return document.addEventListener("click",_),cn(()=>document.removeEventListener("click",_)),()=>[nd(c,[]),o?null:we("header",{class:"app-header"},us["partials/header.htm"](c,E)),we("main",{class:"app-view align-items-stretch w-100"},we(ui,null,{default:({Component:m,route:C})=>m?we(m,{key:C.meta.preserveExplorer?C.matched[0]?.path:C.path}):null})),we("div",{class:"position-fixed p-3",style:{zIndex:999999999,right:0,bottom:0}},c.toasts.map((m,C)=>we("div",{class:"toast show",role:"alert","aria-live":"assertive","aria-atomic":"true",key:C},[we("div",{class:"toast-header"},[we("strong",{class:"mr-auto"},m.title),we("button",{type:"button",class:"ml-2 mb-1 close","aria-label":"Close",onClick:()=>c.removeToast(m)},"\xD7")]),we("div",{class:"toast-body"},m.body)])))]}});for(let[h,E]of Object.entries(pd))b.component(h,E);return b.component("Tree",md),b.component("PartialView",{props:["name","state"],setup(h){let E=[];return()=>us[h.name](h.state,E)}}),b.directive("field",wd),b.directive("form",bd),b.directive("code-editor",fd),b.directive("paper-scrollspy",hd),b.use(f),f.beforeEach(async h=>{if(h.path==="/review-link"&&!o||o&&h.path!=="/review-link")return window.location.assign(h.fullPath),!1;c?.emit("routeLeave"),/^\/(r|repository|anonymize|pull-request-anonymize|gist-anonymize|pr|gist)(\/|$)/.test(h.path)&&await nn("markdown"),/^\/(r|repository)\//.test(h.path)&&await nn("org")}),f.afterEach(h=>{if(!c)return;c.title=h.meta.title,c.emit("routeChange",{title:h.meta.title}),c.emit("routeUpdate",{title:h.meta.title});let E=document.querySelector(".app-view");!h.meta.preserveExplorer&&E&&(E.scrollTop=0)}),b.mount(e),{app:b,router:f,state:c}}document.querySelector("#app")&&(window.anonymousApp=r$());})(); /*! Bundled license information: @vue/shared/dist/shared.esm-bundler.js: diff --git a/src/config.ts b/src/config.ts index d2a9168..631cf9d 100644 --- a/src/config.ts +++ b/src/config.ts @@ -98,6 +98,8 @@ interface Config { */ TRUST_PROXY: string; RATE_LIMIT: number; + /** Website requests per visitor per 15 minutes, independent of the API. */ + WEBSITE_RATE_LIMIT: number; } const config: Config = { BILLING_ENABLED: false, @@ -171,6 +173,7 @@ const config: Config = { // entries. Set a plain number to restore the legacy hop-count behavior. TRUST_PROXY: "loopback,uniquelocal,cloudflare", RATE_LIMIT: 350, + WEBSITE_RATE_LIMIT: 2000, APP_HOSTNAME: "anonymous.4open.science", DB_USERNAME: "admin", DB_PASSWORD: "password", diff --git a/src/core/folder-counts.ts b/src/core/folder-counts.ts new file mode 100644 index 0000000..52d66c4 --- /dev/null +++ b/src/core/folder-counts.ts @@ -0,0 +1,52 @@ +import Repository from "./Repository"; +import AnonymizedFile from "./AnonymizedFile"; +import AnonymousError from "./AnonymousError"; +import FileModel from "./model/files/files.model"; +import { FILE_LISTING_LIMIT } from "./file-tree"; +import { anonymizePathCompiled, compileTerms } from "./anonymize-utils"; + +/** Only return the current folder and its immediate children, never a whole tree. */ +export async function folderCounts(repo: Repository, requestedPath: unknown): Promise> { + if (typeof requestedPath !== "string" || requestedPath.length > 4096 || + requestedPath.split("/").some(part => part === "." || part === "..") || + (requestedPath !== "" && (requestedPath.startsWith("/") || requestedPath.endsWith("/")))) { + throw new AnonymousError("invalid_path", { httpStatus: 400 }); + } + let originalPath = ""; + if (requestedPath) { + // Use the same collision resolution as browsing that anonymized directory. + const directory = await new AnonymizedFile({ repository: repo, anonymizedPath: requestedPath }).getFileInfo(); + if (directory.size != null) throw new AnonymousError("folder_not_supported", { httpStatus: 404 }); + originalPath = [directory.path, directory.name].filter(Boolean).join("/"); + } + const prefix = originalPath ? originalPath + "/" : ""; + const escapedPrefix = prefix.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + const prefixLength = Array.from(prefix).length; + const rows = await FileModel.aggregate<{ _id: string; count: number }>([ + { $match: { + repoId: repo.repoId, + treeGeneration: repo.model.treeGeneration || { $exists: false }, + size: { $ne: null }, + ...(originalPath ? { $or: [{ path: originalPath }, { path: { $regex: "^" + escapedPrefix } }] } : {}), + } }, + { $project: { child: { $cond: [ + { $eq: ["$path", originalPath] }, "", + { $arrayElemAt: [{ $split: [{ $substrCP: ["$path", prefixLength, + { $subtract: [{ $strLenCP: "$path" }, prefixLength] }] }, "/"] }, 0] }, + ] } } }, + { $group: { _id: "$child", count: { $sum: 1 } } }, + { $limit: FILE_LISTING_LIMIT + 1 }, + ]).option({ maxTimeMS: 2000, allowDiskUse: true }).exec(); + if (rows.length > FILE_LISTING_LIMIT) throw new AnonymousError("file_listing_too_large", { httpStatus: 413 }); + const counts: Record = Object.create(null); + const compiled = compileTerms(repo.options.terms || []); + let total = 0; + for (const row of rows) { + total += row.count; + if (!row._id) continue; + const anonymousPath = anonymizePathCompiled(prefix + row._id, compiled); + counts[anonymousPath] = (counts[anonymousPath] || 0) + row.count; + } + counts[requestedPath] = total; + return counts; +} diff --git a/src/server/index.ts b/src/server/index.ts index e4f2fbf..c77e990 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -43,6 +43,7 @@ import { getUser } from "./routes/route-utils"; import config from "../config"; import { resolveTrustProxy } from "./trustProxy"; import { requestRateLimitKey } from "./rate-limit-key"; +import { createWebsiteRateLimiter } from "./website-rate-limit"; import { createLogger, serializeError } from "../core/logger"; import { serverOptions } from "./server-options"; import { monitorRequests } from "../core/request-monitoring"; @@ -238,6 +239,10 @@ export default async function start() { maxDelayMs: 5000, keyGenerator: apiRateKey, }); + const websiteRate = createWebsiteRateLimiter(new RedisStore({ + prefix: "website-rate:", + sendCommand: (...args: string[]) => redisClient.sendCommand(args), + })); app.use("/github", rate, speedLimiter, githubAppRouter); app.use("/github", rate, speedLimiter, connectionRouter); @@ -288,7 +293,7 @@ export default async function start() { }); // web view - app.use("/w/", rate, webViewSpeedLimiter, router.webview); + app.use("/w/", websiteRate, webViewSpeedLimiter, router.webview); // Hashed assets (e.g. core.a1b2c3d4e5.min.js) — immutable, cache for 1 year. // Strip the hash from the filename and serve the underlying file. diff --git a/src/server/routes/repository-public.ts b/src/server/routes/repository-public.ts index dc74786..90fbc40 100644 --- a/src/server/routes/repository-public.ts +++ b/src/server/routes/repository-public.ts @@ -1,4 +1,5 @@ import { FILE_LISTING_LIMIT } from "../../core/file-tree"; +import { folderCounts as scopedFolderCounts } from "../../core/folder-counts"; import { repositoryFailureStatus } from "../../core/repository-failure-status"; import { anonymizePath } from "../../core/anonymize-utils"; import * as express from "express"; @@ -214,6 +215,8 @@ router.get( const repo = await getRepo(req, res); if (!repo) return; try { + if (req.query?.path !== undefined) return res.json(await scopedFolderCounts(repo, req.query.path)); + // Retain the guarded legacy response for clients requesting all counts. const repoId = repo.repoId; const results = await FileModel.aggregate([ { $match: { repoId, treeGeneration: repo.model.treeGeneration || { $exists: false }, size: { $ne: null } } }, diff --git a/src/server/website-rate-limit.ts b/src/server/website-rate-limit.ts new file mode 100644 index 0000000..19203f3 --- /dev/null +++ b/src/server/website-rate-limit.ts @@ -0,0 +1,20 @@ +import rateLimit, { Store } from "express-rate-limit"; +import config from "../config"; +import { requestRateLimitKey } from "./rate-limit-key"; +import { sendRequestRateLimit } from "./request-rate-limit"; + +/** A page's images and scripts must not consume its visitor's API budget. */ +export function createWebsiteRateLimiter(store?: Store) { + if (!Number.isSafeInteger(config.WEBSITE_RATE_LIMIT) || config.WEBSITE_RATE_LIMIT <= 0) { + throw new Error("WEBSITE_RATE_LIMIT must be a positive integer"); + } + return rateLimit({ + windowMs: 15 * 60_000, + limit: config.WEBSITE_RATE_LIMIT, + keyGenerator: requestRateLimitKey, + standardHeaders: "draft-6", + legacyHeaders: false, + handler: sendRequestRateLimit, + ...(store ? { store } : {}), + }); +} diff --git a/test/folder-counts.test.js b/test/folder-counts.test.js new file mode 100644 index 0000000..bba67d6 --- /dev/null +++ b/test/folder-counts.test.js @@ -0,0 +1,100 @@ +const { expect } = require("chai"); +require("ts-node/register/transpile-only"); +const mongoose = require("mongoose"); +const db = require("../src/server/database"); +const Repository = require("../src/core/Repository").default; +const Repo = require("../src/core/model/anonymizedRepositories/anonymizedRepositories.model").default; +const File = require("../src/core/model/files/files.model").default; +const Path = require("../src/core/model/anonymized-path").default; +const { folderCounts } = require("../src/core/folder-counts"); +const { FILE_LISTING_LIMIT } = require("../src/core/file-tree"); +const uri = process.env.PERFORMANCE_MONGO_URI; + +describe("folder count request validation", () => { + for (const value of [[], {}, 1, "../private", "a/../b", "/src", "src/", "x".repeat(4097)]) { + it(`rejects invalid scope ${JSON.stringify(value).slice(0, 30)}`, async () => { + const error = await folderCounts({}, value).then(() => null, error => error); + expect(error.message).to.equal("invalid_path"); expect(error.httpStatus).to.equal(400); + }); + } +}); + +(uri ? describe : describe.skip)("scoped folder counts with MongoDB", function () { + this.timeout(60000); + let repo; + before(async () => { + if (!/\/perf_test_[A-Za-z0-9_-]+(?:\?|$)/.test(uri)) throw Error("An isolated perf_test_ database is required"); + await mongoose.connect(uri); db.isConnected = true; + await Promise.all([Repo, File, Path].map(model => model.createIndexes())); + }); + after(async () => { db.isConnected = false; await mongoose.connection.dropDatabase(); await mongoose.disconnect(); }); + beforeEach(async () => { + await Promise.all([Repo, File, Path].map(model => model.deleteMany({}))); + repo = new Repository(await Repo.create({ repoId: "counts", owner: new mongoose.Types.ObjectId(), status: "ready", + statusDate: new Date(), anonymizeDate: new Date(), treeGeneration: "active", source: { type: "GitHubStream", repositoryName: "fixture/repo" }, options: { terms: [] } })); + }); + const insert = rows => File.insertMany(rows.map(row => ({ repoId: "counts", treeGeneration: "active", ...row }))); + + it("returns only the current directory and immediate children across a large deep tree", async () => { + await insert([{ name: "src", path: "" }, { name: "root.txt", path: "", size: 1 }]); + for (let offset = 0; offset < 12000; offset += 500) await insert(Array.from({ length: 500 }, (_, i) => ({ + name: "file.txt", path: `src/deep/folder${offset + i}`, size: 1, + }))); + await insert([{ name: "ignored.txt", path: "staged", size: 1, treeGeneration: "staged" }, + { name: "ignored.txt", path: "old", size: 1, treeGeneration: "old" }]); + expect(await folderCounts(repo, "")).to.deep.equal({ "": 12001, src: 12000 }); + expect(await folderCounts(repo, "src")).to.deep.equal({ src: 12000, "src/deep": 12000 }); + }); + + it("escapes regex punctuation and handles Unicode scopes and empty directories", async () => { + await insert([{ path: "", name: "猫.[x]" }, { path: "猫.[x]", name: "empty" }, + { path: "猫.[x]/child", name: "a", size: 0 }, { path: "猫.[x]", name: "b", size: 2 }, + { path: "猫Xx/not-this-folder", name: "no", size: 3 }]); + expect(await folderCounts(repo, "猫.[x]")).to.deep.equal({ "猫.[x]": 2, "猫.[x]/child": 1 }); + expect(await folderCounts(repo, "猫.[x]/empty")).to.deep.equal({ "猫.[x]/empty": 0 }); + }); + + it("anonymizes child keys, sums collisions and resolves the same directory as browsing", async () => { + repo.model.options.terms = ["Alice|Bob"]; + await repo.model.save(); + await insert([{ name: "Alice", path: "" }, { name: "Bob", path: "" }, + { name: "one", path: "Alice/sub", size: 1 }, { name: "two", path: "Bob/sub", size: 1 }]); + const root = await folderCounts(repo, ""); + expect(root).to.deep.equal({ "": 2, "XXXX-1": 2 }); + const scoped = await folderCounts(repo, "XXXX-1"); + expect(scoped).to.deep.equal({ "XXXX-1": 1, "XXXX-1/sub": 1 }); + expect(JSON.stringify(scoped)).not.to.match(/Alice|Bob/); + }); + + it("uses the active generation on each request without reusing obsolete counts", async () => { + await insert([{ path: "old", name: "a", size: 1 }]); + expect(await folderCounts(repo, "")).to.deep.equal({ "": 1, old: 1 }); + await insert([{ path: "new", name: "b", size: 1, treeGeneration: "replacement" }, + { path: "new", name: "c", size: 1, treeGeneration: "replacement" }]); + repo.model.treeGeneration = "replacement"; await repo.model.save(); + expect(await folderCounts(new Repository(await Repo.findById(repo.model._id)), "")).to.deep.equal({ "": 2, new: 2 }); + }); + + it("keeps a hard bound for over-wide responses", async () => { + for (let offset = 0; offset <= FILE_LISTING_LIMIT; offset += 500) await insert(Array.from({ + length: Math.min(500, FILE_LISTING_LIMIT + 1 - offset), + }, (_, i) => ({ name: "a", path: `folder${offset + i}`, size: 1 }))); + const error = await folderCounts(repo, "").then(() => null, error => error); + expect(error.message).to.equal("file_listing_too_large"); expect(error.httpStatus).to.equal(413); + }); + + it("runs the scoped route only after authorization and rejects object scopes", async () => { + const utils = require("../src/server/routes/route-utils"); + const original = { getRepo: utils.getRepo, handleError: utils.handleError }; + const router = require("../src/server/routes/repository-public").default; + const handler = router.stack.find(layer => layer.route?.path === "/:repoId/files/counts").route.stack.at(-1).handle; + const res = { header() {}, json() { throw Error("must not return counts"); } }; + try { + utils.getRepo = async () => null; + await handler({ query: { path: {} } }, res); + utils.getRepo = async () => repo; utils.handleError = error => { throw error; }; + const error = await handler({ query: { path: {} } }, res).then(() => null, error => error); + expect(error.httpStatus).to.equal(400); + } finally { Object.assign(utils, original); } + }); +}); diff --git a/test/vue-ui.test.js b/test/vue-ui.test.js index 062eb0e..444a297 100644 --- a/test/vue-ui.test.js +++ b/test/vue-ui.test.js @@ -1618,6 +1618,56 @@ describe("Vue 3 UI", function () { expect(ui.errors).to.deep.equal([]); }); + it("loads scoped folder counts lazily without delaying content and does not refetch on reopen", async function () { + let finishRootCounts; + ui = await browser("/r/test/hello.txt", { + "/api/repo/test/files/": request => request.url.searchParams.get("path") === "src" + ? [{ name: "a.txt", path: "src", size: 3 }, { name: "b.txt", path: "src", size: 3 }] + : [{ name: "hello.txt", path: "", size: 3 }, { name: "src", path: "" }], + "/api/repo/test/files/counts": request => request.url.searchParams.get("path") === "src" + ? { src: 2 } : new Promise(resolve => { finishRootCounts = resolve; }), + }); + expect(ui.window.document.querySelector(".project-file-count")).to.equal(null); + expect(ui.requests.filter(r => /files\/counts$/.test(r.url.pathname)).map(r => r.url.searchParams.get("path"))).to.deep.equal([""]); + finishRootCounts({ "": 3, src: 2 }); + await delay(30); + expect(ui.window.document.querySelector(".project-file-count").textContent).to.equal("3 files"); + const folder = () => ui.window.document.querySelector('tree a[data-path="/src"]'); + folder().click(); await delay(90); + expect(ui.window.document.querySelector('tree a[data-path="/src/a.txt"]')).not.to.equal(null); + folder().click(); await delay(10); folder().click(); await delay(10); + expect(ui.requests.filter(r => /files\/counts$/.test(r.url.pathname)).map(r => r.url.searchParams.get("path"))).to.deep.equal(["", "src"]); + expect(ui.errors).to.deep.equal([]); + }); + + for (const status of [413, 429, 503]) it(`keeps browsing without count badges or retries after counts return ${status}`, async function () { + ui = await browser("/r/test/hello.txt", { + "/api/repo/test/files/": request => request.url.searchParams.get("path") === "src" + ? [{ name: "a.txt", path: "src", size: 3 }] + : [{ name: "hello.txt", path: "", size: 3 }, { name: "src", path: "" }], + "/api/repo/test/files/counts": { __status: status, body: { error: "file_listing_too_large" } }, + }); + await delay(20); + expect(ui.window.document.querySelector(".project-file-count")).to.equal(null); + ui.window.document.querySelector('tree a[data-path="/src"]').click(); await delay(30); + expect(ui.window.document.querySelector('tree a[data-path="/src/a.txt"]')).not.to.equal(null); + expect(ui.requests.filter(r => /files\/counts$/.test(r.url.pathname))).to.have.length(1); + expect(ui.window.document.querySelector(".tree-count")).to.equal(null); + expect(ui.errors).to.deep.equal([]); + }); + + it("ignores a previous repository's delayed counts after navigation", async function () { + let finish; + ui = await browser("/r/test/hello.txt", { + "/api/repo/test/files/counts": () => new Promise(resolve => { finish = resolve; }), + "/api/repo/other/files/counts": { "": 9 }, + }); + await ui.go("/r/other/hello.txt"); + finish({ "": 999 }); await delay(30); + expect(ui.window.document.querySelector(".project-file-count").textContent).to.equal("9 files"); + expect(ui.errors).to.deep.equal([]); + }); + it("starts folders collapsed and opens the selected file's ancestors", async function () { ui = await browser("/r/test/hello.txt", { "/api/repo/test/files/": [ diff --git a/test/website-rate-limit.test.js b/test/website-rate-limit.test.js new file mode 100644 index 0000000..bd28854 --- /dev/null +++ b/test/website-rate-limit.test.js @@ -0,0 +1,52 @@ +/* global fetch */ +const { expect } = require("chai"); +const express = require("express"); +const { rateLimit } = require("express-rate-limit"); +require("ts-node/register/transpile-only"); +const config = require("../src/config").default; +const { createWebsiteRateLimiter } = require("../src/server/website-rate-limit"); +const { requestRateLimitKey } = require("../src/server/rate-limit-key"); + +describe("website request budget", function () { + it("isolates page bursts from the API and keeps a shared website cap across repositories", async () => { + const previous = config.WEBSITE_RATE_LIMIT; + config.WEBSITE_RATE_LIMIT = 3; + const app = express(); + app.set("trust proxy", "loopback"); + app.use("/api", rateLimit({ windowMs: 60000, limit: 1, keyGenerator: requestRateLimitKey }), (_req, res) => res.send("api")); + app.use("/w", createWebsiteRateLimiter(), (_req, res) => res.send("asset")); + let server; + await new Promise(resolve => { server = app.listen(0, "127.0.0.1", resolve); }); + const get = (path, ip = "192.0.2.1", forged = "198.51.100.1") => fetch(`http://127.0.0.1:${server.address().port}${path}`, { + headers: { "x-forwarded-for": ip, "cf-connecting-ip": forged }, + }); + try { + for (const path of ["/w/one/index.html", "/w/one/image.webp", "/w/two/style.css"]) expect((await get(path)).status).to.equal(200); + const blocked = await get("/w/three/app.js", "192.0.2.1", "198.51.100.2"); + expect(blocked.status).to.equal(429); + expect(Number(blocked.headers.get("retry-after"))).to.be.greaterThan(0); + expect((await blocked.json()).error).to.equal("rate_limited"); + expect((await get("/api/options")).status).to.equal(200); + expect((await get("/api/options")).status).to.equal(429); + expect((await get("/w/one/image.webp", "192.0.2.2")).status).to.equal(200); + // Exhausting this visitor's API allowance does not consume website hits. + expect((await get("/api/options", "192.0.2.3")).status).to.equal(200); + expect((await get("/api/options", "192.0.2.3")).status).to.equal(429); + expect((await get("/w/one/image.webp", "192.0.2.3")).status).to.equal(200); + } finally { + config.WEBSITE_RATE_LIMIT = previous; + server.closeAllConnections(); + await new Promise(resolve => server.close(resolve)); + } + }); + + it("refuses disabled or invalid website limits", () => { + const previous = config.WEBSITE_RATE_LIMIT; + try { + for (const value of [0, -1, 1.5, NaN]) { + config.WEBSITE_RATE_LIMIT = value; + expect(() => createWebsiteRateLimiter()).to.throw("positive integer"); + } + } finally { config.WEBSITE_RATE_LIMIT = previous; } + }); +});