UNPKG

mermaid

Version:

Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.

2 lines • 109 kB
import{a as Vn}from"./chunk-TRWJJ4LR.mjs";import{g as $n}from"./chunk-KTS5TP6K.mjs";import"./chunk-D36F7FYG.mjs";import"./chunk-LGKD3V67.mjs";import"./chunk-XUG7IRDC.mjs";import"./chunk-4GHFHL4L.mjs";import"./chunk-KJ5T2YZX.mjs";import"./chunk-F6PIGZHG.mjs";import"./chunk-MMC4O45A.mjs";import"./chunk-XGFVAD2T.mjs";import"./chunk-YX6CVSZ3.mjs";import"./chunk-MIE3LDYP.mjs";import"./chunk-GHI2JMQX.mjs";import"./chunk-ZZ52EIBP.mjs";import"./chunk-FWWDAFD2.mjs";import{b as vt}from"./chunk-L2B47AAZ.mjs";import{a as i}from"./chunk-QVIEFLGF.mjs";function Un(e,{measure:t}){let n=e.config?.swimlane?.lineHops;if(n===!1)return;let o=n==="gap"?"gap":"arc",r=e.edges.filter(s=>Array.isArray(s.points)&&s.points.length>=2).map(s=>({id:s.id,points:s.points,curve:s.curve,arrowTypeStart:s.arrowTypeStart,arrowTypeEnd:s.arrowTypeEnd}));Vn(t.groups.edgePaths,r,{enabled:!0,jumpRadius:6,jumpStyle:o})}i(Un,"applySwimlaneLineJumps");var yn="__swimlane_default__";function Wn(e){return Math.max(e.padding??20,20)}i(Wn,"topLaneHorizontalPadding");function Sr(e){let{x:t,y:n,width:o,height:r}=e,s=e.swimlaneContentTop;if(typeof t!="number"||typeof n!="number"||typeof o!="number"||typeof r!="number"||typeof s!="number"||!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(r)||!Number.isFinite(s)||o<=0||r<=0){delete e.groupTitleRect;return}let c=n-r/2,f=Math.min(s,n+r/2),g=Math.min(21,Math.max(0,f-c)),y=c+g;if(y<=c){delete e.groupTitleRect;return}e.groupTitleRect={left:t-o/2,right:t+o/2,top:c,bottom:y}}i(Sr,"assignTopLaneTitleRect");function Kn(e){let t=e.direction,n=e.nodes??=[];for(let s of e.nodes??[])s.isGroup&&!s.parentId&&(s.shape="swimlane",t&&(s.direction=t));let o=n.filter(s=>!s.isGroup&&!s.parentId);if(o.length===0)return;let r=n.find(s=>s.id===yn);r?r.isGroup&&(r.shape="swimlane",t&&(r.direction=t)):(r={id:yn,label:"",isGroup:!0,shape:"swimlane",padding:20,look:e.config?.look,colorIndex:n.reduce((s,c)=>Math.max(s,c.colorIndex??-1),-1)+1,...t?{direction:t}:{}},n.push(r));for(let s of o)s.parentId=yn}i(Kn,"prepareLayoutForSwimlanes");function qn(e){let t=new Map;for(let g of e.nodes??[])t.set(g.id,g);let n=[];for(let g of e.edges??[]){let y=typeof g.start=="string"?g.start:void 0,m=typeof g.end=="string"?g.end:void 0;!y||!m||g.labelNodeId||n.push({id:g.id,src:y,dst:m,ref:g})}let o=e.nodes??[],r=o.filter(g=>g.isGroup),s=o.filter(g=>!g.isGroup);return{nodes:[...[...r].reverse(),...s].map(g=>g.id),edges:n,layout:e,nodeById:t}}i(qn,"toGraphView");function Zn(e,t,n,o){let{layout:r}=e,s=e.nodeById,c=o?.layerGap??100,f=o?.nodeGap??40,g=0;for(let N of t.layers){let p=0;for(let l of N){let a=s.get(l);if(!a){p++;continue}a.layer=g,a.order=p;let h=n.x[l]??p*f,S=n.y[l]??g*c;a.x=h,a.y=S,p++}g++}let y=r.nodes??[],m=new Map,u=[];for(let N of y){if(!N?.isGroup)continue;N.parentId||u.push(N);let p=y.filter(I=>I.parentId===N.id),l=1/0,a=-1/0,h=1/0,S=-1/0;for(let I of p){let E=I.x??n.x[I.id],A=I.y??n.y[I.id],L=I.width??0,b=I.height??0;E!=null&&A!=null&&(l=Math.min(l,E-L/2),a=Math.max(a,E+L/2),h=Math.min(h,A-b/2),S=Math.max(S,A+b/2))}if(l===1/0||h===1/0)N.x=N.x??0,N.y=N.y??0,N.width=N.width??0,N.height=N.height??0;else{let I=N.padding??20,E=N.parentId?I:2*Wn(N),A=I,L=Math.max(0,a-l)+E,b=Math.max(0,S-h)+A,P=(l+a)/2,O=(h+S)/2;N.x=P,N.y=O,N.width=L,N.height=b,m.set(N.id,{minX:l,maxX:a,minY:h,maxY:S})}}if(u.length>0&&m.size>0){let N=1/0,p=-1/0,l=0;for(let a of u){let h=a.padding??20;h>l&&(l=h);let S=m.get(a.id);S&&(N=Math.min(N,S.minY),p=Math.max(p,S.maxY))}if(N!==1/0&&p!==-1/0){let a=Math.max(0,p-N),S=Math.max(l,36),I=a+2*S,E=(N+p)/2;for(let B of u)B.y=E,B.height=I,B.swimlaneContentTop=N;let A=[...u].sort((B,T)=>{let D=B.x??0,_=T.x??0;return D-_}),L=[],b=[],P=[];for(let B of A){let T=m.get(B.id);if(!T)continue;let D=Math.max(0,T.maxX-T.minX)+2*Wn(B),_=(T.minX+T.maxX)/2;L.push(B.id),b.push(_),P.push(D)}let O=L.length;if(O>0){let B=new Map;if(O===1)B.set(L[0],P[0]);else{let T=[];for(let Y=0;Y<O-1;Y++)T.push(b[Y+1]-b[Y]);let D=new Array(O);D[0]=0;for(let Y=0;Y<O-1;Y++)D[Y+1]=2*T[Y]-D[Y];let _=0,v=Number.POSITIVE_INFINITY;for(let Y=0;Y<O;Y++){let K=P[Y];Y%2===0?_=Math.max(_,K-D[Y]):v=Math.min(v,D[Y]-K)}let z=_;_<=v?z=(_+v)/2:z=_;for(let Y=0;Y<O;Y++){let K=D[Y]+(Y%2===0?z:-z),ae=Math.max(P[Y],K);B.set(L[Y],ae)}}for(let T of u){let D=B.get(T.id);D!=null&&(T.width=D),Sr(T)}}}}}i(Zn,"writeBackToLayoutData");var Rr="[EdgeLabelNodes]";function Jn(e){let t=[],n=[],o=new Map;for(let c of e.nodes)o.set(c.id,c);for(let c of e.edges){if(!c.label||c.label.length===0||c.isLayoutOnly||c.labelNodeId)continue;let f=c.start?o.get(c.start):void 0,g=c.end?o.get(c.end):void 0;if(!f||!g){vt.warn(Rr,`Edge ${c.id} has missing source or target node`);continue}let y=`edge-label-${c.start}-${c.end}-${c.id}`,u=f.parentId!==g.parentId?g.parentId:f.parentId,N={id:y,label:c.label,edgeStart:c.start??"",edgeEnd:c.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:u,isGroup:!1,labelStyle:Array.isArray(c.labelStyle)?c.labelStyle[0]:c.labelStyle??"",...f.dir?{dir:f.dir}:{}};t.push(N),c.labelNodeId=y,c.label=void 0,c.text=void 0;let p={id:`${c.id}-to-label`,start:c.start,end:y,type:"normal",isLayoutOnly:!0},l={id:`${c.id}-from-label`,start:y,end:c.end,type:"normal",isLayoutOnly:!0};n.push(p,l)}let r=[...e.nodes,...t],s=[...e.edges,...n];return{...e,nodes:r,edges:s}}i(Jn,"createEdgeLabelNodes");function eo(e){let t=e.x??0,n=e.y??0,o=e.width??0,r=e.height??0;return o>0&&r>0?{cx:t,cy:n,rect:Ct(t,n,o,r)}:void 0}i(eo,"measuredNodeRect");function to(e){if(e.isGroup)return;let t=eo(e);return t?{id:String(e.id??""),cx:t.cx,cy:t.cy,rect:t.rect}:void 0}i(to,"nodeBoundsInfoFor");function qe(e,t,n=.001){return Math.abs(e.x-t.x)<n&&Math.abs(e.y-t.y)<n}i(qe,"samePoint");function de(e,t,n=.001){return Math.abs(e.x-t.x)<n}i(de,"sameX");function ue(e,t,n=.001){return Math.abs(e.y-t.y)<n}i(ue,"sameY");function Ee(e,t,n=.001){return ue(e,t,n)&&Math.abs(e.x-t.x)>n}i(Ee,"isHorizontalSegment");function Pe(e,t,n=.001){return de(e,t,n)&&Math.abs(e.y-t.y)>n}i(Pe,"isVerticalSegment");function Xe(e,t,n,o){return Math.max(0,Math.min(Math.max(e,t),Math.max(n,o))-Math.max(Math.min(e,t),Math.min(n,o)))}i(Xe,"overlapLength");function it(e,t,n=.001){return e.horizontal&&t.horizontal&&ue(e.a,t.a,n)?Xe(e.a.x,e.b.x,t.a.x,t.b.x):e.vertical&&t.vertical&&de(e.a,t.a,n)?Xe(e.a.y,e.b.y,t.a.y,t.b.y):0}i(it,"sameAxisSegmentOverlapLength");function pt(e,t=.001){let n=[];for(let o=0;o<e.length-1;o++){let r=e[o],s=e[o+1],c=Ee(r,s,t),f=Pe(r,s,t);(c||f)&&n.push({index:o,a:r,b:s,horizontal:c,vertical:f})}return n}i(pt,"orthogonalSegmentsForPoints");function Ze(e,t=.001){let n=pt(e,t),o=0;for(let r=1;r<n.length;r++)n[r-1].horizontal!==n[r].horizontal&&o++;return o}i(Ze,"countOrthogonalBends");function le(e,t=.001){let n=[];for(let o of e){let r=n.length>0?n[n.length-1]:void 0;(!r||!qe(r,o,t))&&n.push({x:o.x,y:o.y})}return n}i(le,"dedupeConsecutivePoints");function $t(e,t=.001){if(!e||e.length!==4)return;let[n,o,r,s]=e;return Ee(n,o,t)&&Pe(o,r,t)&&Ee(r,s,t)?{kind:"HVH",p0:n,p1:o,p2:r,p3:s}:Pe(n,o,t)&&Ee(o,r,t)&&Pe(r,s,t)?{kind:"VHV",p0:n,p1:o,p2:r,p3:s}:void 0}i($t,"classifyThreeSegmentRoute");function Bt(e,t,n,o=0){let r=Math.min(e.x,t.x),s=Math.max(e.x,t.x),c=Math.min(e.y,t.y),f=Math.max(e.y,t.y);return s>n.left-o&&r<n.right+o&&f>n.top-o&&c<n.bottom+o}i(Bt,"segmentBoundsOverlapRect");function Vt(e,t,n=0){return e.x>t.left+n&&e.x<t.right-n&&e.y>t.top+n&&e.y<t.bottom-n}i(Vt,"pointInsideRect");function no(e,t){return e.left<=t.left&&e.right>=t.right&&e.top<=t.top&&e.bottom>=t.bottom}i(no,"rectContainsRect");function Ut(e,t){return e.left<t.right&&e.right>t.left&&e.top<t.bottom&&e.bottom>t.top}i(Ut,"rectsOverlap");function xn(e,t){return{left:e.left-t,right:e.right+t,top:e.top-t,bottom:e.bottom+t}}i(xn,"inflateRect");function Ct(e,t,n,o){return{left:e-n/2,right:e+n/2,top:t-o/2,bottom:t+o/2}}i(Ct,"rectFromCenterSize");function _e(e){return eo(e)?.rect}i(_e,"rectOfNodeBounds");function ht(e,t){switch(t){case"top":return{x:e.cx,y:e.rect.top};case"bottom":return{x:e.cx,y:e.rect.bottom};case"left":return{x:e.rect.left,y:e.cy};case"right":return{x:e.rect.right,y:e.cy}}}i(ht,"portForRectSide");function Wt(e,t,n,o,r,s=.001){let c=t==="left"||t==="right",f=o==="left"||o==="right";if(c&&f){if(t==="right"&&o==="left"&&e.x<n.x||t==="left"&&o==="right"&&e.x>n.x){if(ue(e,n,s))return[e,n];let u=(e.x+n.x)/2;return[e,{x:u,y:e.y},{x:u,y:n.y},n]}if(t===o){if(ue(e,n,s))return;let u=t==="left"?Math.min(e.x,n.x)-r:Math.max(e.x,n.x)+r;return[e,{x:u,y:e.y},{x:u,y:n.y},n]}return}if(!c&&!f){if(t===o){if(de(e,n,s))return;let N=t==="top"?Math.min(e.y,n.y)-r:Math.max(e.y,n.y)+r;return[e,{x:e.x,y:N},{x:n.x,y:N},n]}if(!(t==="bottom"&&o==="top"&&e.y<n.y||t==="top"&&o==="bottom"&&e.y>n.y))return;if(de(e,n,s))return[e,n];let u=(e.y+n.y)/2;return[e,{x:e.x,y:u},{x:n.x,y:u},n]}if(c&&!f){let m=t==="right"&&n.x>e.x||t==="left"&&n.x<e.x,u=o==="top"&&e.y<n.y||o==="bottom"&&e.y>n.y;return m&&u?[e,{x:n.x,y:e.y},n]:void 0}let g=t==="bottom"&&n.y>e.y||t==="top"&&n.y<e.y,y=o==="left"&&e.x<n.x||o==="right"&&e.x>n.x;return g&&y?[e,{x:e.x,y:n.y},n]:void 0}i(Wt,"buildOrthogonalPortPath");function Kt(e,t,n,o){return t==="left"||t==="right"?[e,{x:o,y:e.y},{x:o,y:n.y},n]:[e,{x:e.x,y:o},{x:n.x,y:o},n]}i(Kt,"buildSameSideTrackPath");function Tt(e){let t=new Map,n=[];for(let o of e){if(o.isEdgeLabel)continue;let r=to(o);r&&(t.set(r.id,r),n.push({id:r.id,rect:r.rect}))}return{nodeInfoById:t,realNodeRects:n}}i(Tt,"collectRealNodeBounds");function lt(e){let t=[],n=[];for(let o of e){let r=to(o);if(!r)continue;let s={id:r.id,rect:r.rect};o.isEdgeLabel?n.push(s):t.push(s)}return{realNodeRects:t,labelNodeRects:n}}i(lt,"collectNodeRectEntries");function oo(e,{includeEdgeLabels:t=!0}={}){let n=[];for(let o of e){if(o.isGroup||!t&&o.isEdgeLabel)continue;let r=o.x??0,s=o.y??0,c=o.width??0,f=o.height??0;n.push({nodeId:o.id,...Ct(r,s,c,f)})}return n}i(oo,"collectLayoutNodeRects");function qt(e,t,n=.001){let o=e.start,r=e.end;if(!o||!r)return;let s=t.get(o),c=t.get(r);if(!(!s||!c))return{srcId:o,dstId:r,srcInfo:s,dstInfo:c,collinearX:Math.abs(s.cx-c.cx)<n,collinearY:Math.abs(s.cy-c.cy)<n}}i(qt,"getNodePairGeometry");function Le(e,t,n,o=[],r=0){for(let s of n)if(!o.includes(s.id)&&Bt(e,t,s.rect,-r))return!0;return!1}i(Le,"segmentHitsAnyRect");function bn(e,t,n,o,r=.001,s=1e-6){let c=ue(e,t,r),f=de(e,t,r),g=ue(n,o,r),y=de(n,o,r);if(c&&g||f&&y||!(c||f)||!(g||y))return!1;let m=c?{a:e,b:t}:{a:n,b:o},u=f?{a:e,b:t}:{a:n,b:o},N=m.a.y,p=Math.min(m.a.x,m.b.x),l=Math.max(m.a.x,m.b.x),a=u.a.x,h=Math.min(u.a.y,u.b.y),S=Math.max(u.a.y,u.b.y);if(a<p||a>l||N<h||N>S)return!1;let I=Math.abs(a-m.a.x)<s&&Math.abs(N-m.a.y)<s||Math.abs(a-m.b.x)<s&&Math.abs(N-m.b.y)<s,E=Math.abs(a-u.a.x)<s&&Math.abs(N-u.a.y)<s||Math.abs(a-u.b.x)<s&&Math.abs(N-u.b.y)<s;return!(I&&E)}i(bn,"orthogonalSegmentsCross");function Er(e,t,n,o,r=.001){let s=ue(e,t,r),c=de(e,t,r),f=ue(n,o,r),g=de(n,o,r);return c&&g&&de(e,n,r)?Xe(e.y,t.y,n.y,o.y)>r:s&&f&&ue(e,n,r)?Xe(e.x,t.x,n.x,o.x)>r:!1}i(Er,"sameAxisSegmentsOverlap");function kt(e,t,n,o,{epsilon:r=.001,skipDegenerateOther:s=!1}={}){for(let c of n){if(c===o||c.isLayoutOnly)continue;let f=c.points;if(!(!f||f.length<2))for(let g=0;g<f.length-1;g++){let y=f[g],m=f[g+1];if(!(s&&qe(y,m,r))&&(bn(e,t,y,m,r)||Er(e,t,y,m,r)))return!0}}return!1}i(kt,"segmentConflictsWithAnyEdge");function at(e,t,n,o,r=.001){let s=ue(e,t,r),c=de(e,t,r),f=ue(n,o,r),g=de(n,o,r);if(!(s&&g||c&&f))return!1;let y=s?{a:e,b:t}:{a:n,b:o},m=s?{a:n,b:o}:{a:e,b:t},u=y.a.y,N=Math.min(y.a.x,y.b.x),p=Math.max(y.a.x,y.b.x),l=m.a.x,a=Math.min(m.a.y,m.b.y),h=Math.max(m.a.y,m.b.y);return l>N+r&&l<p-r&&u>a+r&&u<h-r}i(at,"orthogonalSegmentsStrictlyCross");function Qn(e,t,n){let o=Math.min(t,n),r=Math.max(t,n);return e>o+.001&&e<r-.001}i(Qn,"strictlyBetween");function Pr(e,t,n){return de(e,t)&&de(t,n)?Qn(t.y,e.y,n.y):ue(e,t)&&ue(t,n)?Qn(t.x,e.x,n.x):!1}i(Pr,"isCollinearIntermediate");function Cr(e){let t=!1,n=[];for(let o=0;o<e.length;o++){let r=n[n.length-1],s=e[o],c=o+1<e.length?e[o+1]:void 0;if(r&&c){if(qe(r,c)){o++,t=!0;continue}if(Pr(r,s,c)){t=!0;continue}}n.push(s)}return{points:n,changed:t}}i(Cr,"simplifyPolylineOnce");function _t(e){let t=[e[0]];for(let o=1;o<e.length;o++){let r=t[t.length-1],s=e[o];if(!de(r,s)&&!ue(r,s)){let c=t.length>=2?t[t.length-2]:void 0,g=(c?de(c,r):!1)?{x:r.x,y:s.y}:{x:s.x,y:r.y};t.push(g)}t.push(s)}let n=[];for(let o of t){let r=n[n.length-1];(!r||!qe(r,o))&&n.push(o)}return n}i(_t,"orthogonalizePolyline");function rt(e){if(e.length<3)return e;let t=[...e];for(let n=0;n<32;n++){let o=Cr(t);if(t=o.points,!o.changed)break}return t}i(rt,"simplifyPolyline");var ne=.001,Tr=.5,ro=4;function po(e,t,n){let o=e;if(o.isLayoutOnly||!o.points||o.points.length<n)return;let r=o.start?t.get(o.start):void 0,s=o.end?t.get(o.end):void 0;return{edge:o,points:o.points,srcRect:r?_e(r):void 0,dstRect:s?_e(s):void 0}}i(po,"endpointContextFor");function Or(e,t,n){if(ue(e,t,ne))return{x:e.x<n.left?n.left:n.right,y:e.y};if(de(e,t,ne)){let o=e.y<n.top?n.top:n.bottom;return{x:e.x,y:o}}return{x:Math.min(n.right,Math.max(n.left,e.x)),y:Math.min(n.bottom,Math.max(n.top,e.y))}}i(Or,"segmentEnterPoint");function so(e,t,n){let o=n?1:-1,r=n?0:e.length-1;for(;r>=0&&r<e.length&&Vt(e[r],t,Tr);)r+=o;if(r<0||r>=e.length)return e;let s=r-o;if(s<0||s>=e.length)return e;let c=Or(e[r],e[s],t);return n?[c,...e.slice(r)]:[...e.slice(0,r+1),c]}i(so,"clipEndpoint");function ho(e,t){for(let n of e){let o=po(n,t,2);if(!o)continue;let r=[...o.points];o.srcRect&&(r=so(r,o.srcRect,!0)),o.dstRect&&(r=so(r,o.dstRect,!1)),r=rt(_t(r)),r=yo(r,o.srcRect,o.dstRect),o.edge.points=rt(_t(r))}}i(ho,"clipEdgeEndpointsToNodeBoundaries");function io(e,t,n,o=!1){if(ue(e,t,ne)){if(t.y<n.top-ne||t.y>n.bottom+ne)return t;if(o){if(e.x<n.left-ne)return{x:n.left,y:e.y};if(e.x>n.right+ne)return{x:n.right,y:e.y}}return{x:Math.abs(t.x-n.left)<=Math.abs(t.x-n.right)?n.left:n.right,y:e.y}}if(de(e,t,ne)){if(t.x<n.left-ne||t.x>n.right+ne)return t;if(o){if(e.y<n.top-ne)return{x:e.x,y:n.top};if(e.y>n.bottom+ne)return{x:e.x,y:n.bottom}}let r=Math.abs(t.y-n.top)<=Math.abs(t.y-n.bottom);return{x:e.x,y:r?n.top:n.bottom}}return t}i(io,"snapEndpointToBoundary");function In(e,t,n){let o=e[t];for(let r=t+n;r>=0&&r<e.length;r+=n){let s=e[r];if(!qe(s,o,ne))return s}return e[t+n]}i(In,"firstDistinctAdjacent");function Mn(e,t){let n=e+ro,o=t-ro;return n<=o?{lo:n,hi:o}:{lo:(e+t)/2,hi:(e+t)/2}}i(Mn,"cornerClearanceRange");function ao(e,t,n){let{lo:o,hi:r}=Mn(t,n);return Math.min(r,Math.max(o,e))}i(ao,"clampToCornerClearance");function wr(e){let t=Math.max(...e.map(o=>o.lo)),n=Math.min(...e.map(o=>o.hi));if(!(t>n))return{lo:t,hi:n}}i(wr,"intersectRanges");function co(e,t){return t==="left"||t==="right"?Mn(e.top,e.bottom):Mn(e.left,e.right)}i(co,"clearanceRangeForSide");function Ln(e,t,n){let o=e.y>=n.top-ne&&e.y<=n.bottom+ne,r=e.x>=n.left-ne&&e.x<=n.right+ne;if(ue(e,t,ne)&&o){if(Math.abs(e.x-n.left)<ne)return"left";if(Math.abs(e.x-n.right)<ne)return"right"}if(de(e,t,ne)&&r){if(Math.abs(e.y-n.top)<ne)return"top";if(Math.abs(e.y-n.bottom)<ne)return"bottom"}}i(Ln,"terminalSideForSegment");function Zt(e){return e==="left"||e==="right"}i(Zt,"isHorizontalSide");function Ar(e,t,n,o,r){let s=[],c=n?Ln(e,t,n):void 0,f=o?Ln(t,e,o):void 0;return n&&c&&Zt(c)===r&&s.push(co(n,c)),o&&f&&Zt(f)===r&&s.push(co(o,f)),s.length>0?wr(s):void 0}i(Ar,"straightClearanceRange");function lo(e,t,n,o,r){let s=Ar(e,t,n,o,r);if(!s)return;let c=r?e.y:e.x,f=Math.min(s.hi,Math.max(s.lo,c));if(!(Math.abs(f-c)<ne))return r?[{x:e.x,y:f},{x:t.x,y:f}]:[{x:f,y:e.y},{x:f,y:t.y}]}i(lo,"clearStraightEndpointCornerAxis");function yo(e,t,n){if(e.length!==2)return e;let[o,r]=e;return ue(o,r,ne)?lo(o,r,t,n,!0)??e:de(o,r,ne)?lo(o,r,t,n,!1)??e:e}i(yo,"clearStraightEndpointCornerConnections");function vr(e,t,n){return Zt(n)?{x:e.x,y:ao(e.y,t.top,t.bottom)}:{x:ao(e.x,t.left,t.right),y:e.y}}i(vr,"cornerClearedEndpoint");function Br(e,t,n,o,r,s){let c=e.map(f=>({...f}));for(let f=t;f>=0&&f<e.length;f+=n){let g=e[f];if(s&&!ue(g,o,ne)||!s&&!de(g,o,ne))break;s?c[f].y=r.y:c[f].x=r.x}return c}i(Br,"moveCollinearEndpointRun");function fo(e,t,n){if(e.length<2)return e;let o=n?0:e.length-1,r=n?1:-1,s=e[o],c=In(e,o,r);if(!c)return e;let f=Ln(s,c,t);if(!f)return e;let g=Zt(f),y=vr(s,t,f);return qe(s,y,ne)?e:Br(e,o,r,s,y,g)}i(fo,"clearEndpointCornerConnection");function uo(e,t,n){let o=Math.min(e.x,t.x)>=n.left-ne&&Math.max(e.x,t.x)<=n.right+ne,r=Math.min(e.y,t.y)>=n.top-ne&&Math.max(e.y,t.y)<=n.bottom+ne;if(Math.abs(e.y-n.top)<ne&&Math.abs(t.y-n.top)<ne&&o)return"top";if(Math.abs(e.y-n.bottom)<ne&&Math.abs(t.y-n.bottom)<ne&&o)return"bottom";if(Math.abs(e.x-n.left)<ne&&Math.abs(t.x-n.left)<ne&&r)return"left";if(Math.abs(e.x-n.right)<ne&&Math.abs(t.x-n.right)<ne&&r)return"right"}i(uo,"borderSideForSegment");function go(e,t,n,o){switch(e){case"top":return de(t,n,ne)&&n.y<o.top-ne;case"bottom":return de(t,n,ne)&&n.y>o.bottom+ne;case"left":return ue(t,n,ne)&&n.x<o.left-ne;case"right":return ue(t,n,ne)&&n.x>o.right+ne}}i(go,"leavesOutward");function mo(e,t,n){if(e.length<3)return e;if(n){let s=uo(e[0],e[1],t);return s&&go(s,e[1],e[2],t)?e.slice(1):e}let o=e.length-1,r=uo(e[o-1],e[o],t);return r&&go(r,e[o-1],e[o-2],t)?e.slice(0,o):e}i(mo,"collapseOwnBorderStub");function kr(e,t,n){let o=e;if(t){let s=In(o,0,1);if(s){let c=io(s,o[0],t);c!==o[0]&&(o=[c,...o.slice(1)])}o=mo(o,t,!0)}if(n){let s=o.length-1,c=In(o,s,-1);if(c){let f=io(c,o[s],n,!0);f!==o[s]&&(o=[...o.slice(0,s),f])}o=mo(o,n,!1)}let r=yo(o,t,n);return r!==o||o.length===2?r:(t&&(o=fo(o,t,!0)),n&&(o=fo(o,n,!1)),o)}i(kr,"snapAndCollapseEndpoints");function Nn(e,t){for(let n of e){let o=po(n,t,2);if(!o)continue;let r=le(o.points,ne),s=kr(r,o.srcRect,o.dstRect);if(s.length<3){o.edge.points=s;continue}let c=[s[0],{...s[0]},...s.slice(1,-1),s[s.length-1],{...s[s.length-1]}];o.edge.points=c}}i(Nn,"prepareEdgeEndpointsForRenderer");function bo(e){return new Map(e.map(t=>[t.id,t]))}i(bo,"buildNodeMap");function _r(e,t){let n=e.parentId,o=null;for(;n;){let r=t.get(n);if(!r?.isGroup)break;o=r.id,n=r.parentId}return o}i(_r,"resolveTopLevelGroupId");function xo(e,t){let n=0,o=e.parentId;for(;o;){let r=t.get(o);if(!r?.isGroup)break;n++,o=r.parentId}return n}i(xo,"groupDepth");function Io(e){let t=1/0,n=-1/0,o=1/0,r=-1/0;for(let s of e){let c=s.x,f=s.y;if(typeof c!="number"||typeof f!="number")continue;let g=s.width??0,y=s.height??0;t=Math.min(t,c-g/2),n=Math.max(n,c+g/2),o=Math.min(o,f-y/2),r=Math.max(r,f+y/2)}return t===1/0||o===1/0?null:{minX:t,maxX:n,minY:o,maxY:r}}i(Io,"boundsForChildren");function Dr(e,t){let n=e.padding??20;e.x=(t.minX+t.maxX)/2,e.y=(t.minY+t.maxY)/2,e.width=Math.max(0,t.maxX-t.minX)+n,e.height=Math.max(0,t.maxY-t.minY)+n}i(Dr,"applyGroupBounds");function Fr(e){let t=bo(e),n=e.filter(o=>o.isGroup&&o.parentId).sort((o,r)=>xo(r,t)-xo(o,t));for(let o of n){let r=e.filter(c=>c.parentId===o.id),s=Io(r);s&&Dr(o,s)}}i(Fr,"recomputeNestedGroupBounds");function Sn(e,t){let n=e.nodes??[],o=e.edges??[],r=n.filter(g=>!g.isGroup),s=1/0,c=-1/0;for(let g of r){let y=g[t];typeof y=="number"&&(s=Math.min(s,y),c=Math.max(c,y))}if(!Number.isFinite(s)||!Number.isFinite(c))return!1;let f=i(g=>s+c-g,"mirror");for(let g of n){let y=g[t];typeof y=="number"&&(g[t]=f(y));let m=g.groupTitleRect;m&&(g.groupTitleRect=t==="x"?{...m,left:f(m.right),right:f(m.left)}:{...m,top:f(m.bottom),bottom:f(m.top)})}for(let g of o)for(let y of g.points??[])y[t]=f(y[t]);return!0}i(Sn,"mirrorAxis");function Mo(e){return(e.nodes??[]).some(n=>!n.isGroup)?Sn(e,"y"):!0}i(Mo,"applyBtDirectionTransform");function Lo(e,t="LR"){let n=e.nodes??[],o=e.edges??[],r=n.filter(v=>!v.isGroup),s=1/0,c=1/0;for(let v of r){let z=v.x??0,Y=v.y??0;z<s&&(s=z),Y<c&&(c=Y)}if(!Number.isFinite(s)||!Number.isFinite(c))return!1;let f=36,g=0,y=0;for(let v of r)g+=v.width??0,y+=v.height??0;let m=g/r.length,u=y/r.length,N=u>0?Math.max(1,m/u):1;for(let v of r){let z=v.x??0,K=((v.y??0)-c)*N+f,ae=z-s;v.x=K,v.y=ae}for(let v of o)if(v.points)for(let z of v.points){let Y=z.x,ae=(z.y-c)*N+f,he=Y-s;z.x=ae,z.y=he}Fr(n);let p=n.filter(v=>v.isGroup&&!v.parentId);if(p.length===0)return t==="RL"&&Sn(e,"x"),!0;let l=bo(n),a=new Map;for(let v of n){if(v.isGroup)continue;let z=_r(v,l);if(!z)continue;let Y=a.get(z)??[];Y.push(v),a.set(z,Y)}let h=0;for(let v of p){let z=v.padding??0;z>h&&(h=z)}let S=[],I=1/0,E=-1/0;for(let v of p){let z=a.get(v.id)??[],Y=Io(z);Y&&(I=Math.min(I,Y.minX),E=Math.max(E,Y.maxX),S.push({lane:v,contentTop:Y.minY,contentBottom:Y.maxY,centerY:(Y.minY+Y.maxY)/2}))}if(I===1/0||E===-1/0)return!0;let A=Math.max(0,E-I),L=Math.max(h,10),b=A+2*L,P=f+b,T=(I+E)/2-b/2-f,D=T+P/2,_=Math.max(h,f);S.sort((v,z)=>v.centerY-z.centerY);for(let v=0;v<S.length;v++){let z=S[v],Y,K;if(v===0?Y=z.contentTop-_:Y=(S[v-1].contentBottom+z.contentTop)/2,v===S.length-1)K=z.contentBottom+_;else{let Oe=S[v+1];K=(z.contentBottom+Oe.contentTop)/2}let ae=Math.max(0,K-Y),he=(Y+K)/2;z.lane.x=D,z.lane.y=he,z.lane.width=P,z.lane.height=ae,z.lane.swimlaneContentTop=z.contentTop,z.lane.groupTitleRect={left:T,right:T+f,top:Y,bottom:K}}return t==="RL"&&Sn(e,"x"),!0}i(Lo,"applyLrDirectionTransform");var ct=1e-6,Gr=8,Jt=Gr,zr=[0,Jt,-Jt,2*Jt,-2*Jt];function No(e,t){let{nodeInfoById:n,realNodeRects:o}=Tt(t);for(let r of e){if(r.isLayoutOnly)continue;let s=r.points;if(!s||s.length<4)continue;let c=$t(le(s,ct),ct);if(!c)continue;let{p3:f}=c,g=c.kind==="HVH",y=qt(r,n,ct);if(!y)continue;let{srcId:m,dstId:u,srcInfo:N,dstInfo:p,collinearX:l,collinearY:a}=y;if(l||a)continue;let h,S=N.rect;for(let I of zr){let E,A,L;if(g){let D=p.cy>N.cy?S.bottom:S.top,_=N.cx+I;if(_<=S.left+ct||_>=S.right-ct)continue;E={x:_,y:D},A={x:_,y:f.y},L={x:f.x,y:f.y}}else{let D=p.cx>N.cx?S.right:S.left,_=N.cy+I;if(_<=S.top+ct||_>=S.bottom-ct)continue;E={x:D,y:_},A={x:f.x,y:_},L={x:f.x,y:f.y}}let b=qe(E,A,ct),P=qe(A,L,ct);if(b&&P||!b&&Le(E,A,o,[m],1)||!P&&Le(A,L,o,[u],1))continue;let O=!b&&kt(E,A,e,r,{epsilon:ct,skipDegenerateOther:!0}),B=!P&&kt(A,L,e,r,{epsilon:ct,skipDegenerateOther:!0});if(!(O||B)){b?h=[A,L]:P?h=[E,A]:h=[E,A,L];break}}h&&(r.points=h)}}i(No,"portSwapToLShape");function So(e,t){let{realNodeRects:s,labelNodeRects:c}=lt(t.values());for(let f of e){if(f.isLayoutOnly)continue;let g=f.points;if(!g||g.length<4)continue;let y=le(g,.001);if(y.length<4)continue;let m=y.length-1,u=y[m],N=y[m-1],p=y[m-2],l=u.x-N.x,a=u.y-N.y,h=Math.hypot(l,a);if(h>=10||h<.001)continue;let S=N.x-p.x,I=N.y-p.y;if(Math.hypot(S,I)<.001)continue;let A=Ee(N,u,.001),L=Pe(N,u,.001),b=Ee(p,N,.001),P=Pe(p,N,.001);if(!(A&&P||L&&b))continue;let O=f.end,B=f.start,T=O?t.get(O):void 0;if(!T)continue;let D=T.x??0,_=T.y??0,v=_e(T);if(!v)continue;let z,Y;if(P){let W=I<0;z={x:D,y:p.y},Y={x:D,y:W?v.bottom:v.top}}else{let W=S>0;z={x:p.x,y:_},Y={x:W?v.right:v.left,y:_}}if(Le(z,Y,s,O?[O]:[],-2)||Le(z,Y,c,[],-2))continue;if(B){let W=t.get(B),te=W?_e(W):void 0;if(te&&Vt(z,te,2))continue}let K=i((W,te)=>`${W.x.toFixed(3)},${W.y.toFixed(3)}|${te.x.toFixed(3)},${te.y.toFixed(3)}`,"ownSegmentKey"),ae=new Set;for(let W=0;W<y.length-1;W++)ae.add(K(y[W],y[W+1]));let he=i((W,te)=>{for(let fe of e){if(fe===f||fe.isLayoutOnly)continue;let pe=fe.points;if(!(!pe||pe.length<2))for(let xe=0;xe<pe.length-1;xe++){let Re=pe[xe],Ve=pe[xe+1];if(!ae.has(K(Re,Ve))&&at(W,te,Re,Ve,.001))return!0}}return!1},"segmentCrossesOtherEdge");if(he(z,Y))continue;if(m-3>=0){let W=y[m-3],te=[B,O].filter(fe=>!!fe);if(Le(W,z,s,te,-2)||he(W,z))continue}let Be=[...y.slice(0,m-2),z,Y];f.points=Be;let Q=f.labelNodeId;if(Q){let W=t.get(Q);if(W){let te=W.width??0,fe=W.height??0;if(te>0&&fe>0){let pe,xe,Re=-1;for(let Ve=0;Ve<Be.length-1;Ve++){let Ue=Be[Ve],We=Be[Ve+1],nt=Math.hypot(We.x-Ue.x,We.y-Ue.y),Nt=ue(Ue,We,.001),ft=de(Ue,We,.001);(Nt&&nt>=te+2||ft&&nt>=fe+2)&&nt>Re&&(Re=nt,pe=(Ue.x+We.x)/2,xe=(Ue.y+We.y)/2)}pe!==void 0&&xe!==void 0&&(W.x=pe,W.y=xe)}}}}}i(So,"collapseShortTerminalStub");var J=.001,De=8,Ro=i(e=>typeof e=="string"?e.toUpperCase():"","upperCaseDirection"),ie=pt,Rn=i((e,t)=>de(e,t,J)||ue(e,t,J),"orthogonallyAligned");function En(e,t){let r=i((p,l)=>{let a=p.x??0,h=p.y??0,S=l.x-a,I=l.y-h,E=(p.width??0)/2,A=(p.height??0)/2;return Math.abs(I)*E>Math.abs(S)*A?(I<0&&(A=-A),{x:a+(I===0?0:A*S/I),y:h+A}):(S<0&&(E=-E),{x:a+E,y:h+(S===0?0:E*I/S)})},"rectIntersect"),s=i((p,l)=>{let a=le(p.points??[]);if(a.length<2)return;let h=l?p.start:p.end,S=h?t.get(h):void 0,I=S?_e(S):void 0;if(!S||!h||!I)return;let E=l?a[0]:a[a.length-1],A=l?a[1]:a[a.length-2],L=r(S,E),b=E;if(Rn(A,L)&&(b=A),de(L,b,J))return{edge:p,edgeId:String(p.id??""),nodeId:h,atStart:l,orientation:"V",coord:L.x,min:Math.min(L.y,b.y),max:Math.max(L.y,b.y),boundary:L,railEnd:b,rect:I};if(ue(L,b,J))return{edge:p,edgeId:String(p.id??""),nodeId:h,atStart:l,orientation:"H",coord:L.y,min:Math.min(L.x,b.x),max:Math.max(L.x,b.x),boundary:L,railEnd:b,rect:I}},"terminalLaneFor"),c=i((p,l)=>Math.max(0,Math.min(p.max,l.max)-Math.max(p.min,l.min)),"projectedOverlapLength"),f=i((p,l)=>p.nodeId!==l.nodeId||p.orientation!==l.orientation?!1:p.orientation==="H"?(Math.abs(p.boundary.x-p.rect.left)<1||Math.abs(p.boundary.x-p.rect.right)<1)&&de(p.boundary,l.boundary,1):(Math.abs(p.boundary.y-p.rect.top)<1||Math.abs(p.boundary.y-p.rect.bottom)<1)&&ue(p.boundary,l.boundary,1),"sameTerminalFace"),g=i((p,l)=>p.nodeId!==l.nodeId||p.orientation!==l.orientation?!1:c(p,l)>=De&&Math.abs(p.coord-l.coord)<.5,"exactTerminalLaneConflict"),y=i((p,l)=>{if(p.nodeId!==l.nodeId||p.orientation!==l.orientation||p.orientation!=="H"||p.atStart===l.atStart)return!1;let a=c(p,l);if(a<De)return!1;let h=p.rect.bottom-p.rect.top;return a<h||a>2*h?!1:f(p,l)&&Math.abs(p.coord-l.coord)<16},"nearTerminalLaneConflict"),m=i((p,l)=>{let a=le(p.edge.points??[]);if(a.length<2)return;let h=p.orientation==="V"?{x:p.boundary.x+l,y:p.boundary.y}:{x:p.boundary.x,y:p.boundary.y+l},S=p.orientation==="V"?{x:p.railEnd.x+l,y:p.railEnd.y}:{x:p.railEnd.x,y:p.railEnd.y+l};if(!i(()=>Math.abs(p.boundary.y-p.rect.top)<1||Math.abs(p.boundary.y-p.rect.bottom)<1?ue(h,p.boundary,J)&&h.x>=p.rect.left+1&&h.x<=p.rect.right-1:Math.abs(p.boundary.x-p.rect.left)<1||Math.abs(p.boundary.x-p.rect.right)<1?de(h,p.boundary,J)&&h.y>=p.rect.top+1&&h.y<=p.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(p.atStart){let b=a.length>1&&qe(a[1],p.railEnd,J),P=a.slice(b?2:1),O=P[0];return O&&!Rn(O,S)?void 0:[h,S,...P]}let E=a.length>1&&qe(a[a.length-2],p.railEnd,J),A=a.slice(0,E?-2:-1),L=A[A.length-1];if(!(L&&!Rn(L,S)))return[...A,S,h]},"shiftedCandidate"),u=i(p=>{let l=p.edge,a=le(l.points??[]);if(a.length!==2)return!1;let h=l.start,S=l.end,I=h?t.get(h):void 0,E=S?t.get(S):void 0;if(!I||!E)return!1;let A=I.x??0,L=I.y??0,b=E.x??0,P=E.y??0,[O,B]=a;return ue(O,B,J)&&Math.abs(L-P)<1&&Math.abs(A-b)>1||de(O,B,J)&&Math.abs(A-b)<1&&Math.abs(L-P)>1},"laneIsStraightCollinearConnector"),N=[-7,7,-14,14,-21,21];for(let p=0;p<8;p++){let l=e.filter(h=>!h.isLayoutOnly).flatMap(h=>[s(h,!0),s(h,!1)]).filter(h=>!!h),a=!1;for(let h=0;h<l.length&&!a;h++)for(let S=h+1;S<l.length&&!a;S++){let I=l[h],E=l[S];if(I.edge===E.edge||!(g(I,E)||y(I,E)))continue;let A=!g(I,E),L=[I,E].sort((b,P)=>{let O=u(b),B=u(P);return O!==B?Number(O)-Number(B):+!P.atStart-+!b.atStart});for(let b of L){for(let P of N){let O=m(b,P);if(!O)continue;let B=s({...b.edge,points:O},b.atStart);if(!(!B||l.some(T=>T.edge!==b.edge&&(g(B,T)||A&&y(B,T))))){b.edge.points=O,a=!0;break}}if(a)break}}if(!a)return}}i(En,"separateSharedRenderedTerminalLanes");function Eo(e,t){let{realNodeRects:r,labelNodeRects:s}=lt(t.values()),c=i((g,y)=>{let m=g.start,u=g.end,N=ie(y);if(N.length!==y.length-1)return!1;let p=[m,u].filter(l=>!!l);for(let l of N)if(Le(l.a,l.b,r,p,-2)||Le(l.a,l.b,s,[],-2))return!1;for(let l of e){if(l===g||l.isLayoutOnly)continue;let a=l.points;if(!(!a||a.length<2)){for(let h of N)for(let S of ie(le(a)))if(it(h,S,.5)>=De||at(h.a,h.b,S.a,S.b,J))return!1}}return!0},"candidateIsSafe"),f=i((g,y)=>{if(y+4>=g.length)return;let m=g[y],u=g[y+1],N=g[y+2],p=g[y+3],l=g[y+4],a=Ee(m,u)&&Pe(u,N)&&Ee(N,p)&&Pe(p,l)&&de(m,p,J)&&de(m,l,J)&&de(u,N,J)&&(u.x-m.x)*(p.x-N.x)<0,h=Pe(m,u)&&Ee(u,N)&&Pe(N,p)&&Ee(p,l)&&ue(m,p,J)&&ue(m,l,J)&&ue(u,N,J)&&(u.y-m.y)*(p.y-N.y)<0;if(a||h)return le([...g.slice(0,y+1),l,...g.slice(y+5)]);if(y+5>=g.length)return;let S=g[y+5],I=Pe(m,u)&&Ee(u,N)&&Pe(N,p)&&Ee(p,l)&&Pe(l,S)&&de(m,l,J)&&de(m,S,J)&&de(N,p,J)&&(N.x-u.x)*(l.x-p.x)<0,E=Ee(m,u)&&Pe(u,N)&&Ee(N,p)&&Pe(p,l)&&Ee(l,S)&&ue(m,l,J)&&ue(m,S,J)&&ue(N,p,J)&&(N.y-u.y)*(l.y-p.y)<0;if(!(!I&&!E))return le([...g.slice(0,y+1),S,...g.slice(y+6)])},"withoutDogleg");for(let g=0;g<8;g++){let y=!1;for(let m of e){if(m.isLayoutOnly)continue;let u=le(m.points??[]);for(let N=0;N<=u.length-5;N++){let p=f(u,N);if(!(!p||!c(m,p))){m.points=p,y=!0;break}}if(y)break}if(!y)return}}i(Eo,"collapseRedundantRectangularDoglegs");function Pn(e,t){let{realNodeRects:s,labelNodeRects:c}=lt(t.values()),f=e.filter(l=>!l.isLayoutOnly),g=i((l,a,h)=>le(l===a?h??[]:l.points??[]),"pointsFor"),y=i((l,a)=>{let h=0;for(let S=0;S<f.length;S++){let I=ie(g(f[S],l,a));for(let E=S+1;E<f.length;E++){let A=ie(g(f[E],l,a));for(let L of I)for(let b of A)at(L.a,L.b,b.a,b.b,J)&&h++}}return h},"strictCrossingCount"),m=i(l=>{let a=ie(l);if(a.length!==3)return;let h=a[1];if(!(a[0].horizontal===h.horizontal||a[2].horizontal===h.horizontal))return{index:h.index,horizontal:h.horizontal,vertical:h.vertical,segment:h}},"middleRail"),u=i((l,a)=>{let h=[l.start,l.end].filter(S=>!!S);return s.filter(S=>{if(h.includes(S.id))return!1;let I=S.rect;return a.horizontal?Xe(a.a.x,a.b.x,I.left,I.right)>=De&&a.a.y>=I.top-2&&a.a.y<=I.bottom+2:Xe(a.a.y,a.b.y,I.top,I.bottom)>=De&&a.a.x>=I.left-2&&a.a.x<=I.right+2})},"blockingRectsFor"),N=i((l,a,h)=>{let S=l.map(E=>({...E}));if(a.horizontal)S[a.index].y=h,S[a.index+1].y=h;else if(a.vertical)S[a.index].x=h,S[a.index+1].x=h;else return;let I=rt(le(S));return ie(I).length===I.length-1?I:void 0},"candidateByMovingRail"),p=i((l,a,h)=>{let S=[l.start,l.end].filter(E=>!!E),I=ie(a);if(I.length!==a.length-1)return!1;for(let E of I)if(Le(E.a,E.b,s,S,-2)||Le(E.a,E.b,c,[],-2))return!1;for(let E of f)if(E!==l){for(let A of I)for(let L of ie(g(E)))if(it(A,L,.5)>=De)return!1}return y(l,a)<=h},"candidateIsSafe");for(let l=0;l<8;l++){let a=y(),h=!1;for(let S of f){let I=g(S),E=m(I);if(!E)continue;let A=u(S,E.segment);if(A.length===0)continue;let L=E.horizontal?[Math.min(...A.map(b=>b.rect.top))-20,Math.max(...A.map(b=>b.rect.bottom))+20]:[Math.min(...A.map(b=>b.rect.left))-20,Math.max(...A.map(b=>b.rect.right))+20];for(let b of L){let P=N(I,E.segment,b);if(!(!P||!p(S,P,a))){S.points=P,h=!0;break}}if(h)break}if(!h)return}}i(Pn,"liftObstacleHuggingSameSideRails");function Cn(e,t,n){let r=i(y=>{let m=y.groupTitleRect;if(!(!m||typeof m.left!="number"||typeof m.right!="number"||typeof m.top!="number"||typeof m.bottom!="number"||!Number.isFinite(m.left)||!Number.isFinite(m.right)||!Number.isFinite(m.top)||!Number.isFinite(m.bottom)||m.right<=m.left||m.bottom<=m.top))return{left:m.left,right:m.right,top:m.top,bottom:m.bottom}},"validTitleRect"),s=i(y=>{if(!y.isGroup||y.parentId)return;let m=Ro(y.direction??n);if(m==="LR"||m==="RL"||m==="BT")return;let u=r(y),N=y.y,p=y.height;if(!u||typeof N!="number"||typeof p!="number"||!Number.isFinite(N)||!Number.isFinite(p)||p<=0)return;let l=u.right-u.left,a=u.bottom-u.top;if(!(a<=0||l<a))return{node:y,rect:u}},"topLaneTitleFor"),c=i((y,m)=>{if(!y.horizontal)return!1;let u=y.a.y;return u<m.top-J||u>m.bottom+J?!1:Xe(y.a.x,y.b.x,m.left,m.right)>=De},"horizontalSegmentIntersectsTitle"),f=[...t.values()].map(s).filter(y=>!!y);if(f.length===0)return;let g=0;for(let y of e){if(y.isLayoutOnly)continue;let m=le(y.points??[]);for(let u of ie(m))for(let N of f)c(u,N.rect)&&(g=Math.max(g,N.rect.bottom-u.a.y+4))}if(!(g<=J))for(let y of f){let m=y.node.y,u=y.node.height;typeof m!="number"||typeof u!="number"||!Number.isFinite(m)||!Number.isFinite(u)||u<=0||(y.node.y=m-g/2,y.node.height=u+g,y.node.groupTitleRect={...y.rect,top:y.rect.top-g,bottom:y.rect.bottom-g})}}i(Cn,"liftTopLaneTitleBandsAboveRails");function Tn(e,t,n){let r=i(m=>{let u=m.groupTitleRect;if(!(!u||typeof u.left!="number"||typeof u.right!="number"||typeof u.top!="number"||typeof u.bottom!="number"||!Number.isFinite(u.left)||!Number.isFinite(u.right)||!Number.isFinite(u.top)||!Number.isFinite(u.bottom)||u.right<=u.left||u.bottom<=u.top))return{left:u.left,right:u.right,top:u.top,bottom:u.bottom}},"validTitleRect"),s=i(m=>{if(!m.isGroup||m.parentId||Ro(m.direction??n)!=="LR")return;let N=r(m),p=m.x,l=m.width;if(!N||typeof p!="number"||typeof l!="number"||!Number.isFinite(p)||!Number.isFinite(l)||l<=0)return;let a=N.right-N.left,h=N.bottom-N.top;if(!(a<=0||h<a))return{node:m,rect:N}},"leftLaneTitleFor"),c=i((m,u)=>{if(!m.vertical)return!1;let N=m.a.x;return N<u.left-J||N>u.right+J?!1:Xe(m.a.y,m.b.y,u.top,u.bottom)>=De},"verticalSegmentIntersectsTitle"),f=i((m,u)=>{if(!m.horizontal)return!1;let N=m.a.y;return N<u.top-J||N>u.bottom+J?!1:Xe(m.a.x,m.b.x,u.left,u.right)>=De},"horizontalSegmentIntersectsTitle"),g=[...t.values()].map(s).filter(m=>!!m);if(g.length===0)return;let y=0;for(let m of e){if(m.isLayoutOnly)continue;let u=le(m.points??[]);for(let N of ie(u))for(let p of g)if(c(N,p.rect))y=Math.max(y,p.rect.right-N.a.x+4);else if(f(N,p.rect)){let l=Math.min(N.a.x,N.b.x);y=Math.max(y,p.rect.right-l+4)}}if(!(y<=J))for(let m of g){let u=m.node.x,N=m.node.width;typeof u!="number"||typeof N!="number"||!Number.isFinite(u)||!Number.isFinite(N)||N<=0||(m.node.x=u-y/2,m.node.width=N+y,m.node.groupTitleRect={...m.rect,left:m.rect.left-y,right:m.rect.right-y})}}i(Tn,"shiftLeftLaneTitleBandsLeftOfRails");function Po(e,t){let{realNodeRects:r}=lt(t.values()),s=e.filter(a=>!a.isLayoutOnly),c=i((a,h=new Map)=>le(h.get(a)??a.points??[]),"replacementPointsFor"),f=i((a=new Map)=>{let h=0;for(let S=0;S<s.length;S++){let I=ie(c(s[S],a));for(let E=S+1;E<s.length;E++){let A=ie(c(s[E],a));for(let L of I)for(let b of A)at(L.a,L.b,b.a,b.b,J)&&h++}}return h},"crossingCount"),g=i((a=new Map)=>s.reduce((h,S)=>h+Ze(c(S,a)),0),"totalBends"),y=i(a=>{let h=c(a);if(h.length<4)return;let S=h[h.length-2],I=h[h.length-1];if(!(!Ee(S,I,J)&&!Pe(S,I,J)))return{tailStart:S,terminal:I}},"terminalTailFor"),m=i((a,h)=>{let S=c(a);if(S.length<3)return;let I=S[0],E=S[1],A;if(Ee(I,E,J))A={x:E.x,y:h.tailStart.y};else if(Pe(I,E,J))A={x:h.tailStart.x,y:E.y};else return;let L=rt(le([I,E,A,h.tailStart,h.terminal]));return ie(L).length===L.length-1?L:void 0},"candidateWithDestinationTail"),u=i((a,h)=>{let S=[a.start,a.end].filter(I=>!!I);for(let I of ie(h))if(Le(I.a,I.b,r,S,-2))return!0;return!1},"pathHasNodeHit"),N=i((a,h,S)=>{for(let I of s)if(I!==a){for(let E of ie(h))for(let A of ie(c(I,S)))if(it(E,A,.5)>=De)return!0}return!1},"pathHasSharedTrack"),p=i((a,h,S)=>!u(a,h)&&!N(a,h,S),"candidateIsSafe"),l=i(()=>{let a=new Map;for(let h of s){let S=h.end;if(!S||!t.has(S)||c(h).length<4)continue;let E=a.get(S)??[];E.push(h),a.set(S,E)}return a},"edgesByDestination");for(let a=0;a<4;a++){let h=f();if(h===0)return;let S=g(),I,E=h,A=S;for(let L of l().values())for(let b=0;b<L.length;b++)for(let P=b+1;P<L.length;P++){let O=L[b],B=L[P],T=y(O),D=y(B);if(!T||!D)continue;let _=m(O,D),v=m(B,T);if(!_||!v)continue;let z=new Map([[O,_],[B,v]]);if(!p(O,_,z)||!p(B,v,z))continue;let Y=f(z),K=g(z);Y>=h||Y>E||Y===E&&K>=A||(I=z,E=Y,A=K)}if(!I)return;for(let[L,b]of I)L.points=b}}i(Po,"swapDestinationTerminalTailsToReduceCrossings");function Co(e,t){let{realNodeRects:c,labelNodeRects:f}=lt(t.values()),g=e.filter(L=>!L.isLayoutOnly),y=i((L,b=new Map)=>le(b.get(L)??L.points??[]),"replacementPointsFor"),m=i((L=new Map)=>{let b=0;for(let P=0;P<g.length;P++){let O=ie(y(g[P],L));for(let B=P+1;B<g.length;B++){let T=ie(y(g[B],L));for(let D of O)for(let _ of T)at(D.a,D.b,_.a,_.b,J)&&b++}}return b},"strictCrossingCount"),u=i((L=new Map)=>g.reduce((b,P)=>b+Ze(y(P,L)),0),"totalBends"),N=i(L=>{let b=L.start,P=L.end,O=b?t.get(b):void 0,B=P?t.get(P):void 0,T=O?_e(O):void 0,D=B?_e(B):void 0;return T&&D?{src:T,dst:D}:void 0},"endpointRectsFor"),p=i((L,b,P)=>{if(P.index<=0||P.index+1>=b.length-1)return;let O=N(L);if(O){if(P.vertical){let B=P.a.x,T=Math.min(O.src.left,O.dst.left),D=Math.max(O.src.right,O.dst.right),_=B<T-J?"left":B>D+J?"right":void 0;return _?{edge:L,points:b,segmentIndex:P.index,axis:"vertical",side:_,coord:B,min:Math.min(P.a.y,P.b.y),max:Math.max(P.a.y,P.b.y)}:void 0}if(P.horizontal){let B=P.a.y,T=Math.min(O.src.top,O.dst.top),D=Math.max(O.src.bottom,O.dst.bottom),_=B<T-J?"top":B>D+J?"bottom":void 0;return _?{edge:L,points:b,segmentIndex:P.index,axis:"horizontal",side:_,coord:B,min:Math.min(P.a.x,P.b.x),max:Math.max(P.a.x,P.b.x)}:void 0}}},"externalRailForSegment"),l=i(()=>{let L=[];for(let b of g){let P=y(b);for(let O of ie(P)){let B=p(b,P,O);B&&L.push(B)}}return L},"collectExternalRails"),a=i((L,b)=>L.edge!==b.edge&&L.axis===b.axis&&L.side===b.side&&Xe(L.min,L.max,b.min,b.max)>=De,"railsInteract"),h=i(L=>{let b=[],P=new Set;for(let O of L){if(P.has(O))continue;let B=[O],T=[];for(P.add(O);B.length>0;){let D=B.pop();T.push(D);for(let _ of L)!P.has(_)&&a(D,_)&&(P.add(_),B.push(_))}T.length>1&&b.push(T)}return b},"connectedComponents"),S=i(L=>{let b=[];for(let P of L)b.some(O=>Math.abs(O-P.coord)<J)||b.push(P.coord);for(;b.length<L.length;){let P=Math.min(...b),O=Math.max(...b),B=L[0].side;b.push(B==="left"||B==="top"?P-12*(L.length-b.length):O+12*(L.length-b.length))}return b},"uniqueCoordsFor"),I=i(L=>{let b=L.map(B=>B.coord),P=S(L),O=[];if(L.length<=6){let B=new Array(P.length).fill(!1),T=[],D=i(()=>{if(T.length===L.length){T.some((_,v)=>Math.abs(_-b[v])>=J)&&O.push([...T]);return}for(let[_,v]of P.entries())B[_]||(B[_]=!0,T.push(v),D(),T.pop(),B[_]=!1)},"visit");return D(),O}for(let B=0;B<b.length;B++)for(let T=B+1;T<b.length;T++){let D=[...b];[D[B],D[T]]=[D[T],D[B]],O.push(D)}return O},"coordinateAssignmentsFor"),E=i((L,b)=>{let P=new Map;for(let[B,T]of L.entries()){let D=b[B],_=P.get(T.edge)??T.points.map(v=>({x:v.x,y:v.y}));T.axis==="vertical"?(_[T.segmentIndex].x=D,_[T.segmentIndex+1].x=D):(_[T.segmentIndex].y=D,_[T.segmentIndex+1].y=D),P.set(T.edge,_)}let O=new Map;for(let[B,T]of P){let D=rt(le(T));if(ie(D).length!==D.length-1)return;O.set(B,D)}return O},"replacementsForAssignment"),A=i(L=>{for(let[b,P]of L){let O=[b.start,b.end].filter(B=>!!B);for(let B of ie(P))if(Le(B.a,B.b,c,O,-2)||Le(B.a,B.b,f,[],-2))return!1}for(let b=0;b<g.length;b++){let P=g[b],O=L.has(P),B=ie(y(P,L));for(let T=b+1;T<g.length;T++){let D=g[T];if(!O&&!L.has(D))continue;let _=ie(y(D,L));for(let v of B)for(let z of _)if(it(v,z,.5)>=De)return!1}}return!0},"candidateIsSafe");for(let L=0;L<4;L++){let b=m();if(b===0)return;let P,O=b,B=u(),T=Number.POSITIVE_INFINITY;for(let D of h(l()))for(let _ of I(D)){let v=E(D,_);if(!v||!A(v))continue;let z=m(v);if(z>=b)continue;let Y=u(v),K=D.reduce((ae,he,Oe)=>ae+Math.abs(_[Oe]-he.coord),0);z>O||z===O&&(Y>B||Y===B&&K>=T)||(P=v,O=z,B=Y,T=K)}if(!P)return;for(let[D,_]of P)D.points=_}}i(Co,"reassignCrossingExternalRailChannels");function To(e,t){let{realNodeRects:r,labelNodeRects:s}=lt(t.values()),c=e.filter(l=>!l.isLayoutOnly),f=i((l,a,h)=>le(l===a?h??[]:l.points??[]),"pointsFor"),g=i(l=>ie(l).reduce((a,h)=>{let S=h.a.x-h.b.x,I=h.a.y-h.b.y;return a+Math.hypot(S,I)},0),"pathLength"),y=i((l,a)=>{let h=0;for(let S=0;S<c.length;S++){let I=ie(f(c[S],l,a));for(let E=S+1;E<c.length;E++){let A=ie(f(c[E],l,a));for(let L of I)for(let b of A)at(L.a,L.b,b.a,b.b,J)&&h++}}return h},"strictCrossingCount"),m=i((l,a)=>{if(l.horizontal){let h=l.a.y;return(Math.abs(h-a.top)<1||Math.abs(h-a.bottom)<1)&&Xe(l.a.x,l.b.x,a.left,a.right)>=De}if(l.vertical){let h=l.a.x;return(Math.abs(h-a.left)<1||Math.abs(h-a.right)<1)&&Xe(l.a.y,l.b.y,a.top,a.bottom)>=De}return!1},"segmentRunsAlongRectBorder"),u=i(l=>{let a=[l.start,l.end].filter(S=>!!S),h=[];for(let S of a){let I=t.get(S),E=I?_e(I):void 0;E&&h.push(E)}return h},"endpointRectsFor"),N=i((l,a)=>{if(a+3>=l.length)return[];let h=l[a],S=l[a+1],I=l[a+2],E=l[a+3],A=Ee(h,S,J)&&Pe(S,I,J)&&Ee(I,E,J),L=Pe(h,S,J)&&Ee(S,I,J)&&Pe(I,E,J);if(!A&&!L)return[];if(!(A?Math.sign(S.x-h.x)!==Math.sign(E.x-I.x):Math.sign(S.y-h.y)!==Math.sign(E.y-I.y)))return[];let P=de(h,E,J)||ue(h,E,J)?[]:[{x:h.x,y:E.y},{x:E.x,y:h.y}],O=P.length===0?[[...l.slice(0,a+1),...l.slice(a+3)]]:P.map(T=>[...l.slice(0,a+1),T,...l.slice(a+3)]),B=new Set;return O.map(T=>rt(le(T))).filter(T=>{if(ie(T).length!==T.length-1||!T.some(_=>qe(_,E,J)))return!1;let D=T.map(_=>`${_.x.toFixed(3)},${_.y.toFixed(3)}`).join("|");return B.has(D)?!1:(B.add(D),!0)})},"shortcutCandidatesAt"),p=i((l,a,h)=>{let S=[l.start,l.end].filter(E=>!!E),I=u(l);for(let E of ie(a))if(Le(E.a,E.b,r,S,-2)||Le(E.a,E.b,s,[],-2)||I.some(A=>m(E,A)))return!1;for(let E of c)if(E!==l){for(let A of ie(a))for(let L of ie(f(E)))if(it(A,L,.5)>=De)return!1}return y(l,a)<=h},"candidateIsSafe");for(let l=0;l<8;l++){let a=y(),h,S,I=a,E=Number.POSITIVE_INFINITY,A=Number.POSITIVE_INFINITY;for(let L of c){let b=f(L),P=Ze(b,J),O=g(b);for(let B=0;B<=b.length-4;B++)for(let T of N(b,B)){let D=Ze(T,J),_=g(T);if(!(D<P||D===P&&_<O-J)||!p(L,T,a))continue;let z=y(L,T);z>I||z===I&&(D>E||D===E&&_>=A)||(h=L,S=T,I=z,E=D,A=_)}}if(!h||!S)return;h.points=S}}i(To,"shortcutRedundantOrthogonalJogs");function Oo(e,t){let c=[];for(let w of t.values()){if(w.isGroup||w.isEdgeLabel)continue;let F=w.x??0,G=w.y??0,V=_e(w);V&&c.push({id:String(w.id??""),cx:F,cy:G,rect:V})}if(c.length===0)return;let f=new Map(c.map(w=>[w.id,w])),g=c.map(w=>({id:w.id,rect:w.rect})),y=["top","bottom","left","right"],m={top:Math.min(...c.map(w=>w.rect.top))-20,bottom:Math.max(...c.map(w=>w.rect.bottom))+20,left:Math.min(...c.map(w=>w.rect.left))-20,right:Math.max(...c.map(w=>w.rect.right))+20},u=e.filter(w=>!w.isLayoutOnly),N=new Map(u.map((w,F)=>[w,F])),p=i(w=>{let F=w==="left"||w==="top"?-1:1,G=[];for(let V=0;V<=2;V++)G.push(m[w]+F*20*V);return G},"outwardTracksForSide"),l=i((w,F=new Map)=>le(F.get(w)??w.points??[]),"replacementPointsFor"),a=i((w,F)=>{let G=0;for(let V of w)for(let d of F)at(V.a,V.b,d.a,d.b,J)&&G++;return G},"crossingCountBetweenSegments"),h=i((w,F)=>a(ie(w),ie(F)),"crossingCountBetweenPaths"),S=i((w=new Map)=>{let F=0,G=[],V=new Set,d=[],x=i(M=>{V.has(M)||(V.add(M),d.push(M))},"addEdge");for(let M=0;M<u.length;M++){let R=u[M],C=l(R,w);for(let k=M+1;k<u.length;k++){let U=u[k],Z=h(C,l(U,w));Z>0&&(F+=Z,G.push({first:R,second:U,count:Z}),x(R),x(U))}}return d.sort((M,R)=>(N.get(M)??0)-(N.get(R)??0)),{count:F,pairs:G,edgeSet:V,edges:d}},"crossingSnapshot"),I=i((w,F)=>{let G=new Set(F.keys());if(G.size===0)return w.count;let V=0;for(let x of w.pairs)(G.has(x.first)||G.has(x.second))&&(V+=x.count);let d=0;for(let x=0;x<u.length;x++){let M=u[x],R=G.has(M),C=l(M,F);for(let k=x+1;k<u.length;k++){let U=u[k];!R&&!G.has(U)||(d+=h(C,l(U,F)))}}return w.count-V+d},"crossingCountWithReplacements"),E=i(w=>{let F=new Map;for(let d of w.pairs){let x=F.get(d.first)??new Set;x.add(d.second),F.set(d.first,x);let M=F.get(d.second)??new Set;M.add(d.first),F.set(d.second,M)}let G=[],V=new Set;for(let d of w.edges){if(V.has(d))continue;let x=[d],M=[];for(V.add(d);x.length>0;){let R=x.pop();M.push(R);for(let C of F.get(R)??[])V.has(C)||(V.add(C),x.push(C))}M.sort((R,C)=>(N.get(R)??0)-(N.get(C)??0)),M.length>1&&G.push(M)}return G},"crossingComponents"),A=i(w=>[w.start,w.end].filter(F=>!!F),"endpointIdsFor"),L=i(w=>{let F=[];for(let G of E(w)){let V=new Set(G),d=new Set(G.flatMap(M=>A(M))),x=[...G];for(let M of u)V.has(M)||A(M).some(R=>d.has(R))&&x.push(M);x.sort((M,R)=>(N.get(M)??0)-(N.get(R)??0)),F.push(x)}return F},"pairSearchGroups"),b=i((w,F,G)=>I(w,new Map([[F,G]])),"crossingCountWithSingleReplacement"),P=i(w=>{let F=new Map;for(let G of w.pairs)F.set(G.first,(F.get(G.first)??0)+G.count),F.set(G.second,(F.get(G.second)??0)+G.count);return F},"currentCrossingsByEdge"),O=i(w=>w.slice(1).reduce((F,G,V)=>{let d=w[V];return F+Math.abs(G.x-d.x)+Math.abs(G.y-d.y)},0),"pathLength"),B=i((w=new Map)=>u.reduce((F,G)=>F+Ze(l(G,w)),0),"totalBends"),T=i((w=new Map)=>u.reduce((F,G)=>F+O(l(G,w)),0),"totalLength"),D=i((w,F,G=new Map)=>{let V=ie(F);for(let d of u)if(d!==w){for(let x of V)for(let M of ie(l(d,G)))if(it(x,M,.5)>=De)return!0}return!1},"pathHasSegmentConflict"),_=i((w,F)=>{let G=[w.start,w.end].filter(V=>!!V);for(let V of ie(F))if(Le(V.a,V.b,g,G,-2))return!0;return!1},"pathHitsNode"),v=i((w,F)=>{let G=rt(le(F));ie(G).length===G.length-1&&w.push(G)},"pushOrthogonalCandidate"),z=i(w=>w==="left"||w==="right","sideIsHorizontal"),Y=i((w,F,G)=>{switch(F){case"left":return Math.min(w.x,G.x)-20;case"right":return Math.max(w.x,G.x)+20;case"top":return Math.min(w.y,G.y)-20;case"bottom":return Math.max(w.y,G.y)+20}},"localTrackForSameSide"),K=i((w,F,G,V)=>{let d=G==="left"||G==="top"?-1:1,x=[Y(F,G,V),m[G]];for(let M of x)for(let R=0;R<=2;R++)v(w,Kt(F,G,V,M+d*20*R))},"addSameSideCandidates"),ae=i((w,F,G,V,d)=>{for(let x of p(G))for(let M of p(d))v(w,[F,{x,y:F.y},{x,y:M},{x:V.x,y:M},V])},"addHorizontalToVerticalCandidates"),he=i((w,F,G,V,d)=>{for(let x of p(G))for(let M of p(d))v(w,[F,{x:F.x,y:x},{x:M,y:x},{x:M,y:V.y},V])},"addVerticalToHorizontalCandidates"),Oe=i((w,F,G,V,d)=>{let x=[...p("top"),...p("bottom")];for(let M of p(G))for(let R of p(d))for(let C of x)v(w,[F,{x:M,y:F.y},{x:M,y:C},{x:R,y:C},{x:R,y:V.y},V])},"addHorizontalPairCandidates"),Be=i((w,F,G,V,d)=>{let x=[...p("left"),...p("right")];for(let M of p(G))for(let R of p(d))for(let C of x)v(w,[F,{x:F.x,y:M},{x:C,y:M},{x:C,y:R},{x:V.x,y:R},V])},"addVerticalPairCandidates"),Q=i(w=>{let F=new Set;return w.map(G=>le(G)).filter(G=>{let V=G.map(d=>`${d.x.toFixed(3)},${d.y.toFixed(3)}`).join("|");return F.has(V)||G.length<2?!1:(F.add(V),!0)})},"dedupeCandidatePaths"),W=i((w,F,G,V)=>{let d=[],x=Wt(w,F,G,V,20,J);x&&v(d,x),F===V&&K(d,w,F,G);let M=z(F),R=z(V);return M&&!R?ae(d,w,F,G,V):!M&&R?he(d,w,F,G,V):M?Oe(d,w,F,G,V):Be(d,w,F,G,V),Q(d)},"buildCandidatesForSides"),te=i((w,F,G,V)=>{let d=[...p("left"),...p("right")],x=[...p("top"),...p("bottom")];for(let M of y){let R=ht(V,M),C=M==="top"||M==="bottom"?p(M):x;for(let k of d){v(w,[F,G,{x:k,y:G.y},{x:k,y:R.y},R]);for(let U of C)v(w,[F,G,{x:k,y:G.y},{x:k,y:U},{x:R.x,y:U},R])}}},"addVerticalDepartureOuterTrackCandidates"),fe=i((w,F,G,V)=>{let d=[...p("left"),...p("right")],x=[...p("top"),...p("bottom")];for(let M of y){let R=ht(V,M),C=M==="left"||M==="right"?p(M):d;for(let k of x){v(w,[F,G,{x:G.x,y:k},{x:R.x,y:k},R]);for(let U of C)v(w,[F,G,{x:G.x,y:k},{x:U,y:k},{x:U,y:R.y},R])}}},"addHorizontalDepartureOuterTrackCandidates"),pe=i(w=>{let F=w.start,G=w.end,V=G?f.get(G):void 0;if(!F||!V)return[];let d=le(w.points??[]);if(d.length<4)return[];let x=d[0],M=d[1],R=[];return Pe(x,M,J)?te(R,x,M,V):Ee(x,M,J)&&fe(R,x,M,V),R},"terminalPreservingOuterTrackCandidates"),xe=i(w=>{let F=w.start,G=w.end,V=F?f.get(F):void 0,d=G?f.get(G):void 0;if(!V||!d)return[];let x=[];for(let M of y){let R=ht(V,M);for(let C of y)x.push(...W(R,M,ht(d,C),C))}return x.push(...pe(w)),x},"candidatePathsFor"),Re=i(()=>new Map(u.map(w=>[w,ie(l(w))])),"currentSegmentsByEdge"),Ve=i((w,F,G)=>{let V=new Set;for(let d of u){if(d===w)continue;let x=G.get(d)??ie(l(d));F.some(M=>x.some(R=>it(M,R,.5)>=De))&&V.add(d)}return V},"sharedTrackConflictsFor"),Ue=i((w,F,G,V)=>{let d=new Set;return xe(w).map(M=>rt(le(M))).filter(M=>{if(_(w,M))return!1;let R=M.map(C=>`${C.x.toFixed(3)},${C.y.toFixed(3)}`).join("|");return d.has(R)||M.length<2?!1:(d.add(R),!0)}).map(M=>{let R=ie(M),C=0;for(let k of u)k!==w&&(C+=a(R,G.get(k)??ie(l(k))));return{candidate:M,candidateSegments:R,crossings:F.count-(V.get(w)??0)+C,bends:Ze(M,J),totalBends:Ze(M),length:O(M)}}).filter(({crossings:M})=>M<=F.count).sort((M,R)=>M.crossings-R.crossings||M.bends-R.bends||M.length-R.length).slice(0,48).map(M=>({path:M.candidate,segments:M.candidateSegments,sharedTrackConflicts:Ve(w,M.candidateSegments,G),totalBends:M.totalBends,length:M.length}))},"pairCandidatesFor"),We=i((w,F,G,V,d,x)=>{let M=0;for(let C of w.pairs)(C.first===F||C.second===F||C.first===V||C.second===V)&&(M+=C.count);let R=a(G.segments,d.segments);for(let C of u){if(C===F||C===V)continue;let k=x.get(C)??ie(l(C));R+=a(G.segments,k)+a(d.segments,k)}return w.count-M+R},"pairCrossingCount"),nt=i((w,F)=>{for(let G of w.sharedTrackConflicts)if(G!==F)return!1;return!0},"conflictsOnlyWith"),Nt=i((w,F)=>w.segments.some(G=>F.segments.some(V=>it(G,V,.5)>=De)),"candidatesShareTrack"),ft=i((w,F,G,V)=>nt(F,G.edge)&&nt(V,w.edge)&&!Nt(F,V),"pairCandidatesAreCompatible"),St=i((w,F,G,V,d)=>{let x=We(w.current,F.edge,G,V.edge,d,w.baseSegments);if(!(x>=w.current.count))return{replacements:new Map([[F.edge,G.path],[V.edge,d.path]]),crossings:x,bends:w.currentBends-(w.baseBendsByEdge.get(F.edge)??0)-(w.baseBendsByEdge.get(V.edge)??0)+G.totalBends+d.totalBends,length:w.currentLength-(w.baseLengthByEdge.get(F.edge)??0)-(w.baseLengthByEdge.get(V.edge)??0)+G.length+d.length}},"scorePairReplacement"),cn=i((w,F)=>w.crossings<F.crossings||w.crossings===F.crossings&&(w.bends<F.bends||w.bends===F.bends&&w.length<F.length),"pairScoreIsBetter"),dn=i((w,F,G,V)=>{let d=V;for(let x of F.candidates)for(let M of G.candidates){if(!ft(F,x,G,M))continue;let R=St(w,F,x,G,M);R&&cn(R,d)&&(d=R)}return d},"bestScoreForOptionPair"),ln=i(w=>{let F=B(),G=T(),V=Re(),d=P(w),x=new Map(u.map(Z=>[Z,Ze(l(Z))])),M=new Map(u.map(Z=>[Z,O(l(Z))])),R=new Map,C=L(w);for(let Z of C)for(let $ of Z){if(R.has($))continue;let X=Ue($,w,V,d);X.length>0&&R.set($,{edge:$,candidates:X})}let k={replacements:new Map,crossings:w.count,bends:F,length:G},U={current:w,currentBends:F,currentLength:G,baseBendsByEdge:x,baseLengthByEdge:M,baseSegments:V};for(let Z of C){let $=new Set(Z.filter(oe=>w.edgeSet.has(oe))),X=Z.map(oe=>R.get(oe)).filter(oe=>!!oe);for(let oe=0;oe<X.length;oe++){let se=X[oe];for(let re=oe+1;re<X.length;re++){let ee=X[re];!$.has(se.edge)&&!$.has(ee.edge)||(k=dn(U,se,ee,k))}}}return k.replacements.size>0?k.replacements:void 0},"bestPairedReplacement");for(let w=0;w<4;w++){let F=S(),G=F.count;if(G===0)return;let V,d,x=G,M=Number.POSITIVE_INFINITY;for(let C of F.edges){let k=Ze(l(C),J);for(let U of xe(C)){let Z=_(C,U),$=!Z&&D(C,U),X=b(F,C,U),oe=Ze(U,J);Z||$||!(X<G||X===G&&oe<k)||X>x||X===x&&oe>=M||(V=C,d=U,x=X,M=oe)}}if(V&&d){V.points=d;continue}let R=ln(F);if(!R)return;for(let[C,k]of R)C.points=k}}i(Oo,"resolveRenderedOrthogonalCrossings");var yt=.001,Hr=8;function wo(e,t){let{nodeInfoById:n,realNodeRects:o}=Tt(t),r=["top","bottom","left","right"],s=20,c={top:Math.min(...o.map(a=>a.rect.top))-s,bottom:Math.max(...o.map(a=>a.rect.bottom))+s,left:Math.min(...o.map(a=>a.rect.left))-s,right:Math.max(...o.map(a=>a.rect.right))+s},f=i((a,h,S,I)=>{let E=[],A=Wt(a,h,S,I,s,yt);return A&&E.push(A),h===I&&E.push(Kt(a,h,S,c[h])),E},"buildOrthogonalPathCandidates"),g=i((a,h)=>{for(let S=0;S<a.length-1;S++){let I=a[S],E=a[S+1];if(Le(I,E,o,h,1))return!0}return!1},"pathHitsNode"),y=i((a,h,S=!1)=>{let I=0,E=pt(a,yt),A=h.start,L=h.end;for(let b of e){if(b===h||b.isLayoutOnly)continue;let P=b.start,O=b.end;if(!S&&A&&L&&(P===A||P===L||O===A||O===L))continue;let B=b.points;if(!(!B||B.length<2))for(let T of E)for(let D of pt(B,yt)){if(bn(T.a,T.b,D.a,D.b,yt,yt)){I++;continue}it(T,D,yt)>=Hr&&I++}}return I},"pathConflictCount"),m=4,u=i((a,h)=>{let S=Math.abs(a.y-h.rect.top),I=Math.abs(a.y-h.rect.bottom),E=Math.abs(a.x-h.rect.left),A=Math.abs(a.x-h.rect.right),L="top",b=S;return I<b&&(L="bottom",b=I),E<b&&(L="left",b=E),A<b&&(L="right",b=A),L},"nearestSideOfRect"),N=new Map,p=i((a,h,S)=>{let I=N.get(a)??[];I.push({side:h,edgeId:S}),N.set(a,I)},"addFaceClaim");for(let a of e){if(a.isLayoutOnly)continue;let h=a.points??[];if(h.length<1)continue;let S=a.id??"",I=a.start,E=a.end;if(I){let A=n.get(I);A&&p(I,u(h[0],A),S)}if(E){let A=n.get(E);A&&p(E,u(h[h.length-1],A),S)}}let l=i((a,h,S)=>N.get(a)?.some(I=>I.edgeId!==S&&I.side===h)??!1,"faceIsClaimed");for(let a of e){if(a.isLayoutOnly)continue;let h=a.points;if(!h||h.length<2)continue;let S=Ze(h,yt);if(S<m)continue;let I=a.start,E=a.end;if(!I||!E)continue;let A=n.get(I),L=n.get(E);if(!A||!L)continue;let b=a.id??"",P=y(h,a,!0),O=y(h,a),B,T=P,D=S;for(let _ of r){if(l(I,_,b))continue;let v=ht(A,_);for(let z of r){if(l(E,z,b))continue;let Y=ht(L,z);for(let K of f(v,_,Y,z)){if(g(K,[I,E]))continue;let ae=Ze(K,yt);if(P>0){let he=y(K,a,!0);if(he>T||he===T&&ae>=D)continue;T=he,D=ae,B=K;continue}y(K,a)>O||ae<D&&(D=ae,B=K)}}}if(B){a.points=B;let _=N.get(I);_&&N.set(I,_.filter(z=>z.edgeId!==b));let v=N.get(E);v&&N.set(E,v.filter(z=>z.edgeId!==b)),p(I,u(B[0],A),b),p(E,u(B[B.length-1],L),b)}}}i(wo,"simplifyDetouredEdges");var Je=.001,Ao=10,Qt=7;function vo(e,t){let n=t?0:e.length-1,o=t?1:-1,r=e[n],s=e[n+o];if(!r||!s)return;let c=s.x-r.x,f=s.y-r.y;if(!(Math.abs(c)+Math.abs(f)<Je)){if(Math.abs(f)<=Je){let y=r.x+Math.sign(c)*Ao;return{left:Math.min(r.x,y),right:Math.max(r.x,y),top:r.y-Qt,bottom:r.y+Qt}}if(Math.abs(c)<=Je){let y=r.y+Math.sign(f)*Ao;return{left:r.x-Qt,right:r.x+Qt,top:Math.min(r.y,y),bottom:Math.max(r.y,y)}}return{left:Math.min(r.x,s.x),right:Math.max(r.x,s.x),top:Math.min(r.y,s.y),bottom:Math.max(r.y,s.y)}}}i(vo,"markerClearanceRectFor");function Xr(e){return{left:Math.min(e.left,e.right),right:Math.max(e.left,e.right),top:Math.min(e.top,e.bottom),bottom:Math.max(e.top,e.bottom)}}i(Xr,"normalizeRect");function Bo(e,t){let n=le(t),o=vo(n,!0),r=vo(n,!1);return[o,r].some(s=>s&&Ut(e,Xr(s)))}i(Bo,"labelOverlapsOwnMarker");function en(e,t){let n=[];for(let l of e){if(l.isLayoutOnly)continue;let a=l.points;if(!(!a||a.length<2))for(let h=0;h<a.length-1;h++)n.push({edgeId:l.id,p1:a[h],p2:a[h+1]})}let o=[],r=[];for(let l of t.values()){let a=l.isGroup,h=l.parentId;if(a&&!h){let I=_e(l);I&&r.push({id:l.id,rect:I});continue}if(a||l.isEdgeLabel)continue;let S=_e(l);S&&o.push({nodeId:l.id,rect:S})}let s=3,c=1,f=12,g=i((l,a)=>{let h=xn(a,s);for(let{nodeId:S,rect:I}of o)if(S!==l&&Ut(h,I))return!0;return!1},"labelOverlapsForeignNode"),y=i((l,a)=>{let h=xn(a,s);for(let S of n)if(S.edgeId!==l&&Bt(S.p1,S.p2,h))return!0;return!1},"labelOverlapsForeignEdge"),m=i((l,a,h)=>g(l,h)||y(a,h),"labelOverlapsAnything"),u=[],N=i(l=>{for(let{id:a,rect:h}of r)if(no(h,l))return a},"findContainingLane"),p=i((l,a)=>u.some(h=>h.labelId!==l&&Ut(a,h.rect)),"overlapsPlacedLabel");for(let l of e){if(l.isLayoutOnly)continue;let a=l.labelNodeId;if(!a)continue;let h=t.get(a);if(!h)continue;let S=l.points;if(!S||S.length<2)continue;let I=h.width??0,E=h.height??0;if(I<=0||E<=0)continue;let A=[];for(let Q=0;Q<S.length-1;Q++){let W=S[Q],te=S[Q+1],fe=Math.abs(W.x-te.x),pe=Math.abs(W.y-te.y);fe<Je&&pe<Je||fe>=Je&&pe>=Je||A.push({idx:Q,length:fe+pe,orientation:fe>=Je?"horizontal":"vertical",midX:(W.x+te.x)/2,midY:(W.y+te.y)/2})}if(A.length===0)continue;let L=A.length>=3?A.filter(Q=>Q.idx>0&&Q.idx<A.length-1):A,b=L.length>0?L:A,P=I>=E?"horizontal":"vertical",O=i(Q=>[...Q].sort((W,te)=>{let fe=W.orientation===P,pe=te.orientation===P;if(fe!==pe)return fe?-1:1;let xe=W.length>=(W.orientation==="horizontal"?I:E)+2,Re=te.length>=(te.orientation==="horizontal"?I:E)+2;return xe!==Re?xe?-1:1:te.length-W.length}),"rankSegments"),B=A[0],T=A[A.length-1],D=[.5,.25,.75,.05,.95,.15,.85,.1,.9],_=i((Q,W)=>{let te=S[Q.idx],fe=S[Q.idx+1];return{midX:te.x+(fe.x-te.x)*W,midY:te.y+(fe.y-te.y)*W}},"anchorAtT"),v=i((Q,W,te)=>Math.min(te,Math.max(W,Q)),"clamp"),z=i((Q,W)=>Q.midX>=W.left-Je&&Q.midX<=W.right+Je&&Q.midY>=W.top-Je&&Q.midY<=W.bottom+Je,"pointInsideRectInclusive"),Y=i(Q=>{let W=Ct(Q.midX,Q.midY,I,E),te=N(W);if(te)return{laneId:te,anchor:Q,rect:W};let fe=r.find(({rect:nt})=>z(Q,nt));if(!fe)return;let pe=fe.rect.left+I/2+c,xe=fe.rect.right-I/2-c,Re=fe.rect.top+E/2+c,Ve=fe.rect.bottom-E/2-c;if(pe>xe||Re>Ve)return;let Ue={midX:v(Q.midX,pe,xe),midY:v(Q.midY,Re,Ve)},We=Ct(Ue.midX,Ue.midY,I,E);return z(Q,We)?{laneId:fe.id,anchor:Ue,rect:We}:void 0},"placementForAnchor"),K=i((Q,W,te)=>Q.orientation==="horizontal"?Math.abs(W.midX-te.x):Math.abs(W.midY-te.y),"distanceAlongSegment"),ae=i((Q,W)=>{let fe=(Q.orientation==="horizontal"?I/2:E/2)+f;if(Q===B){let pe=S[Q.idx];if(K(Q,W,pe)+Je<fe)return!1}if(Q===T){let pe=S[Q.idx+1];if(K(Q,W,pe)+Je<fe)return!1}return!0},"labelClearsTerminalEndpoints"),he=i(Q=>{let W=O(Q);for(let te of W)for(let fe of D){let pe=_(te,fe);if(!ae(te,pe))continue;let xe=Y(pe);if(xe&&!Bo(xe.rect,S)&&!p(a,xe.rect)&&!m(a,l.id,xe.rect))return{laneId:xe.laneId,anchor:xe.anchor}}},"tryPool"),Oe=i((Q,W,te=!1)=>{let fe=O(Q);for(let pe of fe){let xe={midX:pe.midX,midY:pe.midY};if(W&&!ae(pe,xe))continue;let Re=Y(xe);if(Re&&!Bo(Re.rect,S)&&!p(a,Re.rect)&&!g(a,Re.rect)&&(te||!y(l.id,Re.rect)))return{laneId:Re.laneId,anchor:Re.anchor}}},"findLaneContainingFallback"),Be=he(b)??(b.length<A.length?he(A):void 0)??Oe(A,!0)??Oe(A,!1)??Oe(A,!1,!0);if(Be){h.x=Be.anchor.midX,h.y=Be.anchor.midY,h.parentId=Be.laneId;let Q=Ct(Be.anchor.midX,Be.anchor.midY,I,E),W=u.findIndex(te=>te.labelId===a);W>=0?u[W]={labelId:a,rect:Q}:u.push({labelId:a,rect:Q})}}}i(en,"anchorLabelsToPolyline");var On=1e-6,Yr=8,ko=Yr/2,jr=3;function _o(e,t){return e<t?`${e}::${t}`:`${t}::${e}`}i(_o,"pairKey");function Do(e,t){let{nodeInfoById:n,realNodeRects:o}=Tt(t),r=new Map;for(let c of t){let f=c.id;if(!c.isGroup&&c.isEdgeLabel){r.set(f,{w:c.width??0,h:c.height??0});continue}}let s=i((c,f,g,y)=>{let m=_o(f,g),u=0,N=i(p=>{if(!p)return;let l=r.get(p);if(!l)return;let a=y==="x"?l.w/2:l.h/2;a>u&&(u=a)},"consider");N(c.labelNodeId);for(let p of e){if(p===c||p.isLayoutOnly)continue;let l=p.start,a=p.end;!l||!a||_o(l,a)===m&&N(p.labelNodeId)}return u>0?u+jr:0},"labelClearanceFor");for(let c of e){if(c.isLayoutOnly)continue;let f=c.points;if(!$t(f,On))continue;let g=qt(c,n,On);if(!g)continue;let{srcId:y,dstId:m,srcInfo:u,dstInfo:N,collinearX:p,collinearY:l}=g;if(p===l)continue;let a,h;if(p){let L=N.cy>u.cy;a={x:u.cx,y:L?u.rect.bottom:u.rect.top},h={x:N.cx,y:L?N.rect.top:N.rect.bottom}}else{let L=N.cx>u.cx;a={x:L?u.rect.right:u.rect.left,y:u.cy},h={x:L?N.rect.left:N.rect.right,y:N.cy}}if(Le(a,h,o,[y,m],1))continue;let I=s(c,y,m,p?"x":"y"),E=I>ko?I:ko,A=[0,E,-E];for(let L of A){let b={...a},P={...h};if(p){if(b.x+=L,P.x+=L,b.x<=u.rect.left||b.x>=u.rect.right||P.x<=N.rect.left||P.x>=N.rect.right)continue}else if(b.y+=L,P.y+=L,b.y<=u.rect.top||b.y>=u.rect.bottom||P.y<=N.rect.top||P.y>=N.rect.bottom)continue;if(!Le(b,P,o,[y,m],1)&&!kt(b,P,e,c,{epsilon:On})){c.points=[b,P];break}}}}i(Do,"straightenCollinearSiblingDetours");function wn(e,t){let{realNodeRects:y,labelNodeRects:m}=lt(t.values()),u=i((b,P)=>pt(P,.001).map(O=>({...O,edge:b,interior:O.index>=1&&O.index<=P.length-3})),"segmentsFor"),N=i(()=>{let b=[];for(let P of e){if(P.isLayoutOnly)continue;let O=P.points;!O||O.length<2||b.push(...u(P,le(O)))}return b},"allSegments"),p=i((b,P)=>b.horizontal&&P.horizontal?Xe(b.a.x,b.b.x,P.a.x,P.b.x)>=8&&Math.abs(b.a.y-P.a.y)<7:b.vertical&&P.vertical?Xe(b.a.y,b.b.y,P.a.y,P.b.y)>=8&&Math.abs(b.a.x-P.a.x)<7:!1,"hasCrowdedParallelTrack"),l=i((b,P)=>{let O=b.start,B=b.end,T=u(b,P);if(T.length!==P.length-1)return!1;let D=[O,B].filter(v=>!!v),_=b.labelNodeId?[b.labelNodeId]:[];for(let v of T)if(Le(v.a,v.b,y,D,-2)||Le(v.a,v.b,m,_,-2))return!1;for(let v of e){if(v===b||v.isLayoutOnly)continue;let z=v.points;if(!(!z||z.length<2)){for(let Y of T)for(let K of u(v,le(z)))if(p(Y,K)||at(Y.a,Y.b,K.a,K.b,.001))return!1}}return!0},"candidateIsSafe"),a=i((b,P)=>{let O=le(b.edge.points??[]);if(O.length<4||b.index>=O.length-1)return;let B=O.map(T=>({...T}));if(b.horizontal)B[b.index].y+=P,B[b.index+1].y+=P;else if(b.vertical)B[b.index].x+=P,B[b.index+1].x+=P;else return;return u(b.edge,B).length===B.length-1?B:void 0},"shiftedCandidate"),h=i((b,P)=>({x:b.x??(P.left+P.right)/2,y:b.y??(P.top+P.bottom)/2}),"nodeCenter"),S=i(b=>{let P=b.edge,O=le(P.points??[]);if(O.length!==4||b.index!==1)return;let B=P.start?t.get(P.start):void 0,T=P.end?t.get(P.end):void 0,D=B?_e(B):void 0,_=T?_e(T):void 0,v=O.slice(b.index+2);if(!(!B||!T||!D||!_||v.length===0))return{sourceCenter:h(B,D),targetCenter:h(T,_),sourceRect:D,tail:v}},"sourceDetourContextFor"),I=i((b,P,O,B,T,D)=>{let _=B.y>=O.y,v=_?T.bottom:T.top,z=v+(_?20:-20);if(_&&b.b.y<=z+.001||!_&&b.b.y>=z-.001)return;let Y=b.a.x+P;return le([{x:O.x,y:v},{x:O.x,y:z},{x:Y,y:z},{x:Y,y:b.b.y},...D],.001)},"verticalSourceDetour"),E=i((b,P,O,B,T,D)=>{let _=B.x>=O.x,v=_?T.right:T.left,z=v+(_?20:-20);if(_&&b.b.x<=z+.001||!_&&b.b.x>=z-.001)return;let Y=b.a.y+P;return le([{x:v,y:O.y},{x:z,y:O.y},{x:z,y:Y},{x:b.b.x,y:Y},...D],.001)},"horizontalSourceDetour"),A=i((b,P)=>{let O=S(b);if(O){if(b.vertical)return I(b,P,O.sourceCenter,O.targetCenter,O.sourceRect,O.tail);if(b.horizontal)return E(b,P,O.sourceCenter,O.targetCenter,O.sourceRect,O.tail)}},"sourceDetourCandidate"),L=[-7,7,-14,14,-21,21];for(let b=0;b<12;b++){let P=N(),O=!1;for(let B=0;B<P.length&&!O;B++)for(let T=B+1;T<P.length&&!O;T++){let D=P[B],_=P[T];if(D.edge===_.edge||!p(D,_))continue;let v=[D,_].filter(z=>z.interior);for(let z of v){for(let Y of L){let K=a(z,Y);if(K&&l(z.edge,K)){z.edge.points=K,O=!0;break}let ae=A(z,Y);if(ae&&l(z.edge,ae)){z.edge.points=ae,O=!0;break}}if(O)break}}if(!O)return}}i(wn,"nudgeSharedInteriorSubpaths");function $r(e,t,n,o){let r=t.x-e.x,s=t.y-e.y,c=o.x-n.x,f=o.y-n.y,g=r*f-s*c;if(Math.abs(g)<1e-10)return!1;let y=n.x-e.x,m=n.y-e.y,u=(y*f-m*c)/g,N=(y*s-m*r)/g,p=.01;return u>p&&u<1-p&&N>p&&N<1-p}i($r,"segmentsIntersect");function An(e){let t=e.nodes??[],n=e.edges??[],o=[];if(!n.length||!t.length)return o;let r=oo(t),s=1,c=[];for(let g of n){if(g.isLayoutOnly)continue;let y=g.points;if(!y||y.length<2)continue;let m=g.start,u=g.end,N=g.labelNodeId,p=g.id??`${m}->${u}`;for(let l of r)if(!(l.nodeId===m||l.nodeId===u)&&!(N&&l.nodeId===N)){for(let a=0;a<y.length-1;a++)if(Bt(y[a],y[a+1],l,-s)){o.push({type:"edge-node-overlap",edgeId:p,targetId:l.nodeId,detail:`segment ${a} passes through node "${l.nodeId}"`});break}}for(let l=0;l<y.length-1;l++)c.push({edgeId:p,start:m,end:u,p1:y[l],p2:y[l+1]})}let f=new Set;for(let g=0;g<c.length;g++)for(let y=g+1;y<c.length;y++){let m=c[g],u=c[y];if(m.edgeId!==u.edgeId&&!(m.start===u.start||m.start===u.end||m.end===u.start||m.end===u.end)&&$r(m.p1,m.p2,u.p1,u.p2)){let N=m.edgeId<u.edgeId?`${m.edgeId}|${u.edgeId}`:`${u.edgeId}|${m.edgeId}`;f.has(N)||(f.add(N),o.push({type:"edge-edge-crossing",edgeId:m.edgeId,targetId:u.edgeId,detail:`edges "${m.edgeId}" and "${u.edgeId}" cross`}))}}if(o.length>0){let g=o.filter(m=>m.type==="edge-node-overlap").length,y=o.filter(m=>m.type==="edge-edge-crossing").length;vt.warn(`[SWIMLANE_VALIDATE] ${o.length} issue(s) detected: ${g} edge-node overlap(s), ${y} edge crossing(s)`);for(let m of o)vt.warn(`[SWIMLANE_VALIDATE]   ${m.type}: ${m.detail}`)}return o}i(An,"validateSwimlanesLayout");function Fo(e,t){let n=e.nodes??[],o=e.edges??[],r=n.filter(f=>!f.isGroup);if((t==="LR"||t==="RL")&&r.length>0&&!Lo(e,t)||t==="BT"&&r.length>0&&!Mo(e))return;for(let f of o){if(f.isLayoutOnly)continue;let g=f.points;!g||g.length<2||(f.points=rt(_t(g)))}wo(o,n),Do(o,n),No(o,n);let s=new Map;for(let f of n)s.set(String(f.id),f);en(o,s),ho(o,s),So(o,s),wn(o,s),En(o,s),Eo(o,s),Pn(o,s),Po(o,s);let c=i(()=>{Oo(o,s),En(o,s),Co(o,s),To(o,s),en(o,s),Nn(o,s),Pn(o,s),en(o,s),Nn(o,s)},"finalizeRenderedEdges");c(),wn(o,s),c(),Cn(o,s,t),Tn(o,s,t),Cn(o,s,t),Tn(o,s,t)}i(Fo,"postProcessSwimlaneLayout");function Qe(e){let t=new Map(e.nodeById),n=new Set,o=[];for(let s of e.edges){if(!t.has(s.src)||!t.has(s.dst))continue;let c=`${s.id}:${s.src}->${s.dst}`;n.has(c)||(n.add(c),o.push(s))}return{nodes:[...t.keys()],edges:o,layout:e.layout,nodeById:t}}i(Qe,"normalizeGraph");function tn(e,t){return e.edges.filter(n=>n.dst===t)}i(tn,"incoming");function Vr(e){let t=new Map;for(let n of e.nodes)t.set(n,[]);for(let n of e.edges)t.get(n.src).push(n.dst);return t}i(Vr,"buildSuccessorMap");function vn(e){let t=Vr(e);for(let n of t.values())n.sort((o,r)=>o.localeCompare(r));return t}i(vn,"buildSortedSuccessorMap");function Dt(e){let t=new Map;for(let n of e.nodes)t.set(n,0);for(let n of e.edges)t.set(n.dst,(t.get(n.dst)??0)+1);return t}i(Dt,"buildInDegreeMap");function Bn(e,t){let n=[...t.entries()].filter(([,f])=>f===0).map(([f])=>f).sort((f,g)=>f.localeCompare(g)),o=new Set(e.edges.flatMap(f=>[f.src,f.dst])),r=i(f=>!o.has(f)&&!e.nodeById.get(f)?.isGroup,"isUnconnected"),s=[...t.keys()].filter(f=>t.get(f)===0&&r(f)),c=0;return n.map(f=>r(f)?s[c++]:f)}i(Bn,"sortedZeroInDegreeNodes");function Ot(e,t=()=>!0){let n=new Map,o=new Map;for(let r of e.nodes)n.set(r,[]),o.set(r,[]);for(let r of e.edges)t(r)&&(o.get(r.src).push(r.dst),n.get(r.dst).push(r.src));return{preds:n,succs:o}}i(Ot,"buildPredecessorSuccessorMaps");function nn(e,t,n,o){let r=0;for(let c of e.nodes)o?.skipGroups&&e.nodeById.get(c)?.isGroup||(r=Math.max(r,n[c]??0));let s=Array.from({length:r+1},()=>[]);for(let c of t)o?.skipGroups&&e.nodeById.get(c)?.isGroup||s[Math.max(0,n[c]??0)].push(c);return s}i(nn,"buildLayersFromRanks");function xt(e){let t=Dt(e),n=Bn(e,t),o=[],r=vn(e);for(;n.length;){let s=n.shift();o.push(s);for(let c of r.get(s)??[])if(t.set(c,(t.get(c)??0)-1),(t.get(c)??0)===0){let f=0;for(;f<n.length&&n[f]<c;)f++;n.splice(f,0,c)}}return o.length===e.nodes.length?o:null}i(xt,"topoSortIfAcyclic");function It(e){let t=new Map,n=0;for(let o of e)t.set(o,n),n++;return t}i(It,"buildLayerIndex");function on(e){let t=new Array(e.length),n=i((o,r)=>{if(r-o<=1)return 0;let s=o+r>>1,c=n(o,s)+n(s,r),f=o,g=s,y=o;for(;f<s||g<r;)g>=r||f<s&&e[f]<=e[g]?t[y++]=e[f++]:(t[y++]=e[g++],c+=s-f);for(let m=o;m<r;m++)e[m]=t[m];return c},"count");return n(0,e.length)}i(on,"countInversions");function Go(e){let t=Qe(e),n=new Map;for(let u of t.nodes)n.set(u,[]);for(let u of t.edges)n.get(u.src).push(u);for(let u of n.values())u.sort((N,p)=>N.dst===p.dst?N.id.localeCompare(p.id):N.dst.localeCompare(p.dst));let o=Object.create(null);for(let u of t.nodes)o[u]=0;let r=[],s=i(u=>{o[u]=1;for(let N of n.get(u)??[]){let p=N.dst;o[p]===0?s(p):o[p]===1&&r.push(N)}o[u]=2},"dfs"),c=Dt(t),f=[...t.nodes.filter(u=>(c.get(u)??0)===0),...t.nodes.filter(u=>(c.get(u)??0)!==0)];for(let u of f)o[u]===0&&s(u);let g=new Set(r.map(u=>`${u.id}:${u.src}->${u.dst}`)),y=t.edges.map(u=>g.has(`${u.id}:${u.src}->${u.dst}`)?{id:u.id,src:u.dst,dst:u.src,weight:u.weight,ref:u.ref}:u);return{acyclic:{nodes:[...t.nodes],edges:y,layout:t.layout,nodeById:new Map(t.nodeById)},reversed:r}}i(Go,"removeCycles_DFS");function Ur(e){let t=new Map,n=i(o=>{if(t.has(o))return t.get(o);let r=e.nodeById.get(o);if(!r)return t.set(o,null),null;let s=r.parentId;if(!s)return t.set(o,null),null;let f=n(s)??s;return t.set(o,f),f},"resolve");for(let o of e.nodes)n(o);return t}i(Ur,"buildTopLaneMap");function Ye(e){let t=Ur(e);return n=>t.get(n)??null}i(Ye,"createTopLaneResolver");function rn(e){let t=[];for(let n of e.layout.nodes??[])n.isGroup&&!n.parentId&&t.push(n.id);return[...new Set(t)].reverse()}i(rn,"buildTopLaneOrder");function sn(e,t){let n=rn(e);if(!t||t.length===0)return n;let o=new Set(n),r=new Set,s=[];for(let c of t)!o.has(c)||r.has(c)||(r.add(c),s.push(c));for(let c of n)r.has(c)||s.push(c);return s}i(sn,"resolveTopLaneOrder");var zo={EPSILON:1e-6},Mt={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},kn={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40};function Ho(e,t){let n=Qe(e),o=t?.laneOf??(()=>null),r=t?.rankHint,{preds:s}=Ot(n);for(let L of s.values())L.sort((b,P)=>b.localeCompare(P));let c=xt(n)??[...n.nodes].sort((L,b)=>L.localeCompare(b)),f=new Map;for(let[L,b]of c.entries())f.set(b,L);let g=new Map,y=new Map;for(let L of n.nodes)y.set(L,[]);for(let L of c){let b=(s.get(L)??[]).filter(P=>g.has(P));if(b.length>0){let P=Wr(L,b,{laneOf:o,rankHint:r,topoIndex:f});g.set(L,P),y.get(P).push(L)}else g.has(L)||g.set(L,null)}for(let L of n.nodes)g.has(L)||g.set(L,null);let m=new Set;for(let L of n.nodes)(g.get(L)??null)===null&&m.add(L);let u=[...m].sort((L,b)=>{let P=f.get(L)??0,O=f.get(b)??0;return P===O?L.localeCompare(b):P-O}),N=Kr(n),p=new Map;for(let[L,b]of N.entries())p.set(L,[...b].sort((P,O)=>P.localeCompare(O)));let l=qr(p),a=Zr(p),h=new Map;for(let L of n.nodes)h.set(L,[]);for(let L of a)for(let b of L.nodes){let P=h.get(b);P?P.push(L.id):h.set(b,[L.id])}let S=[],I=[],E=new Set,A=i(L=>{if(!E.has(L)){E.add(L),S.push(L);for(let b of y.get(L)??[])A(b);I.push(L)}},"walk");for(let L of u)A(L);for(let L of c)A(L);return{parent:g,children:y,roots:u,componentOf:l,blocks:a,nodeBlocks:h,adjacency:p,preorder:S,postorder:I,topologicalOrder:c}}i(Ho,"buildDrivingTree");function Wr(e,t,n){let o=n.laneOf(e);return[...t].sort((s,c)=>{let f=n.laneOf(s),g=n.laneOf(c),y=f!=null&&f===o,m=g!=null&&g===o;if(y!==m)return y?-1:1;let u=n.rankHint?.[s],N=n.rankHint?.[c];if(u!=null&&N!=null&&u!==N)return N-u;let p=n.topoIndex.get(s)??0,l=n.topoIndex.get(c)??0;return p!==l?p-l:s.localeCompare(c)})[0]}i(Wr,"chooseParent");function Kr(e){let t=new Map;for(let n of e.nodes)t.set(n,new Set);for(let n of e.edges)t.get(n.src).add(n.dst),t.get(n.dst).add(n.src);return t}i(Kr,"buildAdjacency");function qr(e){let t=new Map,n=0;for(let o of e.keys()){if(t.has(o))continue;let r=[o];for(;r.length>0;){let s=r.pop();if(!t.has(s)){t.set(s,n);for(let c of e.get(s)??[])t.has(c)||r.push(c)}}n++}return t}i(qr,"assignComponents");function Zr(e){let t=new Map,n=new Map,o=[],r=[],s=0,c=i((f,g)=>{t.set(f,++s),n.set(f,s);for(let y of e.get(f)??[])y!==g&&(t.has(y)?(t.get(y)??0)<(t.get(f)??0)&&(o.push([f,y]),n.set(f,Math.min(n.get(f)??s,t.get(y)??s))):(o.push([f,y]),c(y,f),n.set(f,Math.min(n.get(f)??s,n.get(y)??s)),(n.get(y)??0)>=(t.get(f)??0)&&r.push(Jr(f,y,o,r.length))))},"visit");for(let f of e.keys())t.has(f)||c(f,null);return r}i(Zr,"computeBlocks");function Jr(e,t,n,o){let r=[],s=new Set;for(;n.length>0;){let c=n.pop();if(r.push(c),s.add(c[0]),s.add(c[1]),c[0]===e&&c[1]===t||c[0]===t&&c[1]===e)break}return{id:o,edges:r,nodes:[...s]}}i(Jr,"popBlock");function Xo(e,t,n){let o=[...e.nodes],r=new Map;for(let[I,E]of o.entries())r.set(E,I);let s=o.length,c=new Array(s).fill(-1),f=new Array(s).fill(0),g=[],y=new Set;for(let I of o){let E=n.parent.get(I)??null,A=r.get(I);A!=null&&E==null&&(c[A]=-1,f[A]=0,y.has(I)||(y.add(I),g.push(I)))}for(;g.length>0;){let I=g.shift(),E=r.get(I);if(E==null)continue;let A=n.children.get(I)??[];for(let L of A){if(y.has(L))continue;let b=r.get(L);b!=null&&(c[b]=E,f[b]=f[E]+1,y.add(L),g.push(L))}}for(let I of o){if(y.has(I))continue;let E=r.get(I);E!=null&&(c[E]=-1,f[E]=0,y.add(I))}let m=Math.max(1,Math.ceil(Math.log2(Math.max(1,s)))+1),u=Array.from({length:m},()=>new Array(s).fill(-1));for(let I=0;I<s;I++)u[0][I]=c[I];for(let I=1;I<m;I++)for(let E=0;E<s;E++){let A=u[I-1][E];u[I][E]=A===-1?-1:u[I-1][A]}let N=i((I,E)=>{if(I===-1||E===-1)return-1;f[I]<f[E]&&([I,E]=[E,I]);let A=f[I]-f[E];for(let L=0;L<m;L++)if(A>>L&1&&(I=u[L][I],I===-1))return-1;if(I===E)return I;for(let L=m-1;L>=0;L--){let b=u[L][I],P=u[L][E];b===-1||P===-1||b!==P&&(I=b,E=P)}return u[0][I]},"lcaIndex"),p=Array.from({length:s},()=>new Map);for(let I of e.edges){let E=I.src,A=I.dst,L=t[E],b=t[A];if(L==null||b==null||(L>b&&([E,A]=[A,E],[L,b]=[b,L]),L==null||b==null||L===b))continue;let P=r.get(E),O=r.get(A);if(P==null||O==null)continue;let B=N(P,O);if(B===-1)continue;let T=p[B];for(let D=L;D<b;D++)T.set(D,(T.get(D)??0)+1)}let l=new Map,a=i((I,E)=>{if(E.size!==0)for(let[A,L]of E)I.set(A,(I.get(A)??0)+L)},"mergeInto"),h=new Set,S=i(I=>{let E=r.get(I);h.add(I);let A=E==null?void 0:p[E],L=A?new Map(A):new Map,b=n.children.get(I)??[];for(let P of b){let O=S(P),B=t[I];if(B!=null){let T=l.get(I);T||(T=new Map,l.set(I,T));let D=O.get(B)??0,_=t[P];_!=null&&_>B&&(D+=1),T.set(P,D)}a(L,O)}return L},"dfs");for(let I of n.roots)h.has(I)||S(I);for(let I of o)h.has(I)||S(I);return l}i(Xo,"computeSubtreeCrossCounts");function Yo(e,t,n){let o=new Map,r=i(s=>{let c=n[s]??0,f=[...t.get(s)??[]];f.sort(_n(n));for(let g of f){r(g);let y=o.get(g);y!=null&&(c=Math.min(c,y))}o.set(s,c)},"annotate");for(let s of e)r(s);return o}i(Yo,"annotateMinimumLayers");function _n(e){return(t,n)=>{let o=e[t]??0,r=e[n]??0;return o===r?t.localeCompare(n):o-r}}i(_n,"compareByRankThenId");function jo(e,t,n,o){let r=0;for(let g of t){let y=n[g]??0;y>r&&(r=y)}let s=Array.from({length:r+1},()=>[]),c=new Set,f=i(g=>{if(c.has(g))return;c.add(g);let y=n[g]??0;s[y]||(s[y]=[]),s[y].push(g);for(let m of o(g))f(m)},"emit");for(let g of e)f(g);for(let g of t)if(!c.has(g)){let y=n[g]??0;s[y]||(s[y]=[]),s[y].push(g),c.add(g)}return s}i(jo,"emitNodesInTreeOrder");function $o(e){let t=[];for(let n of e){let o=new Set,r=[];for(let s of n)o.has(s)||(o.add(s),r.push(s));t.push(r)}return t}i($o,"deduplicateLayers");function Qr(e,t,n,o){return r=>{let s=e.get(r)??[];if(s.length===0)return[];let c=t[r]??0,f=[],g=[],y=n.get(r);for(let m of s){let u=o.get(m)??c;u>c?f.push({child:m,min:u}):g.push(m)}return f.sort((m,u)=>m.min===u.min?m.child.localeCompare(u.child):m.min-u.min),g.sort((m,u)=>{let N=y?.get(m)??0,p=y?.get(u)??0;if(N!==p)return N-p;let l=o.get(m)??c,a=o.get(u)??c;return l!==a?l-a:m.localeCompare(u)}),[...f.map(m=>m.child),...g]}}i(Qr,"createChildOrderer");function Ft(e,t,n){let o=Ho(e,{rankHint:t,laneOf:n}),{children:r,roots:s}=o;for(let u of e.nodes)r.has(u)||r.set(u,[]);let c=Xo(e,t,o),f=[...s].sort(_n(t)),g=Yo(f,r,t),y=Qr(r,t,c,g),m=jo(f,e.nodes,t,y);return m=$o(m),m}i(Ft,"buildMultitreeLayerOrder");function es(e,t,n){let o=new Set(e),r=new Set(t),s=It(t),c=[];for(let f of n)o.has(f.src)&&r.has(f.dst)&&c.push(s.get(f.dst));return on(c)}i(es,"countCrossingsBetweenAdjacent");function Vo(e,t,n){let o=[];for(let s of t){let c=n[s.src],f=n[s.dst];if(c==null||f==null||c===f)continue;let g=s.src,y=s.dst,m=c,u=f;c>f&&(g=s.dst,y=s.src,m=f,u=c);for(let N=m;N<u;N++)o.push({id:`${s.id}@${N}`,src:g,dst:y,ref:s.ref})}let r=0;for(let s=0;s+1<e.length;s++)r+=es(e[s],e[s+1],o);return r}i(Vo,"totalCrossings");function Uo(e,t){let n={...t},{preds:o}=Ot(e),r=Ye(e),s=Ft(e,n,r),c=Vo(s,e.edges,n),f=Mt.MAX_CROSSING_OPTIMIZATION_PASSES;for(let g=0;g<f;g++){let y=!1,m=[...e.nodes].sort((u,N)=>(n[N]??0)-(n[u]??0));for(let u of m){let N=n[u]??0;if(N===0)continue;let p=0;for(let S of o.get(u)??[])p=Math.max(p,(n[S]??0)+1);if(p>=N)continue;let l=N;n[u]=p;let a=Ft(e,n,r),h=Vo(a,e.edges,n);h<c?(c=h,y=!0):n[u]=l}if(!y)break}return n}i(Uo,"optimizeRanksByCrossings");function Wo(e,t){let n=Ye(e),o=[...e.nodes].sort((r,s)=>(t[r]??0)-(t[s]??0)||r.localeCompare(s));for(let r of o){let s=n(r);if(!s)continue;let c=e.edges.filter(a=>a.src===r);if(c.length===0)continue;let f=!1,g=0;for(let a of c){let h=n(a.dst);h==null||h===s?f=!0:g++}if(g===0||f)continue;let y=0,m=!1;for(let a of e.edges){if(a.dst!==r)continue;let h=n(a.src);h&&(h===s?m=!0:y++)}if(y>0||!m)continue;let u=t[r]??0,N=u+g,p=0;for(let a of e.edges)a.dst===r&&(p=Math.max(p,(t[a.src]??0)+1));let l=Math.max(u,p,N);l!==u&&(t[r]=l)}}i(Wo,"adjustCrossLaneSources");function Ko(e,t){let n=Qe(e),o=xt(n)??[...n.nodes].sort(),r=t?.compactSingleInput??!1,s=Ye(n),c=Object.create(null);for(let g of o){let y=tn(n,g),m=t?.ignoreCrossLaneEdges?y.filter(u=>{let N=s(u.src),p=s(g);return!N||!p?!0:N===p}):y;if(m.length===0)c[g]=0;else if(r&&m.length===1){let u=m[0].src,N=s(u),p=s(g);N!==p?c[g]=c[u]??0:c[g]=(c[u]??0)+1}else{let u=-1/0;for(let N of m)u=Math.max(u,(c[N.src]??0)+1);c[g]=u===-1/0?0:u}}return(t?.optimizeRanksByCrossings??!1)&&(c=Uo(n,c)),t?.ignoreCrossLaneEdges&&Wo(n,c),{layers:Ft(n,c,s),rankOf:c,dummy:new Set}}i(Ko,"assignLayers_LongestPath");function qo(e,t){let n=Qe(e),r={...Ko(n,{compactSingleInput:t?.compactSingleInput,ignoreCrossLaneEdges:t?.ignoreCrossLaneEdges,optimizeRanksByCrossings:t?.optimizeRanksByCrossings}).rankOf},s=Ye(n),{preds:c,succs:f}=Ot(n,l=>{if(t?.ignoreCrossLaneEdges){let a=s(l.src),h=s(l.dst);if(a&&h&&a!==h)return!1}return!0}),g=xt(n)??[...n.nodes],y=[...g].reverse(),m=i((l,a)=>{let h=0;for(let E of c.get(l)??[])h=Math.max(h,(r[E]??0)+1);let S=Number.POSITIVE_INFINITY,I=f.get(l)??[];return I.length>0&&(S=Math.min(...I.map(E=>(r[E]??0)-1))),Number.isFinite(S)||(S=Math.max(h,a)),Math.min(Math.max(a,h),S)},"clampFeasible"),u=Mt.GRAVITY_ITERATIONS,N=i(l=>{let a=!1;for(let h of l){let S=c.get(h)??[],I=f.get(h)??[];if(S.length===0&&I.length===0)continue;let E=S.length>0?S.reduce((P,O)=>P+(r[O]??0)+1,0)/S.length:r[h]??0,A=I.length>0?I.reduce((P,O)=>P+(r[O]??0)-1,0)/I.length:r[h]??0,L=Math.round((E+A)/2),b=m(h,L);b!==r[h]&&(r[h]=b,a=!0)}return a},"relaxOrder");for(let l=0;l<u;l++){let a=N(g),h=N(y);if(!a&&!h)break}for(let l of g){let a=0;for(let h of c.get(l)??[])a=Math.max(a,(r[h]??0)+1);(r[l]??0)<a&&(r[l]=a)}for(let l of y){let a=f.get(l)??[];if(a.length>0){let h=Math.min(...a.map(S=>(r[S]??0)-1));(r[l]??0)>h&&(r[l]=h)}}return{layers:nn(n,g,r),rankOf:r,dummy:new Set}}i(qo,"assignLayers_Gravity");function ts(e){let t=Dt(e),n=vn(e),o=Bn(e,t),r=[];for(;o.length>0;){let s=[];for(let c of o){r.push(c);for(let f of n.get(c)??[])t.set(f,(t.get(f)??0)-1),(t.get(f)??0)===0&&s.push(f)}o=s.sort((c,f)=>c.localeCompare(f))}return r.length===e.nodes.length?r:null}i(ts,"topoSortByGenerationIfAcyclic");function Zo(e,t){let n=Qe(e),o=t?.direction==="LR"?ts(n)??[...n.nodes].sort():xt(n)??[...n.nodes].sort(),r=Ye(n),s=i(m=>r(m)??m,"laneOf"),c=Object.create(null),f=new Map,g=i((m,u)=>t?.ignoreCrossLaneEdges??!0?s(m)===s(u)?1:0:1,"edgeWeight");for(let m of o){if(n.nodeById.get(m)?.isGroup)continue;let N=tn(n,m),p=0;if(N.length>0)for(let S of N){let I=S.src,E=c[I]??0;p=Math.max(p,E+g(I,m))}let l=s(m),a=f.get(l)??0,h=Math.max(p,a);c[m]=h,f.set(l,h+1)}return{layers:nn(n,o,c,{skipGroups:!0}),rankOf:c,dummy:new Set}}i(Zo,"assignLayers_LaneAwareCompact");function Jo(e,t){let n=Qe(t),{rankOf:o}=e,r=e.layers.map(p=>[...p]),s=new Set(e.dummy?[...e.dummy]:[]),c=0,f=new Map(n.nodeById),g=i(p=>{let l=`placeholder-${c++}`,a={id:l,isGroup:!1,isDummy:!0,width:0,height:0};for(f.set(l,a),s.add(l);r.length<=p;)r.push([]);return r[p].push(l),o[l]=p,l},"addDummyAt"),y=[...n.edges].sort((p,l)=>p.id===l.id?p.src===l.src?p.dst.localeCompare(l.dst):p.src.localeCompare(l.src):p.id.localeCompare(l.id)),m=[];for(let p of y){let l=o[p.src]??0,a=o[p.dst]??0;if(a-l<=1){m.push(p);continue}let h=p.src;for(let I=l+1,E=0;I<a;I++,E++){let A=g(I);m.push({id:`${p.id}#${E}`,src:h,dst:A,weight:p.weight,ref:p.ref}),h=A}let S=a-l-2;m.push({id:`${p.id}#${Math.max(S+1,0)}`,src:h,dst:p.dst,weight:p.weight,ref:p.ref})}let N={nodes:[...n.nodes,...[...s].filter(p=>!n.nodes.includes(p))],edges:m,layout:n.layout,nodeById:f};return{layering:{layers:r,rankOf:o,dummy:s},graphWithDummies:N}}i(Jo,"makeProperLayering");function Qo(e){let t=e.length;if(t===0)return Number.POSITIVE_INFINITY;let n=[...e].sort((o,r)=>o-r);return t%2===1?n[(t-1)/2]:.5*(n[t/2-1]+n[t/2])}i(Qo,"median");function er(e){return e.length===0?Number.POSITIVE_INFINITY:e.reduce((n,o)=>n+o,0)/e.length}i(er,"barycenter");function ns(e,t,n,o){let r=new Map;for(let s of e)r.set(s,[]);for(let s of n)o==="down"?t.has(s.src)&&r.has(s.dst)&&r.get(s.dst).push(t.get(s.src)):t.has(s.dst)&&r.has(s.src)&&r.get(s.src).push(t.get(s.dst));return r}i(ns,"neighborPositionsFor");function os(e,t,n){let o=n.get(e)??0,r=n.get(t)??0;return o!==r?o-r:e.localeCompare(t)}i(os,"currentOrderTieBreak");function tr(e,t,n){let o=new Set(e),r=new Set(t),s=It(e),c=It(t),f=[];for(let y of n)o.has(y.src)&&r.has(y.dst)&&f.push({u:s.get(y.src),v:c.get(y.dst)});f.sort((y,m)=>y.u===m.u?y.v-m.v:y.u-m.u);let g=f.map(y=>y.v);return on(g)}i(tr,"countCrossingsBetweenAdjacent");function Dn(e,t,n){return[...e].sort((o,r)=>{let s=Qo(t.get(o)??[]),c=Qo(t.get(r)??[]);return s===c?os(o,r,n):isFinite(s)?isFinite(c)?s-c:-1:1})}i(Dn,"sortByHeuristic");function nr(e,t,n,o,r,s){let c=It(e),f=It(t),g=ns(t,c,n,o);if(!r||!s||s.length===0)return Dn(t,g,f);let y=new Map;for(let N of t){let p=r(N),l=y.get(p)??[];l.push(N),y.set(p,l)}let m=[];for(let N of s){let p=y.get(N);if(!p||p.length===0)continue;let l=Dn(p,g,f);m.push(...l)}let u=y.get(null);if(u&&u.length>0){let N=Dn(u,g,f);for(let p of N){let l=er(g.get(p)??[]),a=m.length;if(isFinite(l))for(let[h,S]of m.entries()){let I=er(g.get(S)??[]);if(l<I){a=h;break}}m.splice(a,0,p)}}return m}i(nr,"reorderLayer");function or(e,t,n,o,r){let s=[...t],c=new Set(e),f=new Set(t),g=o?new Set(o):null,y=n.filter(a=>c.has(a.src)&&f.has(a.dst)),m=g?n.filter(a=>f.has(a.src)&&g.has(a.dst)):void 0,u=i(a=>{let h=tr(e,a,y);return m&&o&&(h+=tr(a,o,m)),h},"crossingScore"),N=r?new Map:null;if(r&&N)for(let a of t)N.set(a,r(a));let p=!0,l=u(s);for(;p;){p=!1;for(let a=0;a+1<s.length;a++){if(N){let I=N.get(s[a]),E=N.get(s[a+1]);if(I!==E)continue}let h=l;[s[a],s[a+1]]=[s[a+1],s[a]];let S=u(s);S<h?(l=S,p=!0):[s[a],s[a+1]]=[s[a+1],s[a]]}}return s}i(or,"transposeImprove");function rr(e,t,n){let o=e.layers.map(f=>[...f]),r=t.edges,s=Ye(t),c=sn(t,n?.laneOrder);for(let f=0;f<3;f++){for(let g=1;g<o.length;g++)o[g]=nr(o[g-1],o[g],r,"down",s,c),o[g]=or(o[g-1],o[g],r,o[g+1],s);for(let g=o.length-2;g>=0;g--)o[g]=nr(o[g+1],o[g],r,"up",s,c),o[g]=or(o[g+1],o[g],r,o[g-1],s)}return{layers:o}}i(rr,"orderLayers");function sr(e,t,n){let o=n?.layerGap??kn.DEFAULT_LAYER_GAP,r=n?.nodeGap??kn.DEFAULT_NODE_GAP,s=n?.laneGap??r*2,c=n?.direction??"TB",f=c==="LR"||c==="RL",g=e.layers,y=Object.create(null),m=Object.create(null),u=i(T=>t.nodeById.get(T),"getNode"),N=i(T=>u(T)?.width??0,"getWidth"),p=i(T=>u(T)?.height??0,"getHeight"),l=Ye(t),a=sn(t,n?.laneOrder),h=g.map(T=>T.reduce((D,_)=>Math.max(D,p(_)),0)),S=[];if(f)for(let T=0;T+1<g.length;T++){let D=g[T].reduce((he,Oe)=>Math.max(he,N(Oe)),0),_=g[T+1].reduce((he,Oe)=>Math.max(he,N(Oe)),0),v=h[T],z=h[T+1],Y=v/2+z/2,K=(D+_)/2,ae=Math.max(0,K-Y-o);S.push(ae)}let I=new Set;for(let T of g)for(let D of T)I.add(l(D));let E=I.has(null),A=a.filter(T=>I.has(T)),L=[...E?[null]:[],...A],b=Object.create(null);for(let T of A)b[T]=0;E&&(b.null=0);for(let T of g){let D=Object.create(null),_=[];for(let v of T){let z=l(v);z===null?_.push(v):(D[z]||=[]).push(v)}for(let[v,z]of Object.entries(D)){let Y=z.reduce((K,ae)=>K+N(ae),0)+r*Math.max(0,z.length-1);b[v]=Math.max(b[v]??0,Y)}if(E&&_.length){let v=_.reduce((z,Y)=>z+N(Y),0)+r*Math.max(0,_.length-1);b.null=Math.max(b.null??0,v)}}let P=new Map;{let T=L.map(v=>(v===null?b.null:b[v])??0),_=-(T.reduce((v,z)=>v+z,0)+s*Math.max(0,L.length-1))/2;for(let v=0;v<L.length;v++){let z=L[v],Y=T[v]??0,K=_+Y/2;P.set(z,K),_+=Y,v<L.length-1&&(_+=s)}}let O=0;for(let[T,D]of g.entries()){let _=h[T]??0,v=new Map;for(let Y of D){let K=l(Y),ae=v.get(K)??[];ae.push(Y),v.set(K,ae)}for(let Y of L){let K=v.get(Y)??[];if(K.length===0)continue;let ae=P.get(Y);if(K.length===1){let he=K[0];y[he]=ae,m[he]=O+_/2}else{let he=K.map(Q=>N(Q)),Oe=he.reduce((Q,W)=>Q+W,0)+r*(K.length-1),Be=ae-Oe/2;for(let[Q,W]of K.entries()){let te=he[Q];y[W]=Be+te/2,m[W]=O+_/2,Be+=te+r}}}let z=S[T]??0;O+=_+o+z}let B=new Map;for(let T of t.edges){let D=T.ref.id;B.has(D)||B.set(D,[]),B.get(D).push(T)}for(let[,T]of B){if(T.length===0)continue;let D=T[0].ref,_=D.start,v=D.end;if(_==null||v==null)continue;let z=Math.round(((y[_]??0)+(y[v]??0))/2),Y=new Set;for(let K of T)Y.add(K.src),Y.add(K.dst);for(let K of Y){if(K===_||K===v)continue;t.nodeById.get(K)?.isDummy&&(y[K]=z)}}return{x:y,y:m}}i(sr,"assignCoordinates");var Fn=8;function rs(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}i(rs,"hashString");function ss(e){let t=e>>>0;return()=>{t+=1831565813;let n=t;return n=Math.imul(n^n>>>15,n|1),n^=n+Math.imul(n^n>>>7,n|61),((n^n>>>14)>>>0)/4294967296}}i(ss,"mulberry32");function is(e,t){let n=[...e],o=ss(t);for(let r=n.length-1;r>0;r--){let s=Math.floor(o()*(r+1));[n[r],n[s]]=[n[s],n[r]]}return n}i(is,"deterministicShuffle");function as(e,t){let n=0;for(let[o,r]of e.entries())n+=Math.abs(o-(t.get(r)??o));return n}i(as,"sourceDistance");function ir(e,t){let n=new Map;for(let[r,s]of e.entries())n.set(s,r);let o=0;for(let{a:r,b:s,weight:c}of t){let f=n.get(r),g=n.get(s);f==null||g==null||(o+=c*Math.abs(f-g))}return o}i(ir,"laneArrangementCost");function cs(e){let t=rn(e);if(t.length<2)return[];let n=new Map(t.map((s,c)=>[s,c])),o=Ye(e),r=new Map;for(let s of e.layout.edges??[]){if(s.isLayoutOnly)continue;let c=typeof s.start=="string"?s.start:void 0,f=typeof s.end=="string"?s.end:void 0;if(!c||!f||!e.nodeById.has(c)||!e.nodeById.has(f))continue;let g=o(c),y=o(f);if(!g||!y||g===y)continue;let m=n.get(g),u=n.get(y);if(m==null||u==null)continue;let[N,p]=m<=u?[g,y]:[y,g],l=`${N}\0${p}`,a=r.get(l);a?a.weight++:r.set(l,{a:N,b:p,weight:1})}return[...r.values()]}i(cs,"buildWeightedLaneEdges");function ar(e,t,n){let o=[...e],r=ir(o,t),s=!0,c=0,f=Math.max(1,o.length);for(;s&&c<f;){s=!1,c++;for(let g=0;g+1<o.length;g++){[o[g],o[g+1]]=[o[g+1],o[g]];let y=ir(o,t);y<r?(r=y,s=!0):[o[g],o[g+1]]=[o[g+1],o[g]]}}return{order:o,cost:r,sourceDistance:as(o,n)}}i(ar,"greedySwitch");function ds(e,t){return e.cost!==t.cost?e.cost<t.cost:e.sourceDistance<t.sourceDistance}i(ds,"isBetterCandidate");function ls(e,t,n){let o=[...t].sort((r,s)=>r.a===s.a?r.b.localeCompare(s.b):r.a.localeCompare(s.a)).map(({a:r,b:s,weight:c})=>`${r}:${s}:${c}`).join("|");return rs(`${e.join("|")}#${o}#${n}`)}i(ls,"seedForRestart");function cr(e,t={}){let n=rn(e);if(n.length<2)return n;let o=cs(e);if(o.length===0)return n;let r=new Map(n.map((f,g)=>[f,g])),s=ar(n,o,r),c=Math.max(0,t.restarts??Fn);for(let f=0;f<c;f++){let g=ls(n,o,f),y=is(n,g),m=ar(y,o,r);ds(m,s)&&(s=m)}return s.order}i(cr,"optimizeTopLaneOrder");function dr(e,t){let n=t?.ignoreCrossLaneEdges??!0,o=t?.optimizeRanksByCrossings??!0,r=Qe(e),s=t?.automaticLaneOrdering?cr(r,{restarts:Fn}):void 0,c=Go(r),f=c.acyclic,g=n?Zo(f,{compactSingleInput:t?.compactSingleInput??Mt.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:t?.direction}):qo(f,{compactSingleInput:t?.compactSingleInput??Mt.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:o}),{layering:y,graphWithDummies:m}=Jo(g,f),u=rr(y,m,{laneOrder:s}),N=sr(u,m,{layerGap:t?.layerGap,nodeGap:t?.nodeGap,direction:t?.direction,laneOrder:s});return{acyclic:f,reversed:c.reversed,layering:y,ordered:u,coordinates:N}}i(dr,"sugiyamaLayout");var ce=zo.EPSILON,fs=8,Lt=15,wt=15,an=25,st=20,Gn=10;function lr(e,t,n){let o=e.x??0,r=e.y??0,s=t.x-o,c=t.y-r,f=Math.abs(s),g=Math.abs(c);return f<ce&&g<ce?n:g>ce&&g*3>=f?c>0?"bottom":"top":f>ce?s>0?"right":"left":n}i(lr,"chooseOrthogonalSide");function fr(e,t){return Math.abs(e.to-t.from)<ce||Math.abs(e.to-t.to)<ce?e.to:e.from}i(fr,"sharedLineEndpointCoord");function At(e,t){return e.orient==="vertical"?{x:e.coord,y:t}:{x:t,y:e.coord}}i(At,"pointOnLine");function ur(e,t){let n=e.nodes??[],o=e.edges??[],r=[];for(let d of o)d.isLayoutOnly||r.push({...d,__originalEdge:d});let s=new Map,c=new Map,f=[],g=t==="LR";for(let d of n)s.set(d.id,d);let y=n.filter(d=>d.isGroup&&!d.parentId);for(let d of y){let x={id:d.id},M=i(R=>{c.set(R.id,x),n.filter(C=>C.parentId===R.id).forEach(M)},"assignLane");M(d)}let m=n.filter(d=>!d.isGroup&&!d.isEdgeLabel).map(d=>{let x=d.width??10,M=d.height??10,R=d.x??0,C=d.y??0,k=fs;return{nodeId:d.id,minX:R-x/2-k,maxX:R+x/2+k,minY:C-M/2-k,maxY:C+M/2+k,visualXHalfExtent:g?M/2+k:x/2+k}}),u=i((d,x,M,R)=>{let C=f.find(k=>k.orientation===d&&Math.abs(k.coord-x)<1);return C||(C={id:`pipe-${d}-${x.toFixed(0)}`,orientation:d,coord:x,spanMin:M,spanMax:R,tracks:[]},f.push(C)),C.spanMin=Math.min(C.spanMin,M),C.spanMax=Math.max(C.spanMax,R),C},"getOrAddPipe"),N=i((d,x)=>{let M=d.width??10,R=d.height??10,C=d.x??0,k=d.y??0;switch(x){case"top":return{x:C,y:k-R/2};case"bottom":return{x:C,y:k+R/2};case"left":return{x:C-M/2,y:k};case"right":return{x:C+M/2,y:k}}},"portForSide"),p=i((d,x,M)=>N(d,lr(d,x,M?"bottom":"top")),"getOrthogonalPort"),l=[],a=[],h=new Set,S=1e3,I=i((d,x,M)=>{if(l.length===0)return 0;let R=Math.abs(x.y-M.y)<ce,C=Math.abs(x.x-M.x)<ce;if(!R&&!C)return 0;let k=0;if(R){let U=x.y,Z=Math.min(x.x,M.x)-ce,$=Math.max(x.x,M.x)+ce;if($<=Z)return 0;for(let X of l)X.edgeIndex===d||X.orientation!=="vertical"||X.pipe.coord<Z||X.pipe.coord>$||X.from-ce<=U&&X.to+ce>=U&&(k+=S)}else if(C){let U=x.x,Z=Math.min(x.y,M.y)-ce,$=Math.max(x.y,M.y)+ce;if($<=Z)return 0;for(let X of l)X.edgeIndex===d||X.orientation!=="horizontal"||X.pipe.coord<Z||X.pipe.coord>$||X.from-ce<=U&&X.to+ce>=U&&(k+=S)}return k},"crossingPenalty"),E=r.map((d,x)=>{if(!d.start||!d.end)return{idx:x,crossLane:0,dx:0,dy:0};let M=s.get(d.start),R=s.get(d.end),C=c.get(d.start),k=c.get(d.end),U=C&&k&&C.id!==k.id?1:0,Z=M&&R?Math.abs((R.x??0)-(M.x??0)):0,$=M&&R?Math.abs((R.y??0)-(M.y??0)):0;return{idx:x,crossLane:U,dx:Z,dy:$}}).sort((d,x)=>{if(d.crossLane!==x.crossLane)return x.crossLane-d.crossLane;let M=d.dx+d.dy,R=x.dx+x.dy;return Math.abs(M-R)>1?M-R:d.idx-x.idx}).map(d=>d.idx),A=i((d,x,M,R)=>{let C=Math.min(d.x,x.x),k=Math.max(d.x,x.x),U=Math.min(d.y,x.y),Z=Math.max(d.y,x.y);return!!m.find(X=>M&&X.nodeId===M||R&&X.nodeId===R?!1:Math.abs(d.x-x.x)>ce?X.minY<d.y&&X.maxY>d.y&&X.maxX>C&&X.minX<k:X.minX<d.x&&X.maxX>d.x&&X.maxY>U&&X.minY<Z)},"isSegmentBlocked"),L=new Map,b=new Map;for(let d of r)!d.start||!d.end||d.start===d.end||(b.set(d.start,(b.get(d.start)??0)+1),b.set(d.end,(b.get(d.end)??0)+1));let P=i((d,x)=>lr(d,x,"bottom"),"determineSide"),O=new Map;for(let[d,x]of r.entries()){if(!x.start||!x.end||x.start===x.end||x.points&&x.points.length>0)continue;let M=s.get(x.start),R=s.get(x.end);if(!M||!R)continue;let C=(R.x??0)-(M.x??0),k=(R.y??0)-(M.y??0);O.set(d,{edgeIdx:d,srcId:x.start,dstId:x.end,srcSide:P(M,{x:R.x??0,y:R.y??0}),dstSide:P(R,{x:M.x??0,y:M.y??0}),absDx:Math.abs(C),absDy:Math.abs(k),dxSign:Math.sign(C),dySign:Math.sign(k)})}let B=i(d=>d.srcSide==="top"||d.srcSide==="bottom"?d.absDx===0?1/0:d.absDy/d.absDx:d.absDy===0?1/0:d.absDx/d.absDy,"preferenceStrength"),T=i(d=>d.srcSide==="top"||d.srcSide==="bottom"?d.dxSign>=0?"right":"left":d.dySign>=0?"bottom":"top","secondarySide"),D=new Map;for(let d of O.values()){let x=`${d.srcId}:${d.srcSide}`;D.has(x)||D.set(x,[]),D.get(x).push(d)}let _=new Map,v=i((d,x)=>`${d}:${x}`,"loadKey");for(let d of O.values())_.set(v(d.srcId,d.srcSide),(_.get(v(d.srcId,d.srcSide))??0)+1),_.set(v(d.dstId,d.dstSide),(_.get(v(d.dstId,d.dstSide))??0)+1);for(let d of D.values())if(!(d.length<2)){d.sort((x,M)=>{let R=B(x),C=B(M);return Math.abs(R-C)>1e-9?C-R:x.edgeIdx-M.edgeIdx});for(let x=1;x<d.length;x++){let M=d[x],R=T(M),C=_.get(v(M.srcId,M.srcSide))??0,k=_.get(v(M.srcId,R))??0;k>=C||(_.set(v(M.srcId,M.srcSide),C-1),_.set(v(M.srcId,R),k+1),M.srcSide=R)}}let z=i(d=>{let x=d?.shape;return x==="question"||x==="diamond"},"isDiamondNode"),Y=new Map;for(let d of O.values())Y.has(d.dstId)||Y.set(d.dstId,new Set),Y.get(d.dstId).add(d.dstSide);for(let d of O.values()){if(!z(s.get(d.srcId)))continue;let x=Y.get(d.srcId);if(!x?.has(d.srcSide))continue;let M=T(d);if(x.has(M)||(_.get(v(d.srcId,M))??0)>0)continue;let R=_.get(v(d.srcId,d.srcSide))??0;_.set(v(d.srcId,d.srcSide),Math.max(0,R-1)),_.set(v(d.srcId,M),1),d.srcSide=M}for(let d of O.values()){let{edgeIdx:x,srcId:M,dstId:R,srcSide:C,dstSide:k}=d,U=s.get(M),Z=s.get(R),$=`${M}:${C}:src`,X=C==="top"||C==="bottom"?Z.x??0:Z.y??0;L.has($)||L.set($,[]),L.get($).push({edgeIdx:x,oppositeCoord:X});let oe=`${R}:${k}:dst`,se=k==="top"||k==="bottom"?U.x??0:U.y??0;L.has(oe)||L.set(oe,[]),L.get(oe).push({edgeIdx:x,oppositeCoord:se})}let K=new Map,ae=8;for(let[d,x]of L){if(x.length<2)continue;x.sort((Ce,Fe)=>Ce.oppositeCoord-Fe.oppositeCoord);let M=d.split(":"),R=M.slice(0,-2).join(":"),C=M[M.length-2],k=M[M.length-1],U=s.get(R);if(!U)continue;let $=C==="left"||C==="right"?U.height??10:U.width??10,X=U.shape,se=X==="question"||X==="diamond"?$*.3:$,ee=Math.min(20,Math.max(ae,se/(x.length+1))),we=-(ee*(x.length-1))/2;for(let[Ce,Fe]of x.entries()){let et=we+Ce*ee,fn=`${Fe.edgeIdx}:${k}`;K.set(fn,et)}}let he=i(d=>!!r[d]?.labelNodeId,"edgeHasLabelNode"),Oe=i((d,x)=>d?(L.get(`${d}:${x}:src`)??[]).some(({edgeIdx:M})=>he(M))||(L.get(`${d}:${x}:dst`)??[]).some(({edgeIdx:M})=>he(M)):!1,"faceHasLabelNode"),Be=i((d,x,M)=>x==="top"||x==="bottom"?{x:d.x+M,y:d.y}:{x:d.x,y:d.y+M},"applyPortOffset"),Q=i((d,x,M)=>{let R=O.get(d),C={x:M.x??0,y:M.y??0},k={x:x.x??0,y:x.y??0},U=R?.srcSide??P(x,C),Z=R?.dstSide??P(M,k),$=R?N(x,R.srcSide):p(x,C,!0),X=R?N(M,R.dstSide):p(M,k,!1),oe=K.get(`${d}:src`),se=K.get(`${d}:dst`);return oe!==void 0&&($=Be($,U,oe)),se!==void 0&&(X=Be(X,Z,se)),{pSrcPort:$,pDstPort:X,srcSide:U,dstSide:Z}},"portsForEdge");for(let d of E){let x=r[d];if(a[d]=[],!x.start||!x.end||x.points&&x.points.length>0||x.start===x.end)continue;let M=s.get(x.start),R=s.get(x.end);if(!M||!R)continue;let{pSrcPort:C,pDstPort:k,srcSide:U,dstSide:Z}=Q(d,M,R),$={...C},X={...k},oe=U==="top"||U==="bottom",se=Z==="top"||Z==="bottom";if(oe){let H=C.y>(M.y??0);$.y=H?C.y+st:C.y-st}else{let H=C.x>(M.x??0);$.x=H?C.x+st:C.x-st}if(se){let H=k.y>(R.y??0);X.y=H?k.y+st:k.y-st}else{let H=k.x>(R.x??0);X.x=H?k.x+st:k.x-st}let re=i((H,j)=>{for(let q of m)if(!j.includes(q.nodeId)&&H.x>q.minX&&H.x<q.maxX&&H.y>q.minY&&H.y<q.maxY)return{inside:!0,obstacle:q};return{inside:!1}},"isPointInObstacle"),ee=i((H,j,q,ge,Se)=>{if(Se){let Ae=H.y>(j.y??0);return{x:(q.x??0)>=H.x?ge.maxX+Lt:ge.minX-Lt,y:Ae?ge.maxY+wt:ge.minY-wt,leavesPositiveSide:Ae}}let be=H.x>(j.x??0),Te=(q.y??0)>=H.y;return{x:be?ge.maxX+Lt:ge.minX-Lt,y:Te?ge.maxY+wt:ge.minY-wt,leavesPositiveSide:be}},"obstacleDetour"),ye=[],we=[x.start,x.end],Ce=re($,we);if(Ce.inside&&Ce.obstacle){let H=Ce.obstacle;if(oe){let j=ee(C,M,R,H,!0);$.x=j.x,$.y=j.y;let q=j.leavesPositiveSide?Math.min(H.minY-2,C.y+st):Math.max(H.maxY+2,C.y-st);ye=[{x:C.x,y:q},{x:j.x,y:q},{x:j.x,y:j.y}]}else{let j=ee(C,M,R,H,!1),q=j.leavesPositiveSide?Math.min(H.minX-2,C.x+st):Math.max(H.maxX+2,C.x-st);$.x=j.x,$.y=j.y,ye=[{x:q,y:C.y},{x:q,y:j.y},{x:j.x,y:j.y}]}}let Fe=[],et=re(X,we);if(et.inside&&et.obstacle){let H=et.obstacle;if(se){let j=ee(k,R,M,H,!0);X.x=j.x,X.y=j.y,Fe=[{x:j.x,y:j.y},{x:k.x,y:j.y}]}else{let j=ee(k,R,M,H,!1);X.x=j.x,X.y=j.y,Fe=[{x:j.x,y:j.y},{x:j.x,y:k.y}]}}if(ye.length===0&&Fe.length===0){let H=Lt,j=Math.abs($.x-X.x)<H,q=Math.abs($.y-X.y)<H,ge=K.get(`${d}:src`)!==void 0||K.get(`${d}:dst`)!==void 0,Se=(L.get(`${x.start??""}:${U}:src`)?.length??0)+(L.get(`${x.start??""}:${U}:dst`)?.length??0),be=(L.get(`${x.end??""}:${Z}:src`)?.length??0)+(L.get(`${x.end??""}:${Z}:dst`)?.length??0),Te=Se>1||be>1,Ae=b.get(x.start??"")??0,me=b.get(x.end??"")??0,He=Se>1&&Oe(x.start,U)||be>1&&Oe(x.end,Z),ot=Se<=1||Ae<=2,ke=be<=1||me<=2;if((j||q)&&!ge&&(!Te||Te&&!He&&ot&&ke)&&!A(C,k,x.start,x.end)){x.points=[{...C},{...$},{...X},{...k}],h.add(d);let Ie=q?"horizontal":"vertical",$e=q?C.y:C.x,Me=q?Math.min(C.x,k.x):Math.min(C.y,k.y),Ne=q?Math.max(C.x,k.x):Math.max(C.y,k.y),Ke={id:`fast-path-${Ie}-${$e.toFixed(0)}-${d}`,orientation:Ie,coord:$e,spanMin:Me,spanMax:Ne,tracks:[]};l.push({edgeIndex:d,segmentIndex:0,orientation:Ie,pipe:Ke,trackIndex:0,from:Me,to:Ne});continue}}let fn=u("vertical",$.x,$.y,$.y);$.x=fn.coord;let mr=u("vertical",X.x,X.y,X.y);X.x=mr.coord;let ut=Math.min($.x,X.x)-50,gt=Math.max($.x,X.x)+50,Rt=Math.min($.y,X.y)-50,Et=Math.max($.y,X.y)+50;for(let H of m){let j=Math.min($.x,X.x),q=Math.max($.x,X.x),ge=Math.min($.y,X.y),Se=Math.max($.y,X.y);H.minX<q&&H.maxX>j&&H.minY<Se&&H.maxY>ge&&(ut=Math.min(ut,H.minX-an),gt=Math.max(gt,H.maxX+an),Rt=Math.min(Rt,H.minY-an),Et=Math.max(Et,H.maxY+an))}for(let H of m){if(H.maxX<ut||H.minX>gt||H.maxY<Rt||H.minY>Et)continue;let j=Lt;u("horizontal",H.minY-j,ut,gt),u("horizontal",H.maxY+j,ut,gt);let q=wt;u("vertical",H.minX-q,Rt,Et),u("vertical",H.maxX+q,Rt,Et)}u("horizontal",$.y,ut,gt),u("horizontal",X.y,ut,gt);let pr=f.filter(H=>H.orientation==="horizontal"&&H.coord>=Rt&&H.coord<=Et),hr=f.filter(H=>H.orientation==="vertical"&&H.coord>=ut&&H.coord<=gt),Gt=i((H,j)=>`${H.toFixed(1)},${j.toFixed(1)}`,"getKey"),zt=Gt($.x,$.y),zn=Gt(X.x,X.y),Ht=new Map,un=new Map,gn=new Map,Xt=new Set,bt=[];Ht.set(zt,0),gn.set(zt,"n"),bt.push({key:zt,f:Math.hypot(X.x-$.x,X.y-$.y),pt:$}),Xt.add(zt);let Ge=[],mt=i((H,j)=>A(H,j,x.start,x.end),"checkSegmentBlocked"),mn={x:X.x,y:$.y},yr=mt($,mn),xr=mt(mn,X),br=yr||xr,pn={x:$.x,y:X.y},Ir=mt($,pn),Mr=mt(pn,X);if(br?Ir||Mr||(Math.abs($.x-X.x)<ce?Ge=[$,X]:Ge=[$,pn,X]):Math.abs($.y-X.y)<ce||Math.abs($.x-X.x)<ce?Ge=[$,X]:Ge=[$,mn,X],Ge.length===0)for(;bt.length>0;){bt.sort((me,He)=>me.f-He.f);let H=bt.shift();if(Xt.delete(H.key),H.key===zn){let me=zn,He=X;for(Ge=[He];un.has(me);){let ot=un.get(me);Ge.unshift(ot),He=ot,me=Gt(ot.x,ot.y)}break}let j=H.pt.x,q=H.pt.y,ge=hr.sort((me,He)=>me.coord-He.coord),Se=ge.findIndex(me=>Math.abs(me.coord-j)<1),be=pr.sort((me,He)=>me.coord-He.coord),Te=be.findIndex(me=>Math.abs(me.coord-q)<1),Ae=[];Se>0&&Ae.push({x:ge[Se-1].coord,y:q}),Se>=0&&Se<ge.length-1&&Ae.push({x:ge[Se+1].coord,y:q}),Te>0&&Ae.push({x:j,y:be[Te-1].coord}),Te>=0&&Te<be.length-1&&Ae.push({x:j,y:be[Te+1].coord});for(let me of Ae){let He=Math.min(j,me.x),ot=Math.max(j,me.x),ke=Math.min(q,me.y),je=Math.max(q,me.y);if(m.some(tt=>tt.nodeId===x.start||tt.nodeId===x.end?!1:He!==ot?tt.minY<q&&tt.maxY>q&&tt.maxX>He&&tt.minX<ot:tt.minX<j&&tt.maxX>j&&tt.maxY>ke&&tt.minY<je))continue;let Ie=Gt(me.x,me.y),$e=Math.abs(me.x-j)+Math.abs(me.y-q),Me=I(d,H.pt,me),Ne=0,Ke=X.x-$.x,Pt=X.y-$.y,Yt=me.x-j,hn=me.y-q;(Pt>10&&hn<-5||Pt<-10&&hn>5)&&(Ne=Math.abs(hn)*100),(Ke>10&&Yt<-5||Ke<-10&&Yt>5)&&(Ne+=Math.abs(Yt)*50);let Hn=0,Xn=gn.get(H.key)??"n",Yn=Math.abs(Yt)>ce?"h":"v";Xn!=="n"&&Xn!==Yn&&(Hn=50);let Lr=$e+Me+Ne+Hn,jt=(Ht.get(H.key)??1/0)+Lr,jn=Math.abs(X.x-me.x)+Math.abs(X.y-me.y);if(jt<(Ht.get(Ie)??1/0))if(un.set(Ie,H.pt),Ht.set(Ie,jt),gn.set(Ie,Yn),!Xt.has(Ie))bt.push({key:Ie,f:jt+jn,pt:me}),Xt.add(Ie);else{let tt=bt.findIndex(Nr=>Nr.key===Ie);tt!==-1&&(bt[tt].f=jt+jn)}}}if(Ge.length===0&&(Ge=[$,{x:$.x,y:X.y},X]),Ge.length>4){let H=Ge[0],j=Ge[Ge.length-1],q=Math.min(H.x,j.x),ge=Math.max(H.x,j.x),Se=Math.min(H.y,j.y),be=Math.max(H.y,j.y);for(let ke of Ge)q=Math.min(q,ke.x),ge=Math.max(ge,ke.x),Se=Math.min(Se,ke.y),be=Math.max(be,ke.y);let Te=ge>Math.max(H.x,j.x),Ae=q<Math.min(H.x,j.x);if(g){let ke=wt;if(Te){let je=Math.max(H.x,j.x),ve=Math.min(H.y,j.y),Ie=Math.max(H.y,j.y),$e=m.filter(Me=>Me.minX<je&&Me.maxX>je&&Me.minY<Ie&&Me.maxY>ve);if($e.length>0){let Me=Math.max(H.x,j.x);for(let Ne of $e){let Ke=(Ne.minX+Ne.maxX)/2;if(Ne.visualXHalfExtent===void 0||isNaN(Ne.visualXHalfExtent))continue;let Pt=Ke+Ne.visualXHalfExtent+ke;Me=Math.max(Me,Pt)}isNaN(Me)||(ge=Me)}}if(Ae){let je=m.filter(ve=>ve.minX<Math.min(H.x,j.x)+ke&&ve.minY<Math.max(H.y,j.y)&&ve.maxY>Math.min(H.y,j.y));if(je.length>0){let ve=Math.min(H.x,j.x);for(let Ie of je){let Me=(Ie.minX+Ie.maxX)/2-Ie.visualXHalfExtent-ke;ve=Math.min(ve,Me)}q=ve}}}let me=i(ke=>{let je=j.y>H.y,ve=m.filter(Me=>{let Ne=Math.min(H.x,j.x)<Me.maxX&&Math.max(H.x,j.x)>Me.minX,Ke=Math.min(H.y,j.y)<Me.maxY&&Math.max(H.y,j.y)>Me.minY;return Ne&&Ke}),Ie=ve;if(g&&ve.length>0){let Me=ve.filter(Ne=>Ne.minX<ke&&Ne.maxX>ke);Me.length>0&&(Ie=Me)}if(Ie.length===0)return j.y;let $e=Lt;if(je){let Ne=Math.max(...Ie.map(Ke=>Ke.maxY))+$e;if(Ne<j.y-ce)return Ne}else{let Ne=Math.min(...Ie.map(Ke=>Ke.minY))-$e;if(Ne>j.y+ce)return Ne}return j.y},"findBestReturnY"),He=i(ke=>{let je=me(ke),ve={x:ke,y:H.y},Ie={x:ke,y:je},$e={x:j.x,y:je},Me=mt(H,ve),Ne=mt(ve,Ie),Ke=mt(Ie,$e),Pt=je!==j.y?mt($e,j):!1;return!Me&&!Ne&&!Ke&&!Pt?Math.abs(je-j.y)<ce?[H,ve,Ie,j]:[H,ve,Ie,$e,j]:null},"trySimplifyWithDetourX"),ot=Te&&!Ae?He(ge):Ae&&!Te?He(q):null;ot&&(Ge=ot)}let ze=[C,...ye,...Ge,...Fe.reverse(),k];if(ze.length>=3){let H=ze[ze.length-1],j=ze[ze.length-2],q=ze[ze.length-3],ge=Math.abs(q.y-j.y)<ce&&Math.abs(j.y-H.y)<ce,Se=Math.abs(q.x-j.x)<ce&&Math.abs(j.x-H.x)<ce;if(ge){let be=Math.sign(j.x-q.x),Te=Math.sign(H.x-q.x);be!==0&&be===Te&&Math.abs(j.x-q.x)>Math.abs(H.x-q.x)&&ze.splice(-2,1)}else if(Se){let be=Math.sign(j.y-q.y),Te=Math.sign(H.y-q.y);be!==0&&be===Te&&Math.abs(j.y-q.y)>Math.abs(H.y-q.y)&&ze.splice(-2,1)}}let dt=[ze[0]];for(let H=1;H<ze.length-1;H++){if(H===1){dt.push(ze[H]);continue}let j=dt[dt.length-1],q=ze[H],ge=ze[H+1];if(Math.abs(j.y-q.y)<ce&&Math.abs(q.y-ge.y)<ce){let Se=q.x>j.x,be=ge.x>q.x;if(Se!==be){dt.push(q);continue}continue}if(Math.abs(j.x-q.x)<ce&&Math.abs(q.x-ge.x)<ce){let Se=q.y>j.y,be=ge.y>q.y;if(Se!==be){dt.push(q);continue}continue}dt.push(q)}dt.push(ze[ze.length-1]);for(let H=0;H<dt.length-1;H++){let j=dt[H],q=dt[H+1],ge=Math.abs(j.x-q.x)<ce?"vertical":"horizontal",Se=ge==="vertical"?j.x:j.y,be=ge==="vertical"?Math.min(j.y,q.y):Math.min(j.x,q.x),Te=ge==="vertical"?Math.max(j.y,q.y):Math.max(j.x,q.x),Ae=u(ge,Se,be,Te),me={edgeIndex:d,segmentIndex:H,orientation:ge,pipe:Ae,trackIndex:0,from:be,to:Te};l.push(me),a[d].push(l.length-1),Ae.tracks[0]||(Ae.tracks[0]={index:0,coord:Ae.coord,segments:[]}),Ae.tracks[0].segments.push({edgeIndex:d,segmentIndex:H,from:be,to:Te})}}let W=i((d,x)=>d.from<x.to&&x.from<d.to,"segmentsOverlap"),te=i((d,x,M,R)=>{let C=!R.segments.some(U=>(U.edgeIndex!==x.edgeIndex||U.segmentIndex!==x.segmentIndex)&&W(U,d)),k=!M.segments.some(U=>(U.edgeIndex!==d.edgeIndex||U.segmentIndex!==d.segmentIndex)&&W(U,x));return C&&k?(d.trackIndex=R.index,x.trackIndex=M.index,M.segments=[...M.segments.filter(U=>U.edgeIndex!==d.edgeIndex||U.segmentIndex!==d.segmentIndex),{edgeIndex:x.edgeIndex,segmentIndex:x.segmentIndex,from:x.from,to:x.to}],R.segments=[...R.segments.filter(U=>U.edgeIndex!==x.edgeIndex||U.segmentIndex!==x.segmentIndex),{edgeIndex:d.edgeIndex,segmentIndex:d.segmentIndex,from:d.from,to:d.to}],!0):!1},"trySwapSegmentsAcrossTracks"),fe=i(d=>{let x=d.tracks.length;return d.tracks[x]={index:x,coord:d.coord,segments:[]},x},"createNewTrack"),pe=i((d,x)=>{let M=d.pipe.tracks[d.trackIndex];M.segments=M.segments.filter(C=>C.edgeIndex!==d.edgeIndex||C.segmentIndex!==d.segmentIndex),d.trackIndex=x,d.pipe.tracks[x].segments.push({edgeIndex:d.edgeIndex,segmentIndex:d.segmentIndex,from:d.from,to:d.to})},"moveSegmentToTrack"),xe=i((d,x)=>{let M=a[d.edgeIndex];for(let R of M){let C=l[R];C.pipe===d.pipe&&pe(C,x)}},"moveSegmentChainToTrack"),Re=i(d=>{let x=a[d.edgeIndex],M=x.indexOf(l.indexOf(d)),R=[];return M>0&&R.push(l[x[M-1]]),M<x.length-1&&R.push(l[x[M+1]]),R},"getAdjacentSegmentsAlongEdge"),Ve=i((d,x)=>{if(d.orientation===x.orientation)return!1;let M=d.orientation==="horizontal"?d:x,R=d.orientation==="horizontal"?x:d;return R.pipe.coord>M.from&&R.pipe.coord<M.to&&M.pipe.coord>R.from&&M.pipe.coord<R.to},"haveAnyCrossing"),Ue=i((d,x)=>{for(let M of d.tracks)if(!M.segments.some(C=>(C.edgeIndex!==x.edgeIndex||C.segmentIndex!==x.segmentIndex)&&W(C,x)))return M.index;return-1},"findAvailableTrack"),We=i((d,x)=>{if(d.trackIndex===x.trackIndex)return W(d,x);let M=Re(d),R=Re(x);return M.some(C=>R.some(k=>Ve(C,k)))},"segmentsConflict"),nt=i((d,x,M)=>{if(te(d,x,d.pipe.tracks[d.trackIndex],x.pipe.tracks[x.trackIndex]))return;let R=Ue(d.pipe,x);M(x,R!==-1?R:fe(d.pipe))},"resolveTrackConflict"),Nt=i(d=>{let x=0;for(let M=0;M<d.length;M++)for(let R=M+1;R<d.length;R++){let C=d[M],k=d[R];C.pipe===k.pipe&&We(C,k)&&(x++,nt(C,k,xe))}return x},"resolveHandleConflicts"),ft=new Map,St=i(d=>{if(ft.has(d))return ft.get(d);let x=a[d];if(x.length===0){let Z={dest:0,deviation:0,base:0,delta:0};return ft.set(d,Z),Z}let R=l[x[0]].pipe.coord,C=R;for(let Z=1;Z<x.length;Z++){let $=l[x[Z]];if($.orientation==="horizontal"){let X=$.from,oe=$.to;C=Math.abs(X-R)>Math.abs(oe-R)?X:oe;break}}let k=Math.abs(C-R),U={dest:C,deviation:k,base:R,delta:C-R};return ft.set(d,U),U},"getDestInfo"),cn=i(()=>{let d=0,x=new Map;for(let[R,C]of r.entries())a[R].length!==0&&C.start&&(x.has(C.start)||x.set(C.start,[]),x.get(C.start).push(R));let M=i(R=>{let C=r[R];if(!C.start||!C.end)return 0;let k=s.get(C.start),U=s.get(C.end);if(!k||!U)return 0;let Z=(U.x??0)-(k.x??0),$=(U.y??0)-(k.y??0);return Math.abs(Z)+Math.abs($)},"getEdgeDistance");for(let R of x.values()){R.sort((k,U)=>{let Z=St(k),$=St(U);if(Math.abs(Z.deviation-$.deviation)>1)return Z.deviation-$.deviation;if(Math.abs(Z.dest-$.dest)>1)return Z.dest-$.dest;let X=M(k),oe=M(U);if(Math.abs(X-oe)>1)return oe-X;let se=a[k].length,re=a[U].length;if(se!==re)return se-re;if(se===1){let ee=a[k][0],ye=a[U][0];if(l[ee]&&l[ye]){let we=l[ee],Ce=l[ye],Fe=Math.abs(we.to-we.from),et=Math.abs(Ce.to-Ce.from);if(Math.abs(Fe-et)>1)return Fe-et}}return 0});let C=R.map(k=>l[a[k][0]]);d+=Nt(C)}return d},"fixSourceHandleCrossings"),dn=i(()=>{let d=0,x=new Map;for(let[M,R]of r.entries())a[M].length!==0&&R.end&&(x.has(R.end)||x.set(R.end,[]),x.get(R.end).push(M));for(let M of x.values()){M.sort((C,k)=>{let U=i(X=>{let oe=a[X];if(oe.length<2)return 0;let se=l[oe[oe.length-2]];return Math.abs(se.to-se.from)},"getDist"),Z=U(C),$=U(k);return Math.abs(Z-$)>.1?Z-$:C-k});let R=M.map(C=>l[a[C][a[C].length-1]]);d+=Nt(R)}return d},"fixTargetHandleCrossings"),ln=i(()=>{let d=0;for(let x of f){let M=[];for(let R of x.tracks)for(let C of R.segments){let k=a[C.edgeIndex].find(U=>l[U].segmentIndex===C.segmentIndex);k!==void 0&&M.push(l[k])}M.sort((R,C)=>R.edgeIndex-C.edgeIndex||R.segmentIndex-C.segmentIndex);for(let R=0;R<M.length;R++)for(let C=R+1;C<M.length;C++){let k=M[R],U=M[C];We(k,U)&&(d++,nt(k,U,pe))}}return d},"fixPipeCrossings"),w=0,F=10;for(;w<F;){let d=0;if(d+=cn(),d+=dn(),d+=ln(),d===0)break;w++}let G=new Map;for(let d of f){let x=[];d.tracks.forEach(R=>{R.segments.forEach(C=>{x.push({edgeIndex:C.edgeIndex,segmentIndex:C.segmentIndex,trackIndex:R.index,from:C.from,to:C.to})})}),x.sort((R,C)=>R.from-C.from);let M=[];if(x.length>0){let R=[x[0]],C=x[0].to;for(let k=1;k<x.length;k++){let U=x[k];U.from<C?(R.push(U),C=Math.max(C,U.to)):(M.push(R),R=[U],C=U.to)}M.push(R)}for(let R of M){let C=new Set;R.forEach(ee=>C.add(ee.trackIndex));let k=new Map;R.forEach(ee=>{let ye=St(ee.edgeIndex);k.set(ee.trackIndex,(k.get(ee.trackIndex)??0)+ye.delta)});let U=[...C].filter(ee=>(k.get(ee)??0)<-1),Z=[...C].filter(ee=>(k.get(ee)??0)>1),$=[...C].filter(ee=>Math.abs(k.get(ee)??0)<=1);U.sort((ee,ye)=>(k.get(ye)??0)-(k.get(ee)??0)),Z.sort((ee,ye)=>(k.get(ee)??0)-(k.get(ye)??0));let X=i((ee,ye)=>{R.filter(we=>we.trackIndex===ee).forEach(we=>{let Ce=h.has(we.edgeIndex)?d.coord:ye;G.set(`${we.edgeIndex}-${we.segmentIndex}`,Ce)})},"assignCoord"),oe=0;for(let ee of U)oe++,X(ee,d.coord-oe*Gn);if($.length===0&&C.size>0){let ee=[...C].sort((Ce,Fe)=>Math.abs(k.get(Ce)??0)-Math.abs(k.get(Fe)??0))[0],ye=U.indexOf(ee);ye!==-1&&U.splice(ye,1);let we=Z.indexOf(ee);we!==-1&&Z.splice(we,1),$.push(ee)}let se=0;for(let ee of $){if(se===0)X(ee,d.coord);else{let ye=se%2===1?1:-1,we=Math.ceil(se/2);X(ee,d.coord+ye*we*Gn*.5)}se++}let re=0;for(let ee of Z)re++,X(ee,d.coord+re*Gn)}}for(let[d,x]of r.entries()){let M=a[d]??[];if(M.length===0)continue;let R=[],C=s.get(x.start),k=s.get(x.end),{pSrcPort:U,pDstPort:Z}=Q(d,C,k),$=M.map(se=>{let re=l[se],ee=G.get(`${re.edgeIndex}-${re.segmentIndex}`)??re.pipe.coord;return{orient:re.orientation,coord:ee,from:re.from,to:re.to}});R.push(U);for(let se=0;se<$.length;se++){let re=$[se],ee=R[R.length-1],ye=re.orient==="vertical"?ee.y:ee.x,we=re.orient==="vertical"?ee.x:ee.y,Ce=$[se+1],Fe=se<$.length-1;if(Math.abs(we-re.coord)>ce&&R.push(At(re,ye)),Fe&&Ce.orient===re.orient)if(Math.abs(re.coord-Ce.coord)>ce){let et=re.orient==="vertical"?(ye+Ce.from)/2:fr(re,Ce);R.push(At(re,et),At(Ce,et))}else(se===0||se===$.length-2)&&R.push(At(re,fr(re,Ce)));else if(Fe)R.push(At(re,Ce.coord));else{let et=Math.abs(re.from-ye)<Math.abs(re.to-ye)?re.to:re.from;R.push(At(re,et))}}let X=R[R.length-1];(Math.abs(X.x-Z.x)>ce||Math.abs(X.y-Z.y)>ce)&&R.push(Z);let oe=[];R.length>0&&oe.push(R[0]);for(let se=1;se<R.length;se++){let re=R[se],ee=oe[oe.length-1];(Math.abs(re.x-ee.x)>ce||Math.abs(re.y-ee.y)>ce)&&oe.push(re)}x.points=oe}for(let d of r){let x=d.__originalEdge;x&&d.points&&(x.points=d.points)}e.edges=(e.edges??[]).filter(d=>!d.isLayoutOnly);let V=i((d,x)=>{let M=x.x??0,R=x.y??0,C=x.width??0,k=x.height??0;if(C<=0||k<=0)return d;let U=M-C/2,Z=M+C/2,$=R-k/2,X=R+k/2;if(d.x<U||d.x>Z||d.y<$||d.y>X)return d;let oe=d.x-U,se=Z-d.x,re=d.y-$,ee=X-d.y,ye=Math.min(oe,se,re,ee);return ye===oe?{x:U,y:d.y}:ye===se?{x:Z,y:d.y}:ye===re?{x:d.x,y:$}:{x:d.x,y:X}},"nodeBoundaryClamp");for(let d of e.edges){let x=d.points;if(!x||x.length<2)continue;let M=d.start,R=d.end,C=M?s.get(M):void 0,k=R?s.get(R):void 0;C&&(x[0]=V(x[0],C)),k&&(x[x.length-1]=V(x[x.length-1],k))}return e}i(ur,"routeEdgesOrthogonal");function us(e){return e.direction??"TB"}i(us,"getSwimlaneDirection");function gr(e){let t=qn(e),n=e.config.flowchart?.nodeSpacing??40,o=e.config.flowchart?.rankSpacing??100,r=e.config.swimlane?.ignoreCrossLaneEdges??!0,s=e.config.swimlane?.optimizeRanksByCrossings??!0,c=e.config.swimlane?.automaticLaneOrdering??!1,f=us(e),{ordered:g,coordinates:y}=dr(t,{nodeGap:n,layerGap:o,ignoreCrossLaneEdges:r,optimizeRanksByCrossings:s,automaticLaneOrdering:c,direction:f});Zn(t,g,y,{nodeGap:n,layerGap:o});for(let m of e.edges??[])delete m.points;ur(e,f);for(let m of e.edges??[])(!m.curve||m.curve==="basis")&&(m.curve="rounded");return Fo(e,f),An(e),f}i(gr,"runSwimlaneLayoutCore");function gs(e){Kn(e);let t=Jn(e);e.nodes=t.nodes,e.edges=t.edges}i(gs,"prepareSwimlaneLayout");var $a=$n({prepareLayout:gs,runLayoutCore:gr,afterPaint:Un});export{$a as render};