1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];if(null!=r)for(var a in r)r.hasOwnProperty(a)&&(e[a]=r[a])}return e}({},e._sentryModuleMetadata[(new e.Error).stack],{"_sentryBundlerPluginAppKey:smallstep-website-f70fd89e":!0});var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="45463172-1519-42b4-a1fa-77eff9ed51cb",e._sentryDebugIdIdentifier="sentry-dbid-45463172-1519-42b4-a1fa-77eff9ed51cb")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9151],{99151:(e,t,r)=>{r.r(t),r.d(t,{applyDagreLayoutResult:()=>D,getEdgesToRender:()=>m,measureDagreLayout:()=>K,prepareLayoutForDagre:()=>C,render:()=>k,runDagreLayoutCore:()=>M});var a=r(32538),n=r(68093),d=r(27511),i=r(17352),o=r(71438);r(71128),r(86087),r(84710),r(97199);var l=r(39438),s=r(86700),g=r(34090),h=r(20916),u=r(49856),p=(0,g.K)((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),f=(0,g.K)((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";default:return"top"}},"getDefaultSelfLoopSide"),c=(0,g.K)(e=>"flowchart"===e||"flowchart-v2"===e||"stateDiagram"===e||"er"===e||"classDiagram"===e,"shouldMergeSelfLoopSegments"),y=["x","y","width","height","labelBBox","intersect","calcIntersect","diff","clusterNode"],w=(0,g.K)((e,t,r,a,n)=>{let d=[],i=new Set;if(r.forEach(({start:e,end:t})=>{e!==a&&i.add(e),t!==a&&i.add(t)}),i.forEach(t=>{let r=e.node(t);"number"==typeof r?.x&&"number"==typeof r?.y&&d.push(r)}),0===d.length&&r.forEach(({edge:e})=>{(e.points??[]).forEach(e=>{"number"==typeof e?.x&&"number"==typeof e?.y&&d.push(e)})}),0===d.length)return f(n);let o=d.reduce((e,t)=>({x:e.x+t.x/d.length,y:e.y+t.y/d.length}),{x:0,y:0}),l=o.x-t.x,s=o.y-t.y;return Math.abs(l)>Math.abs(s)?l>0?"right":"left":Math.abs(s)>0?s>0?"bottom":"top":f(n)},"getSelfLoopSide"),L=(0,g.K)((e,t="top",r=0,a=0)=>{let n=e.x,d=e.y-r,i=e.width/2,o=e.height/2,l=Math.max(36,Math.min(100,.8*e.width)),s=p(Math.max(a,.35*e.width),36,l),g=p(.45*Math.min(e.width,e.height),24,48);switch(t){case"bottom":{let e=d+o;return[{x:n-s/2,y:e},{x:n-s/2,y:e+g},{x:n+s/2,y:e+g},{x:n+s/2,y:e}]}case"right":{let e=n+i;return[{x:e,y:d-s/2},{x:e+g,y:d-s/2},{x:e+g,y:d+s/2},{x:e,y:d+s/2}]}case"left":{let e=n-i;return[{x:e,y:d-s/2},{x:e-g,y:d-s/2},{x:e-g,y:d+s/2},{x:e,y:d+s/2}]}default:{let e=d-o;return[{x:n-s/2,y:e},{x:n-s/2,y:e-g},{x:n+s/2,y:e-g},{x:n+s/2,y:e}]}}},"getSelfLoopPoints"),b=(0,g.K)((e,t,r="top",a=0,n={})=>{let d=e.x,i=e.y-a,o=n.width??0,l=n.height??0;switch(r){case"bottom":return{x:d,y:Math.max(...t.map(e=>e.y))+l/2+4};case"right":return{x:Math.max(...t.map(e=>e.x))+o/2+4,y:i};case"left":return{x:Math.min(...t.map(e=>e.x))-o/2-4,y:i};default:return{x:d,y:Math.min(...t.map(e=>e.y))-l/2-4}}},"getSelfLoopLabelPosition"),m=(0,g.K)((e,t=0,{mergeSelfLoops:r=!0}={})=>{let a=new Map,n=[],d=e.graph()?.rankdir;
1return e.edges().forEach(t=>{let d=e.edge(t);if(r&&d.selfLoop){let e=d.selfLoop.id;a.has(e)||a.set(e,[]),a.get(e).push({edge:d,start:t.v,end:t.w})}else n.push({edge:d,start:t.v,end:t.w})}),a.forEach(r=>{if(3!==r.length)return void r.forEach(e=>n.push(e));r.sort((e,t)=>e.edge.selfLoop.order-t.edge.selfLoop.order);let[a,i,o]=r,l=a.edge.originalEdge??i.edge.originalEdge??o.edge.originalEdge??i.edge,s=e.node(l.start);if(!s)return void r.forEach(e=>n.push(e));let g={width:i.edge.width,height:i.edge.height},h=w(e,s,r,l.start,d),u=L(s,h,t,g.width??0),p=b(s,u,h,t,g),f={...i.edge,...l,id:l.id,points:u,start:l.start,end:l.end,x:p.x,y:p.y,width:g.width,height:g.height,labelStyle:i.edge.labelStyle,fromCluster:a.edge.fromCluster??i.edge.fromCluster??o.edge.fromCluster,toCluster:a.edge.toCluster??i.edge.toCluster??o.edge.toCluster};delete f.selfLoop,delete f.originalEdge,n.push({edge:f,start:f.start,end:f.end})}),n},"getEdgesToRender"),E=(0,g.K)(async({element:e,graph:t,diagramType:r,id:n,parentCluster:l,siteConfig:h})=>{let u=t.graph().rankdir;s.R.trace("Dir in recursive render - dir:",u);let{clusters:p,edgePaths:f,edgeLabels:y,nodes:w,rootGroups:L}=(0,a.B)(e,{edgePathsClass:"edgePaths"});t.nodes()?s.R.info("Recursive render XXX",t.nodes()):s.R.info("No nodes found for",t),t.edges().length>0&&s.R.info("Recursive edges",t.edge(t.edges()[0]));let b=c(r);await Promise.all(t.nodes().map(async function(e){let d=t.node(e);if(void 0!==l){let r=JSON.parse(JSON.stringify(l.clusterData));s.R.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",r.height,"\nParent cluster",l.height),t.setNode(l.id,r),t.parent(e)||(s.R.trace("Setting parent",e,l.id),t.setParent(e,l.id,r))}if(s.R.info("(Insert) Node XXX"+e+": "+JSON.stringify(t.node(e))),d?.clusterNode){s.R.info("Cluster identified XBX",e,d.width,t.node(e));let{ranksep:a,nodesep:l}=t.graph();d.graph.setGraph({...d.graph.graph(),ranksep:a+25,nodesep:l});let g=await v({element:w,graph:d.graph,diagramType:r,id:n,parentCluster:t.node(e),siteConfig:h}),u=g.elem;(0,o.lC)(d,u),d.diff=g.diff||0,s.R.info("New compound node after recursive render XAX",e,"width",d.width,"height",d.height),(0,i.U7)(u,d)}else t.children(e).length>0?(s.R.trace("Cluster - the non recursive path XBX",e,d.id,d,d.width,"Graph:",t),s.R.trace((0,a.dc)(d.id,t)),a.ju.set(d.id,{id:(0,a.dc)(d.id,t),node:d})):(s.R.trace("Node - the non recursive path XAX",e,w,t.node(e),u),await (0,a.sv)(w,t.node(e),{config:h,dir:u}))}));let m=(0,g.K)(async()=>{let e=t.edges().map(async function(e){let r=t.edge(e.v,e.w,e.name);if(s.R.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),s.R.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(t.edge(e))),s.R.info("Fix",a.ju,"ids:",e.v,e.w,"Translating: ",a.ju.get(e.v),a.ju.get(e.w)),b&&r.selfLoop){if(1!==r.selfLoop.order)return;let e={...r.originalEdge,...r,id:r.selfLoop.id,startLabelLeft:r.originalEdge?.startLabelLeft??r.startLabelLeft,startLabelRight:r.originalEdge?.startLabelRight??r.startLabelRight,endLabelLeft:r.originalEdge?.endLabelLeft??r.endLabelLeft,endLabelRight:r.originalEdge?.endLabelRight??r.endLabelRight};await (0,d.jP)(y,e),r.width=e.width,r.height=e.height,r.labelStyle=e.labelStyle;return}await (0,d.jP)(y,r)});await Promise.all(e)},"processEdges");await m();let{subGraphTitleTotalMargin:E}=(0,i.Oi)(h);return{elem:L,graph:t,groups:{clusters:p,edgePaths:f,edgeLabels:y,nodes:w,rootGroups:L},diagramType:r,id:n,mergeSelfLoops:b,subGraphTitleTotalMargin:E}},"measureDagreGraph"),R=(0,g.K)(e=>{s.R.info("############################################# XXX"),s.R.info("### Layout ### XXX"),s.R.info("############################################# XXX"),(0,h.Zp)(e)},"runDagreGraphLayout"),x=(0,g.K)((e,t,r)=>{let a=e.node(t);if(!a)return;let n={...a};return a?.clusterNode?n.y=(a.y??0)+r:e.children(t).length>0?n.height=(a.height??0)+r:n.y=(a.y??0)+r/2,n},"normalizeDagreNode"),X=(0,g.K)((e,t)=>{y.forEach(r=>{void 0!==t[r]&&(e[r]=t[r])})},"applyDagreNodeLayout"),S=(0,g.K)((e,t,r,a)=>({...e,start:e.start??t,end:e.end??r,points:(e.points??[]).map(e=>({...e,y:"number"==typeof e.y?e.y+a:e.y}))}),"normalizeDagreEdge"),D=(0,g.K)((e,t)=>{let{graph:r,mergeSelfLoops:n,subGraphTitleTotalMargin:d=0}
1=t,i=new Map(e.nodes.map(e=>[e.id,e]));(0,a.sc)(r).forEach(e=>{let t=x(r,e,d);if(!t)return;X(r.node(e),t);let a=i.get(e);a&&X(a,t)});let o=d/2;return e.edges=m(r,o,{mergeSelfLoops:n}).map(({edge:e,start:t,end:r})=>S(e,t,r,o)),e},"applyDagreLayoutResult"),N=(0,g.K)(async({elem:e,graph:t,groups:{clusters:r,edgePaths:o},diagramType:l,id:g,mergeSelfLoops:h,subGraphTitleTotalMargin:u})=>{let p=0;await Promise.all((0,a.sc)(t).map(async function(e){let d=t.node(e);if(s.R.info("Position XBX => "+e+": ("+d.x,","+d.y,") width: ",d.width," height: ",d.height),d?.clusterNode)d.y+=u,s.R.info("A tainted cluster node XBX1",e,d.id,d.width,d.height,d.x,d.y,t.parent(e)),a.ju.get(d.id).node=d,(0,i.U_)(d);else if(t.children(e).length>0){s.R.info("A pure cluster node XBX1",e,d.id,d.x,d.y,d.width,d.height,t.parent(e)),d.height+=u,t.node(d.parentId);let i=d?.padding/2||0,o=d?.labelBBox?.height||0;s.R.debug("OffsetY",o-i||0,"labelHeight",o,"halfPadding",i),await (0,n.U)(r,d),a.ju.get(d.id).node=d}else{let e=t.node(d.parentId);d.y+=u/2,s.R.info("A regular node XBX1 - using the padding",d.id,"parent",d.parentId,d.width,d.height,d.x,d.y,"offsetY",d.offsetY,"parent",e,e?.offsetY,d),(0,i.U_)(d)}}));let f=u/2;return m(t,f,{mergeSelfLoops:h}).forEach(function({edge:e,start:r,end:n}){s.R.info("Edge "+r+" -> "+n+": "+JSON.stringify(e),e),e.points.forEach(e=>e.y+=f);let i=t.node(r),h=t.node(n),u=(0,d.Jo)(o,e,a.ju,l,i,h,g);(0,d.T_)(e,u)}),t.nodes().forEach(function(e){let r=t.node(e);s.R.info(e,r.type,r.diff),r.isGroup&&(p=r.diff)}),s.R.warn("Returning from recursive render XAX",e,p),{elem:e,diff:p}},"paintDagreLayoutCore"),v=(0,g.K)(async e=>{let t=await E(e);return R(t.graph),await N(t)},"renderDagreSubgraph"),C=(0,g.K)(e=>{let t=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.nodeSpacing||e.config?.flowchart?.nodeSpacing,ranksep:e.config?.rankSpacing||e.rankSpacing||e.config?.flowchart?.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});return e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}
1),s.R.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){let r=e.start,a=r+"---"+r+"---1",n=r+"---"+r+"---2",d=t.node(r);t.setNode(a,{domId:a,id:a,parentId:d.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(a,d.parentId),t.setNode(n,{domId:n,id:n,parentId:d.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(n,d.parentId);let i=structuredClone(e),o=structuredClone(e),l=structuredClone(e),s=structuredClone(e);o.originalEdge=i,o.selfLoop={id:i.id,order:0},l.originalEdge=i,l.selfLoop={id:i.id,order:1},s.originalEdge=i,s.selfLoop={id:i.id,order:2},o.label="",o.arrowTypeEnd="none",o.endLabelLeft="",o.endLabelRight="",o.startLabelLeft="",o.id=r+"-cyclic-special-1",l.startLabelRight="",l.startLabelLeft="",l.endLabelLeft="",l.endLabelRight="",l.arrowTypeStart="none",l.arrowTypeEnd="none",l.id=r+"-cyclic-special-mid",s.label="",s.startLabelRight="",s.startLabelLeft="",s.arrowTypeStart="none",d.isGroup&&(o.fromCluster=r,s.toCluster=r),s.id=r+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(r,a,o,r+"-cyclic-special-0"),t.setEdge(a,n,l,r+"-cyclic-special-1"),t.setEdge(n,r,s,r+"-cyclic-special-2")}else t.setEdge(e.start,e.end,{...e},e.id)}),(0,a.OS)(t),{graph:t}},"prepareLayoutForDagre"),K=(0,g.K)(async(e,{element:t,preparedLayout:r})=>{let a=r??C(e),n=(0,l.D7)(),d=await E({element:t,graph:a.graph,diagramType:e.type,id:e.diagramId,parentCluster:void 0,siteConfig:n});return a.measuredLayout=d,d},"measureDagreLayout"),M=(0,g.K)((e,t)=>{let r=t.preparedLayout?.measuredLayout;if(!r)throw Error("runDagreLayoutCore requires measureDagreLayout to run first");return R(r.graph),D(e,r),r},"runDagreLayoutCore"),I=(0,g.K)((e,{measure:t})=>(0,a.sc)(t.graph).map(e=>t.graph.node(e)).filter(Boolean),"getDagrePaintNodes"),P=(0,g.K)((e,t,{measure:r})=>e?r.graph.node(e):void 0,"getDagreEdgeNode"),k=(0,a.xY)({prepareLayout:C,measureLayout:K,runLayoutCore:M,paintOptions:{clusterDb:a.ju,getNodes:I,getEdgeNode:P,skipNode:(0,g.K)((e,{measure:t})=>
1!t.graph.hasNode(e.id),"skipNode"),isCluster:(0,g.K)((e,{measure:t})=>t.graph.hasNode(e.id)&&(t.graph.children(e.id)??[]).length>0,"isCluster")}})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.