/home/techb158/balavpn.abdallabala.com/.next/cache/webpack/client-production
NameSizeModeActions
0.pack151902800666editdlrm
1.pack10575480666editdlrm
2.pack101655780666editdlrm
3.pack27605650666editdlrm
4.pack39280666editdlrm
5.pack534490666editdlrm
6.pack39280666editdlrm
7.pack39280666editdlrm
8.pack39280666editdlrm
9.pack222120666editdlrm
10.pack2434950666editdlrm
11.pack39280666editdlrm
12.pack39280666editdlrm
13.pack39280666editdlrm
14.pack27941130666editdlrm
15.pack404710666editdlrm
16.pack405510666editdlrm
17.pack4487160666editdlrm
index.pack38735700666editdlrm
index.pack.old38730950666editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/.next/cache/webpack/client-production/15.pack (40471B)
wpc ž§webpack/lib/cache/PackFileCacheStrategyPackContentItems €ÊMinifierWebpackPlugin|static/chunks/app/dashboard/page-13249de5af9f4d13.jsÂMinifierWebpackPlugin|static/uda0ZQtlx501_BmHJdoNN/_ssgManifest.jsÄMinifierWebpackPlugin|static/uda0ZQtlx501_BmHJdoNN/_buildManifest.jsÒRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-13249de5af9f4d13.jsÊRealContentHashPlugin|analyse|static/uda0ZQtlx501_BmHJdoNN/_ssgManifest.jsÌRealContentHashPlugin|analyse|static/uda0ZQtlx501_BmHJdoNN/_buildManifest.jsÍRealContentHashPlugin|generate|static/uda0ZQtlx501_BmHJdoNN/_buildManifest.js€†source«webpack/lib/util/registerExternalSerializer™webpack-sources/RawSourceŽ(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5105],{63:(e,s,a)=>{"use strict";var t=a(7260);a.o(t,"useRouter")&&a.d(s,{useRouter:function(){return t.useRouter}}),a.o(t,"useSearchParams")&&a.d(s,{useSearchParams:function(){return t.useSearchParams}})},646:(e,s,a)=>{Promise.resolve().then(a.bind(a,3399))},3399:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>T});var t=a(5155),l=a(2115),i=a(63),n=a(6282);class r extends l.Component{static getDerivedStateFromError(e){return{error:e}}render(){if(this.state.error){let{fallback:e}=this.props;return e?"function"==typeof e?e(this.state.error):e:(0,t.jsxs)("div",{className:"empty-state",children:[(0,t.jsx)("div",{className:"empty-icon",children:"!"}),(0,t.jsxs)("p",{children:["Something went wrong in ",this.props.name||"this section","."]}),(0,t.jsx)("p",{className:"muted",style:{fontSize:12,marginTop:4},children:this.state.error.message}),(0,t.jsx)("button",{className:"button secondary small",style:{marginTop:12},onClick:()=>{var e,s;this.setState({error:null}),null==(e=(s=this.props).onRetry)||e.call(s)},children:"Retry"})]})}return this.props.children}constructor(e){super(e),this.state={error:null}}}let c=["Overview","Risks","Mitigations","Gate","Integrations"],o=["Technical","Governance","Legal","Ethical","Operational"],d=["Design","Development","Testing","Deployment"],u=["OPEN","IN_MITIGATION","ACCEPTED","CLOSED"],m=["NOT_STARTED","IN_PROGRESS","DONE","REJECTED"];function h(e){let{toasts:s}=e;return s.length?(0,t.jsx)("div",{className:"toast-container",children:s.map(e=>(0,t.jsx)("div",{className:"toast ".concat(e.type),children:e.message},e.id))}):null}function x(e){let{value:s,onChange:a,placeholder:l}=e;return(0,t.jsxs)("div",{className:"search-wrap",children:[(0,t.jsx)("span",{className:"search-icon",children:"⌕"}),(0,t.jsx)("input",{className:"input",value:s,onChange:e=>a(e.target.value),placeholder:l||"Search..."})]})}function p(e,s,a){return s?[...e].sort((e,t)=>{let l=e[s],i=t[s];if(null==l)return 1;if(null==i)return -1;let n="number"==typeof l?l-i:String(l).localeCompare(String(i));return"asc"===a?n:-n}):e}function j(e){let{children:s,className:a}=e;return(0,t.jsx)("span",{className:"badge ".concat(a||""),children:s})}function v(e){let{label:s,children:a}=e;return(0,t.jsxs)("div",{style:{marginBottom:10},children:[(0,t.jsx)("label",{style:{display:"block",fontSize:12,color:"var(--muted)",marginBottom:3},children:s}),a]})}function g(e){let{value:s,onChange:a,type:l="text",min:i,max:n,style:r}=e;return(0,t.jsx)("input",{className:"input",type:l,value:s,onChange:e=>a(e.target.value),min:i,max:n,style:{width:"100%",...r}})}function y(e){let{value:s,onChange:a,options:l}=e;return(0,t.jsxs)("select",{className:"input",value:s,onChange:e=>a(e.target.value),style:{width:"100%"},children:[(0,t.jsx)("option",{value:"",children:"— Select —"}),l.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]})}function b(e){let{label:s,onConfirm:a,onCancel:l,deleting:i}=e;return(0,t.jsx)("div",{className:"modal-overlay",onClick:l,children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:380},children:[(0,t.jsxs)("h3",{children:["Delete ",s,"?"]}),(0,t.jsx)("p",{style:{fontSize:13,color:"var(--muted)"},children:"This cannot be undone."}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:l,children:"Cancel"}),(0,t.jsx)("button",{className:"button small",style:{background:"var(--danger)",color:"#fff"},onClick:a,disabled:i,children:i?"Deleting...":"Delete"})]})]})})}function N(e){let{project:s,dashboard:a}=e,i=(0,l.useMemo)(()=>{var e,s,t,l,i,n,r,c,o,d,u,m,h,x,p,j,v,g,y;return a?[{label:"Overall Score",value:null!=(j=null==(e=a.summary)?void 0:e.overallScore)?j:"-",cls:(null==(s=a.summary)?void 0:s.overallScore)>=75?"bad":(null==(t=a.summary)?void 0:t.overallScore)>=50?"warn":"good",sub:"Risk level: ".concat((null==(l=a.summary)?void 0:l.riskLevel)||"-")},{label:"Deployment Gate",value:null!=(v=null==(i=a.summary)?void 0:i.gateStatus)?v:"-",cls:(null==(n=a.summary)?void 0:n.gateStatus)==="Ready"?"good":(null==(r=a.summary)?void 0:r.gateStatus)==="Warning"?"warn":"bad",sub:(null==(c=a.gate)?void 0:c.message)||""},{label:"Open Risks",value:null!=(g=null==(o=a.summary)?void 0:o.openRisks)?g:0,cls:((null==(d=a.summary)?void 0:d.openRisks)||0)>5?"bad":((null==(u=a.summary)?void 0:u.openRisks)||0)>2?"warn":"good",sub:"".concat((null==(m=a.summary)?void 0:m.totalRisks)||0," total risks")},{label:"Mitigation",value:"".concat(null!=(y=null==(h=a.summary)?void 0:h.mitigationCompletion)?y:0,"%"),cls:40>((null==(x=a.summary)?void 0:x.mitigationCompletion)||0)?"bad":70>((null==(p=a.summary)?void 0:p.mitigationCompletion)||0)?"warn":"good",sub:"Average active-risk completion"}]:[]},[a]);return a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"grid",style:{gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"},children:i.map(e=>(0,t.jsxs)("div",{className:"metric-card",children:[(0,t.jsx)("h3",{children:e.label}),(0,t.jsx)("div",{className:"metric-value ".concat(e.cls),children:e.value}),(0,t.jsx)("div",{className:"metric-sub",children:e.sub})]},e.label))}),(0,t.jsxs)("div",{className:"grid",style:{gridTemplateColumns:"1fr 1fr",marginTop:18},children:[(0,t.jsxs)("div",{className:"panel",children:[(0,t.jsx)("h2",{children:"Dimensions"}),(a.dimensions||[]).map(e=>(0,t.jsxs)("div",{style:{marginBottom:12},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:4},children:[(0,t.jsx)("span",{style:{fontSize:13},children:e.name}),(0,t.jsx)("strong",{style:{fontSize:13},children:e.score})]}),(0,t.jsx)("div",{className:"bar-wrap",children:(0,t.jsx)("div",{className:"bar-fill",style:{width:"".concat(Math.min(e.score,100),"%"),background:e.score>=50?"var(--danger)":e.score>=25?"var(--warn)":"var(--accent)"}})})]},e.name))]}),(0,t.jsxs)("div",{className:"panel",children:[(0,t.jsx)("h2",{children:"Lifecycle"}),(a.lifecycle||[]).map(e=>(0,t.jsxs)("div",{style:{marginBottom:12},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:4},children:[(0,t.jsx)("span",{style:{fontSize:13},children:e.name}),(0,t.jsxs)("span",{className:"muted",style:{fontSize:12},children:[e.openRisks," open"]})]}),(0,t.jsx)("div",{className:"bar-wrap",children:(0,t.jsx)("div",{className:"bar-fill",style:{width:"".concat(Math.min(e.riskScore||0,100),"%"),background:(e.riskScore||0)>=50?"var(--danger)":(e.riskScore||0)>=25?"var(--warn)":"var(--accent)"}})})]},e.name))]})]})]}):(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"Loading dashboard data..."})})}function f(e){let{project:s,onClose:a,onSaved:i,toast:r}=e,[c,u]=(0,l.useState)(!1),[m,h]=(0,l.useState)({title:"",description:"",dimension:"",domain:"",lifecyclePhase:"",probability:50,impact:50,detectability:50,ownerDisplayName:""}),x=e=>s=>h(a=>({...a,[e]:s})),p=async()=>{if(!m.title.trim())return void r.add("Title is required","error");if(!m.dimension)return void r.add("Dimension is required","error");u(!0);try{await n.FH.post("/api/projects/".concat(s.id,"/risks"),m),r.add("Risk created"),i()}catch(e){r.add(e.message||"Failed to create risk","error")}finally{u(!1)}};return(0,t.jsx)("div",{className:"modal-overlay",onClick:a,children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:500},children:[(0,t.jsx)("h2",{children:"New Risk"}),(0,t.jsx)(v,{label:"Title *",children:(0,t.jsx)(g,{value:m.title,onChange:x("title")})}),(0,t.jsx)(v,{label:"Description",children:(0,t.jsx)("textarea",{className:"input",value:m.description,onChange:e=>x("description")(e.target.value),rows:3,style:{width:"100%",resize:"vertical"}})}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[(0,t.jsx)(v,{label:"Dimension *",children:(0,t.jsx)(y,{value:m.dimension,onChange:x("dimension"),options:o})}),(0,t.jsx)(v,{label:"Domain",children:(0,t.jsx)(g,{value:m.domain,onChange:x("domain")})})]}),(0,t.jsx)(v,{label:"Lifecycle Phase",children:(0,t.jsx)(y,{value:m.lifecyclePhase,onChange:x("lifecyclePhase"),options:d})}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:8},children:[(0,t.jsx)(v,{label:"Probability",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:m.probability,onChange:x("probability")})}),(0,t.jsx)(v,{label:"Impact",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:m.impact,onChange:x("impact")})}),(0,t.jsx)(v,{label:"Detectability",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:m.detectability,onChange:x("detectability")})})]}),(0,t.jsx)(v,{label:"Owner",children:(0,t.jsx)(g,{value:m.ownerDisplayName,onChange:x("ownerDisplayName")})}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:a,children:"Cancel"}),(0,t.jsx)("button",{className:"button small",onClick:p,disabled:c,children:c?"Saving...":"Create Risk"})]})]})})}function C(e){let{project:s,dashboard:a,toast:i,onRefresh:r}=e,[c,m]=(0,l.useState)(""),[h,N]=(0,l.useState)("normalizedScore"),[C,k]=(0,l.useState)("desc"),[w,S]=(0,l.useState)(0),[D,P]=(0,l.useState)(null),[T,R]=(0,l.useState)(!1),[E,I]=(0,l.useState)(!1),[O,A]=(0,l.useState)({}),[F,L]=(0,l.useState)(null),[M,z]=(0,l.useState)(null),[_,H]=(0,l.useState)(!1),G=(0,l.useMemo)(()=>(null==a?void 0:a.topRisks)?p(a.topRisks,h,C):[],[a,h,C]),W=(0,l.useMemo)(()=>{if(!c)return G;let e=c.toLowerCase();return G.filter(s=>(s.title||"").toLowerCase().includes(e)||(s.dimension||"").toLowerCase().includes(e)||(s.ownerDisplayName||"").toLowerCase().includes(e))},[G,c]),B=W.slice(0,(w+1)*20),q=async(e,s)=>{L(e);try{await n.FH.patch("/api/risks/".concat(e),{status:s}),i.add("Risk status updated to ".concat(s)),P(null),r()}catch(e){i.add(e.message,"error")}finally{L(null)}},U=async()=>{if(!O.title.trim())return void i.add("Title is required","error");L("edit");try{await n.FH.patch("/api/risks/".concat(D.id),O),i.add("Risk updated"),P(null),r()}catch(e){i.add(e.message||"Failed to update","error")}finally{L(null)}},J=async()=>{H(!0);try{await n.FH.del("/api/risks/".concat(M.id)),i.add("Risk deleted"),z(null),P(null),r()}catch(e){i.add(e.message||"Failed to delete","error")}finally{H(!1)}};return a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,marginBottom:12},children:[(0,t.jsx)(x,{value:c,onChange:m,placeholder:"Search risks by title, dimension, owner..."}),(0,t.jsx)("button",{className:"button small",onClick:()=>R(!0),children:"+ New Risk"})]}),(0,t.jsx)("div",{className:"table-wrap",children:(0,t.jsxs)("table",{className:"table",children:[(0,t.jsx)("thead",{children:(0,t.jsx)("tr",{children:[{key:"id",label:"ID"},{key:"title",label:"Risk"},{key:"dimension",label:"Dimension"},{key:"lifecyclePhase",label:"Phase"},{key:"normalizedScore",label:"Score"},{key:"residualScore",label:"Residual"},{key:"status",label:"Status"},{key:"ownerDisplayName",label:"Owner"}].map(e=>(0,t.jsxs)("th",{className:"sortable",onClick:()=>{var s;h===(s=e.key)?k(e=>"asc"===e?"desc":"asc"):(N(s),k("asc"))},children:[e.label," ",h===e.key?"asc"===C?"â–²":"â–¼":""]},e.key))})}),(0,t.jsx)("tbody",{children:B.map(e=>{var s,a,l;return(0,t.jsxs)("tr",{onClick:()=>{var s,a,t;P(e),A({title:e.title||"",description:e.description||"",dimension:e.dimension||"",domain:e.domain||"",lifecyclePhase:e.lifecyclePhase||"",probability:null!=(s=e.probability)?s:50,impact:null!=(a=e.impact)?a:50,detectability:null!=(t=e.detectability)?t:50,ownerDisplayName:e.ownerDisplayName||""}),I(!1),z(null)},children:[(0,t.jsx)("td",{style:{fontFamily:"monospace",fontSize:12},children:null==(s=e.id)?void 0:s.slice(0,8)}),(0,t.jsx)("td",{children:(0,t.jsx)("strong",{children:e.title})}),(0,t.jsx)("td",{children:(0,t.jsx)(j,{className:null==(a=e.dimension)?void 0:a.toLowerCase(),children:e.dimension})}),(0,t.jsx)("td",{style:{fontSize:12},children:e.lifecyclePhase}),(0,t.jsx)("td",{children:(0,t.jsx)("strong",{children:e.normalizedScore})}),(0,t.jsx)("td",{children:(0,t.jsx)("span",{style:{color:e.residualScore>=50?"var(--danger)":e.residualScore>=25?"var(--warn)":"var(--accent)"},children:e.residualScore})}),(0,t.jsx)("td",{children:(0,t.jsx)(j,{className:null==(l=e.status)?void 0:l.toLowerCase().replace(/\s+/g,"-"),children:e.status})}),(0,t.jsx)("td",{children:(0,t.jsx)("span",{className:"muted",children:e.ownerDisplayName||"-"})})]},e.id)})})]})}),W.length>B.length&&(0,t.jsx)("div",{style:{textAlign:"center",marginTop:12},children:(0,t.jsxs)("button",{className:"button secondary small",onClick:()=>S(e=>e+1),children:["Show more (",W.length-B.length," remaining)"]})}),!W.length&&(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"No risks match your search"})}),T&&(0,t.jsx)(f,{project:s,onClose:()=>R(!1),onSaved:()=>{R(!1),r()},toast:i}),D&&!M&&(0,t.jsx)("div",{className:"modal-overlay",onClick:()=>P(null),children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:520},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsx)("h2",{style:{margin:0},children:D.title}),(0,t.jsx)("button",{className:"button secondary small",onClick:()=>I(!E),children:E?"View":"Edit"})]}),E?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{marginTop:12},children:[(0,t.jsx)(v,{label:"Title *",children:(0,t.jsx)(g,{value:O.title,onChange:e=>A(s=>({...s,title:e}))})}),(0,t.jsx)(v,{label:"Description",children:(0,t.jsx)("textarea",{className:"input",value:O.description,onChange:e=>A(s=>({...s,description:e.target.value})),rows:2,style:{width:"100%",resize:"vertical"}})}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[(0,t.jsx)(v,{label:"Dimension",children:(0,t.jsx)(y,{value:O.dimension,onChange:e=>A(s=>({...s,dimension:e})),options:o})}),(0,t.jsx)(v,{label:"Domain",children:(0,t.jsx)(g,{value:O.domain,onChange:e=>A(s=>({...s,domain:e}))})})]}),(0,t.jsx)(v,{label:"Lifecycle Phase",children:(0,t.jsx)(y,{value:O.lifecyclePhase,onChange:e=>A(s=>({...s,lifecyclePhase:e})),options:d})}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:8},children:[(0,t.jsx)(v,{label:"Probability",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:O.probability,onChange:e=>A(s=>({...s,probability:Number(e)}))})}),(0,t.jsx)(v,{label:"Impact",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:O.impact,onChange:e=>A(s=>({...s,impact:Number(e)}))})}),(0,t.jsx)(v,{label:"Detectability",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:O.detectability,onChange:e=>A(s=>({...s,detectability:Number(e)}))})})]}),(0,t.jsx)(v,{label:"Owner",children:(0,t.jsx)(g,{value:O.ownerDisplayName,onChange:e=>A(s=>({...s,ownerDisplayName:e}))})})]}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:()=>P(null),children:"Cancel"}),(0,t.jsx)("button",{className:"button small",onClick:U,disabled:"edit"===F,children:"edit"===F?"Saving...":"Save Changes"}),(0,t.jsx)("button",{className:"button small",style:{background:"var(--danger)",color:"#fff",marginLeft:"auto"},onClick:()=>z(D),children:"Delete"})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,fontSize:13,marginTop:12},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Dimension"}),(0,t.jsx)("br",{}),D.dimension]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Phase"}),(0,t.jsx)("br",{}),D.lifecyclePhase]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Probability"}),(0,t.jsx)("br",{}),D.probability]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Impact"}),(0,t.jsx)("br",{}),D.impact]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Detectability"}),(0,t.jsx)("br",{}),D.detectability]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Score"}),(0,t.jsx)("br",{}),(0,t.jsx)("strong",{children:D.normalizedScore})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Residual"}),(0,t.jsx)("br",{}),D.residualScore]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"muted",children:"Owner"}),(0,t.jsx)("br",{}),D.ownerDisplayName||"-"]})]}),D.description&&(0,t.jsxs)("div",{style:{marginTop:12,fontSize:13},children:[(0,t.jsx)("span",{className:"muted",children:"Description"}),(0,t.jsx)("br",{}),D.description]}),(0,t.jsxs)("div",{style:{marginTop:16},children:[(0,t.jsx)("span",{className:"muted",style:{fontSize:12},children:"Update status:"}),(0,t.jsx)("div",{style:{display:"flex",gap:6,marginTop:6,flexWrap:"wrap"},children:u.map(e=>(0,t.jsx)("button",{className:"button small ".concat("OPEN"===e?"secondary":""),onClick:()=>q(D.id,e),disabled:F===D.id,children:e.replace("_"," ")},e))})]}),(0,t.jsx)("div",{className:"modal-actions",children:(0,t.jsx)("button",{className:"button secondary small",onClick:()=>P(null),children:"Close"})})]})]})}),M&&(0,t.jsx)(b,{label:"this risk",onConfirm:J,onCancel:()=>z(null),deleting:_})]}):(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"Loading..."})})}function k(e){let{project:s,risks:a,onClose:i,onSaved:r,toast:c}=e,[o,d]=(0,l.useState)(!1),[u,h]=(0,l.useState)({riskId:"",title:"",description:"",status:"NOT_STARTED",progressPercent:0,effectivenessPercent:0,dueDate:"",ownerDisplayName:""}),x=e=>s=>h(a=>({...a,[e]:s})),p=async()=>{if(!u.title.trim())return void c.add("Title is required","error");if(!u.riskId)return void c.add("Please select a risk","error");d(!0);try{let e={...u,progressPercent:Number(u.progressPercent),effectivenessPercent:Number(u.effectivenessPercent)};e.dueDate?e.dueDate=new Date(e.dueDate).toISOString():delete e.dueDate,await n.FH.post("/api/risks/".concat(u.riskId,"/mitigations"),e),c.add("Mitigation created"),r()}catch(e){c.add(e.message||"Failed to create mitigation","error")}finally{d(!1)}};return(0,t.jsx)("div",{className:"modal-overlay",onClick:i,children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:500},children:[(0,t.jsx)("h2",{children:"New Mitigation"}),(0,t.jsx)(v,{label:"Risk *",children:(0,t.jsx)(y,{value:u.riskId,onChange:x("riskId"),options:(a||[]).map(e=>({value:e.id,label:e.title}))})}),(0,t.jsx)(v,{label:"Title *",children:(0,t.jsx)(g,{value:u.title,onChange:x("title")})}),(0,t.jsx)(v,{label:"Description",children:(0,t.jsx)("textarea",{className:"input",value:u.description,onChange:e=>x("description")(e.target.value),rows:2,style:{width:"100%",resize:"vertical"}})}),(0,t.jsx)(v,{label:"Status",children:(0,t.jsx)(y,{value:u.status,onChange:x("status"),options:m})}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[(0,t.jsx)(v,{label:"Progress %",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:u.progressPercent,onChange:x("progressPercent")})}),(0,t.jsx)(v,{label:"Effectiveness %",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:u.effectivenessPercent,onChange:x("effectivenessPercent")})})]}),(0,t.jsx)(v,{label:"Due Date",children:(0,t.jsx)(g,{type:"date",value:u.dueDate,onChange:x("dueDate")})}),(0,t.jsx)(v,{label:"Owner",children:(0,t.jsx)(g,{value:u.ownerDisplayName,onChange:x("ownerDisplayName")})}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:i,children:"Cancel"}),(0,t.jsx)("button",{className:"button small",onClick:p,disabled:o,children:o?"Saving...":"Create Mitigation"})]})]})})}function w(e){let{project:s,dashboard:a,toast:i,onRefresh:r}=e,[c,o]=(0,l.useState)(""),[d,u]=(0,l.useState)("progressPercent"),[h,N]=(0,l.useState)("asc"),[f,C]=(0,l.useState)(!1),[w,S]=(0,l.useState)(null),[D,P]=(0,l.useState)(!1),[T,R]=(0,l.useState)({}),[E,I]=(0,l.useState)(null),[O,A]=(0,l.useState)(null),[F,L]=(0,l.useState)(!1),M=(0,l.useMemo)(()=>(null==a?void 0:a.mitigations)?p(a.mitigations,d,h):[],[a,d,h]),z=(0,l.useMemo)(()=>(null==a?void 0:a.topRisks)?a.topRisks:[],[a]),_=(0,l.useMemo)(()=>{if(!c)return M;let e=c.toLowerCase();return M.filter(s=>(s.title||"").toLowerCase().includes(e)||(s.riskTitle||"").toLowerCase().includes(e))},[M,c]),H=async()=>{if(!T.title.trim())return void i.add("Title is required","error");I("edit");try{let e={...T,progressPercent:Number(T.progressPercent),effectivenessPercent:Number(T.effectivenessPercent)};e.dueDate?e.dueDate=new Date(e.dueDate).toISOString():e.dueDate=null,await n.FH.patch("/api/mitigations/".concat(w.id),e),i.add("Mitigation updated"),S(null),r()}catch(e){i.add(e.message||"Failed to update","error")}finally{I(null)}},G=async()=>{L(!0);try{await n.FH.del("/api/mitigations/".concat(O.id)),i.add("Mitigation deleted"),A(null),S(null),r()}catch(e){i.add(e.message||"Failed to delete","error")}finally{L(!1)}};return a?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,marginBottom:12},children:[(0,t.jsx)(x,{value:c,onChange:o,placeholder:"Search mitigations..."}),(0,t.jsx)("button",{className:"button small",onClick:()=>C(!0),children:"+ New Mitigation"})]}),(0,t.jsx)("div",{className:"table-wrap",children:(0,t.jsxs)("table",{className:"table",children:[(0,t.jsx)("thead",{children:(0,t.jsx)("tr",{children:[{key:"title",label:"Title"},{key:"riskTitle",label:"Risk"},{key:"status",label:"Status"},{key:"progressPercent",label:"Progress"},{key:"effectivenessPercent",label:"Effectiveness"},{key:"ownerDisplayName",label:"Owner"}].map(e=>(0,t.jsxs)("th",{className:"sortable",onClick:()=>{var s;d===(s=e.key)?N(e=>"asc"===e?"desc":"asc"):(u(s),N("asc"))},children:[e.label," ",d===e.key?"asc"===h?"â–²":"â–¼":""]},e.key))})}),(0,t.jsx)("tbody",{children:_.slice(0,50).map(e=>{var s;return(0,t.jsxs)("tr",{onClick:()=>{var s,a;S(e),R({title:e.title||"",description:e.description||"",status:e.status||"NOT_STARTED",progressPercent:null!=(s=e.progressPercent)?s:0,effectivenessPercent:null!=(a=e.effectivenessPercent)?a:0,dueDate:e.dueDate?e.dueDate.slice(0,10):"",ownerDisplayName:e.ownerDisplayName||""}),P(!0),A(null)},style:{cursor:"pointer"},children:[(0,t.jsx)("td",{children:(0,t.jsx)("strong",{children:e.title})}),(0,t.jsx)("td",{children:(0,t.jsx)("span",{className:"muted",children:e.riskTitle})}),(0,t.jsx)("td",{children:(0,t.jsx)(j,{className:null==(s=e.status)?void 0:s.toLowerCase().replace(/\s+/g,"-"),children:e.status})}),(0,t.jsx)("td",{children:(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,t.jsx)("div",{className:"bar-wrap",style:{flex:1,maxWidth:80},children:(0,t.jsx)("div",{className:"bar-fill",style:{width:"".concat(e.progressPercent||0,"%"),background:(e.progressPercent||0)>=80?"var(--accent)":(e.progressPercent||0)>=30?"var(--warn)":"var(--danger)"}})}),e.progressPercent||0,"%"]})}),(0,t.jsxs)("td",{children:[e.effectivenessPercent||0,"%"]}),(0,t.jsx)("td",{children:(0,t.jsx)("span",{className:"muted",children:e.ownerDisplayName||"-"})})]},e.id)})})]})}),!_.length&&(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"No mitigations found"})}),f&&(0,t.jsx)(k,{project:s,risks:z,onClose:()=>C(!1),onSaved:()=>{C(!1),r()},toast:i}),w&&!O&&(0,t.jsx)("div",{className:"modal-overlay",onClick:()=>S(null),children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:500},children:[(0,t.jsx)("h2",{style:{margin:0},children:D?"Edit Mitigation":w.title}),(0,t.jsxs)("div",{style:{marginTop:12},children:[(0,t.jsx)(v,{label:"Title *",children:(0,t.jsx)(g,{value:T.title,onChange:e=>R(s=>({...s,title:e}))})}),(0,t.jsx)(v,{label:"Description",children:(0,t.jsx)("textarea",{className:"input",value:T.description,onChange:e=>R(s=>({...s,description:e.target.value})),rows:2,style:{width:"100%",resize:"vertical"}})}),(0,t.jsx)(v,{label:"Status",children:(0,t.jsx)(y,{value:T.status,onChange:e=>R(s=>({...s,status:e})),options:m})}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[(0,t.jsx)(v,{label:"Progress %",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:T.progressPercent,onChange:e=>R(s=>({...s,progressPercent:Number(e)}))})}),(0,t.jsx)(v,{label:"Effectiveness %",children:(0,t.jsx)(g,{type:"number",min:0,max:100,value:T.effectivenessPercent,onChange:e=>R(s=>({...s,effectivenessPercent:Number(e)}))})})]}),(0,t.jsx)(v,{label:"Due Date",children:(0,t.jsx)(g,{type:"date",value:T.dueDate,onChange:e=>R(s=>({...s,dueDate:e}))})}),(0,t.jsx)(v,{label:"Owner",children:(0,t.jsx)(g,{value:T.ownerDisplayName,onChange:e=>R(s=>({...s,ownerDisplayName:e}))})})]}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:()=>S(null),children:"Cancel"}),(0,t.jsx)("button",{className:"button small",onClick:H,disabled:"edit"===E,children:"edit"===E?"Saving...":"Save Changes"}),(0,t.jsx)("button",{className:"button small",style:{background:"var(--danger)",color:"#fff",marginLeft:"auto"},onClick:()=>A(w),children:"Delete"})]})]})}),O&&(0,t.jsx)(b,{label:"this mitigation",onConfirm:G,onCancel:()=>A(null),deleting:F})]}):(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"Loading..."})})}function S(e){var s,a,i;let{project:r,dashboard:c,toast:o,onRefresh:d}=e,[u,m]=(0,l.useState)(!1),[h,x]=(0,l.useState)(!1),[p,b]=(0,l.useState)({decision:"APPROVED",reviewerName:"",reason:""}),[N,f]=(0,l.useState)(!1),C=(null==c||null==(s=c.gate)?void 0:s.criteria)||[],k=(null==c||null==(a=c.summary)?void 0:a.gateStatus)||"Unknown",w=null==c||null==(i=c.gate)?void 0:i.id,S="Ready"===k?"good":"Warning"===k?"warn":"bad",D=async()=>{m(!0);try{await n.FH.post("/api/projects/".concat(r.id,"/gate/evaluate"),{}),o.add("Gate evaluated"),d()}catch(e){o.add(e.message||"Evaluation failed","error")}finally{m(!1)}},P=async()=>{if(!p.reviewerName.trim())return void o.add("Reviewer name is required","error");f(!0);try{await n.FH.post("/api/gates/".concat(w,"/decisions"),p),o.add("Decision submitted"),x(!1),d()}catch(e){o.add(e.message||"Failed to submit decision","error")}finally{f(!1)}};return c?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"dash-header",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{children:"Deployment Gate"}),(0,t.jsx)("p",{className:"muted",children:"Gate evaluation for AI deployment readiness"})]}),(0,t.jsx)("div",{className:"dash-actions",children:(0,t.jsx)("div",{className:"metric-value ".concat(S),style:{fontSize:28},children:k})})]}),(0,t.jsx)("div",{className:"table-wrap",children:(0,t.jsxs)("table",{className:"table",children:[(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{children:[(0,t.jsx)("th",{children:"Criterion"}),(0,t.jsx)("th",{children:"Required"}),(0,t.jsx)("th",{children:"Actual"}),(0,t.jsx)("th",{children:"Status"})]})}),(0,t.jsx)("tbody",{children:C.map(e=>{var s;return(0,t.jsxs)("tr",{children:[(0,t.jsx)("td",{children:(0,t.jsx)("strong",{children:e.name})}),(0,t.jsx)("td",{children:e.required}),(0,t.jsx)("td",{children:e.actual}),(0,t.jsx)("td",{children:(0,t.jsx)(j,{className:null==(s=e.status)?void 0:s.toLowerCase(),children:e.status})})]},e.name)})})]})}),!C.length&&(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"No gate criteria evaluated yet"})}),(0,t.jsxs)("div",{style:{marginTop:16,display:"flex",gap:8,flexWrap:"wrap"},children:[(0,t.jsx)("button",{className:"button small",onClick:D,disabled:u,children:u?"Evaluating...":"Evaluate Gate"}),w&&(0,t.jsx)("button",{className:"button secondary small",onClick:()=>x(!0),children:"Add Decision"}),(0,t.jsx)("a",{href:"/api/projects/".concat(null==r?void 0:r.id,"/gate/history"),className:"button secondary small",target:"_blank",children:"History (API)"})]}),h&&(0,t.jsx)("div",{className:"modal-overlay",onClick:()=>x(!1),children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:400},children:[(0,t.jsx)("h2",{children:"Gate Decision"}),(0,t.jsx)(v,{label:"Decision",children:(0,t.jsx)(y,{value:p.decision,onChange:e=>b(s=>({...s,decision:e})),options:["APPROVED","REJECTED","ACCEPTED","NEEDS_CHANGES"]})}),(0,t.jsx)(v,{label:"Reviewer Name *",children:(0,t.jsx)(g,{value:p.reviewerName,onChange:e=>b(s=>({...s,reviewerName:e}))})}),(0,t.jsx)(v,{label:"Reason",children:(0,t.jsx)("textarea",{className:"input",value:p.reason,onChange:e=>b(s=>({...s,reason:e.target.value})),rows:3,style:{width:"100%",resize:"vertical"}})}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:()=>x(!1),children:"Cancel"}),(0,t.jsx)("button",{className:"button small",onClick:P,disabled:N,children:N?"Saving...":"Submit Decision"})]})]})})]}):(0,t.jsx)("div",{className:"empty-state",children:(0,t.jsx)("p",{children:"Loading..."})})}function D(e){var s;let{project:a,dashboard:i,onClose:r,onSaved:c,toast:o}=e,[d,u]=(0,l.useState)(!1),[m,h]=(0,l.useState)({provider:"TRELLO",workspaceName:"",baseUrl:"",authMode:"API_KEY"}),x=e=>s=>h(a=>({...a,[e]:s})),p=(null==i||null==(s=i.gate)?void 0:s.workspaceId)||(null==a?void 0:a.workspaceId),j=async()=>{if(!m.workspaceName.trim())return void o.add("Workspace name is required","error");u(!0);try{await n.FH.post("/api/workspaces/".concat(p,"/integrations"),m),o.add("Integration created"),c()}catch(e){o.add(e.message||"Failed to create integration","error")}finally{u(!1)}};return(0,t.jsx)("div",{className:"modal-overlay",onClick:r,children:(0,t.jsxs)("div",{className:"modal",onClick:e=>e.stopPropagation(),style:{maxWidth:450},children:[(0,t.jsx)("h2",{children:"New Integration"}),(0,t.jsx)(v,{label:"Provider",children:(0,t.jsx)(y,{value:m.provider,onChange:x("provider"),options:["TRELLO","JIRA","ASANA","MICROSOFT_PLANNER"]})}),(0,t.jsx)(v,{label:"Workspace Name *",children:(0,t.jsx)(g,{value:m.workspaceName,onChange:x("workspaceName")})}),(0,t.jsx)(v,{label:"Base URL",children:(0,t.jsx)(g,{value:m.baseUrl,onChange:x("baseUrl")})}),(0,t.jsx)(v,{label:"Auth Mode",children:(0,t.jsx)(y,{value:m.authMode,onChange:x("authMode"),options:["API_KEY","OAUTH","BASIC"]})}),(0,t.jsxs)("div",{className:"modal-actions",children:[(0,t.jsx)("button",{className:"button secondary small",onClick:r,children:"Cancel"}),(0,t.jsx)("button",{className:"button small",onClick:j,disabled:d,children:d?"Saving...":"Create Integration"})]})]})})}function P(e){let{project:s,dashboard:a,toast:i,onRefresh:n}=e,[r,c]=(0,l.useState)(!1),o=(null==a?void 0:a.integrations)||[];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"dash-header",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{children:"Integrations"}),(0,t.jsx)("p",{className:"muted",children:"Connect Trello, Jira, Asana, or Microsoft Planner"})]}),(0,t.jsx)("div",{className:"dash-actions",children:(0,t.jsx)("button",{className:"button small",onClick:()=>c(!0),children:"+ New Integration"})})]}),(0,t.jsx)("div",{className:"grid",style:{gridTemplateColumns:"repeat(auto-fit, minmax(240px, 1fr))"},children:["TRELLO","JIRA","ASANA","MICROSOFT_PLANNER"].map(e=>{let s=o.find(s=>s.provider===e);return(0,t.jsxs)("div",{className:"panel",style:{textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:8},children:"TRELLO"===e?"⊞":"JIRA"===e?"â—†":"ASANA"===e?"â—‡":"â–£"}),(0,t.jsx)("h3",{style:{margin:"0 0 4px"},children:e.replace("_"," ")}),(0,t.jsx)("p",{className:"muted",style:{fontSize:12,margin:"0 0 12px"},children:s?s.workspaceName:"Not configured"}),(0,t.jsx)("div",{style:{display:"flex",gap:6,justifyContent:"center"},children:s?(0,t.jsx)("a",{href:"/api/integrations/".concat(s.id),className:"button secondary small",target:"_blank",children:"Manage"}):(0,t.jsx)("button",{className:"button secondary small",onClick:()=>c(!0),children:"Configure"})})]},e)})}),r&&(0,t.jsx)(D,{project:s,dashboard:a,onClose:()=>c(!1),onSaved:()=>{c(!1),n()},toast:i}),!o.length&&(0,t.jsx)("div",{style:{marginTop:12},children:(0,t.jsx)("a",{href:"/api/integration-providers",className:"button secondary small",target:"_blank",children:"Integration providers (API)"})})]})}function T(){let e=(0,i.useRouter)(),s=(0,i.useSearchParams)(),a=c.includes(s.get("tab"))?s.get("tab"):"Overview",[o,d]=(0,l.useState)(null),[u,m]=(0,l.useState)(null),[x,p]=(0,l.useState)(!0),[j,v]=(0,l.useState)(null),[g,y]=(0,l.useState)(0),{toasts:b,add:f}=function(){let[e,s]=(0,l.useState)([]);return{toasts:e,add:(0,l.useCallback)(function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"success",t=Date.now()+Math.random();s(s=>[...s,{id:t,message:e,type:a}]),setTimeout(()=>s(e=>e.filter(e=>e.id!==t)),3e3)},[])}}(),k=(0,l.useCallback)(()=>y(e=>e+1),[]),D=(0,l.useCallback)(async()=>{p(!0),v(null);try{var e,s,a;let t=await n.FH.get("/api/auth/session");if(!(null==t?void 0:t.authenticated)){v("Not authenticated."),p(!1);return}let l=null==(e=t.memberships)?void 0:e[0];if(!l){v("No organization membership found."),p(!1);return}let i=l.organizationId,r=null==(s=(await n.FH.get("/api/workspaces?organizationId=".concat(i))).workspaces)?void 0:s[0];if(!r){v("No workspace found — create one to get started."),p(!1);return}let c=null==(a=(await n.FH.get("/api/workspaces/".concat(r.id,"/projects"))).projects)?void 0:a[0];if(!c){v("No project found — create a project to get started."),p(!1);return}d(c);let o=await n.FH.get("/api/projects/".concat(c.id,"/dashboard"));m(o.dashboard),p(!1)}catch(e){v(e.message||"Failed to load dashboard data"),p(!1)}},[]);return((0,l.useEffect)(()=>{D()},[D,g]),x&&"Integrations"!==a)?(0,t.jsx)("div",{className:"shell-loading",children:(0,t.jsx)("div",{className:"spinner"})}):j&&"Integrations"!==a?(0,t.jsxs)("div",{className:"empty-state",children:[(0,t.jsx)("div",{className:"empty-icon",children:"!"}),(0,t.jsx)("p",{children:j}),(0,t.jsx)("button",{className:"button secondary small",style:{marginTop:12},onClick:()=>y(e=>e+1),children:"Retry"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"dash-header",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{children:(null==o?void 0:o.name)||"Dashboard"}),(0,t.jsx)("p",{className:"muted",children:(null==o?void 0:o.subtitle)||""})]}),(0,t.jsxs)("div",{className:"dash-actions",children:[(0,t.jsx)("a",{href:"/api/projects/".concat(null==o?void 0:o.id,"/reports/executive.html"),className:"button secondary small",target:"_blank",children:"Report"}),(0,t.jsx)("a",{href:"/api/projects/".concat(null==o?void 0:o.id,"/reports/risk-register.csv"),className:"button secondary small",target:"_blank",children:"CSV"})]})]}),(0,t.jsx)("div",{className:"tabs",children:c.map(s=>(0,t.jsx)("button",{className:"tab ".concat(a===s?"active":""),onClick:()=>e.push("/dashboard?tab=".concat(s)),children:s},s))}),"Overview"===a&&(0,t.jsx)(r,{name:"Overview",children:(0,t.jsx)(N,{project:o,dashboard:u})},"overview"),"Risks"===a&&(0,t.jsx)(r,{name:"Risks",children:(0,t.jsx)(C,{project:o,dashboard:u,toast:{add:f},onRefresh:k})},"risks"),"Mitigations"===a&&(0,t.jsx)(r,{name:"Mitigations",children:(0,t.jsx)(w,{project:o,dashboard:u,toast:{add:f},onRefresh:k})},"mitigations"),"Gate"===a&&(0,t.jsx)(r,{name:"Gate",children:(0,t.jsx)(S,{project:o,dashboard:u,toast:{add:f},onRefresh:k})},"gate"),"Integrations"===a&&(0,t.jsx)(r,{name:"Integrations",children:(0,t.jsx)(P,{project:o,dashboard:u,toast:{add:f},onRefresh:k})},"integrations"),(0,t.jsx)(h,{toasts:b})]})}},6282:(e,s,a)=>{"use strict";async function t(e,s,a){var t;let l={method:e,headers:{"Content-Type":"application/json"}};a&&(l.body=JSON.stringify(a));let i=await fetch("".concat("").concat(s),l),n=(null==(t=i.headers.get("content-type"))?void 0:t.includes("application/json"))?await i.json():await i.text();if(!i.ok)throw Error((null==n?void 0:n.error)||(null==n?void 0:n.message)||"Request failed (".concat(i.status,")"));return n}a.d(s,{FH:()=>l,Ht:()=>i,ri:()=>n});let l={get:e=>t("GET",e),post:(e,s)=>t("POST",e,s),put:(e,s)=>t("PUT",e,s),patch:(e,s)=>t("PATCH",e,s),del:e=>t("DELETE",e)};async function i(){try{let e=await l.get("/api/auth/session");return e.user||e.actor||null}catch(e){return null}}async function n(){await l.post("/api/auth/logout"),window.location.href="/"}}},e=>{e.O(0,[8441,1255,7358],()=>e(e.s=646)),_N_E=e.O()}]); üMself.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB(); ùZself.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:24,errorRate:1e-4,numBits:461,numHashes:14,bitArray:[1,0,1,e,e,e,e,e,0,e,r,r,e,e,r,e,r,e,e,r,e,r,e,r,e,e,r,r,r,e,e,r,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,r,r,e,e,e,r,e,r,r,e,e,e,e,e,r,e,r,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,r,r,e,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,r,e,r,e,e,e,r,r,r,e,e,e,r,e,e,r,r,r,r,e,e,e,r,e,r,e,e,e,e,e,e,e,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,r,e,e,e,r,e,e,e,r,r,e,e,r,e,r,r,e,e,r,e,e,e,r,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,r,e,e,r,r,e,e,e,e,e,e,r,r,e,e,e,e,e,r,e,e,r,e,e,e,e,r,e,r,r,e,e,e,r,e,e,r,e,e,r,r,e,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,r,e,r,r,r,r,r,r,e,e,r,e,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,r,e,r,e,e,r,r,r,r,r,e,r,e,r,r,e,r,r,r,e,r,e,r,e,e,e,e,r,e,r,e,e,e,e,r,r,r,e,r,e,r,e,e,e,r,r,e,e,r,e,r,r,r,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,r,e,e,r,e,e,r,e,e,e]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[r,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,e,e,r,r,r,r,e,e,r,e,e,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,e,e,r,r,e,r,e,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,e,r,r,r,r,e,r,r,e,e,r,r,r,r,e,r,r,r,r,e,r,e,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-adab2008ace8b58f.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); €€adab2008ace8b58fZself.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:24,errorRate:1e-4,numBits:461,numHashes:14,bitArray:[1,0,1,e,e,e,e,e,0,e,r,r,e,e,r,e,r,e,e,r,e,r,e,r,e,e,r,r,r,e,e,r,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,r,r,e,e,e,r,e,r,r,e,e,e,e,e,r,e,r,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,r,r,e,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,r,e,r,e,e,e,r,r,r,e,e,e,r,e,e,r,r,r,r,e,e,e,r,e,r,e,e,e,e,e,e,e,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,r,e,e,e,r,e,e,e,r,r,e,e,r,e,r,r,e,e,r,e,e,e,r,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,r,e,e,r,r,e,e,e,e,e,e,r,r,e,e,e,e,e,r,e,e,r,e,e,e,e,r,e,r,r,e,e,e,r,e,e,r,e,e,r,r,e,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,r,e,r,r,r,r,r,r,e,e,r,e,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,r,e,r,e,e,r,r,r,r,r,e,r,e,r,r,e,r,r,r,e,r,e,r,e,e,e,e,r,e,r,e,e,e,e,r,r,r,e,r,e,r,e,e,e,r,r,e,e,r,e,r,r,r,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,r,e,e,r,e,e,r,e,e,e]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[r,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,e,e,r,r,r,r,e,e,r,e,e,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,e,e,r,r,e,r,e,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,e,r,r,r,r,e,r,r,e,e,r,r,r,r,e,r,r,r,r,e,r,e,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-e4ba546eb376bdf4.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();