Install-Package Auth0.AspNetCore.Authentication
diff --git a/docs/public/architecture-O4VJ6CD3-GQAMQMPJ.min.js b/docs/public/architecture-O4VJ6CD3-GQAMQMPJ.min.js
new file mode 100755
index 0000000..24618f0
--- /dev/null
+++ b/docs/public/architecture-O4VJ6CD3-GQAMQMPJ.min.js
@@ -0,0 +1,2 @@
+import{a as e,b as r}from"./chunk-6B6J5Z6Z.min.js";import"./chunk-LBFZT66H.min.js";import"./chunk-R5JLOOQ4.min.js";import"./chunk-PTL4EUOE.min.js";import"./chunk-E5F23VE2.min.js";import"./chunk-OSRY5VT3.min.js";export{e as ArchitectureModule,r as createArchitectureServices};
+//# sourceMappingURL=architecture-O4VJ6CD3-GQAMQMPJ.min.js.map
diff --git a/docs/public/architecture-O4VJ6CD3-GQAMQMPJ.min.js.map b/docs/public/architecture-O4VJ6CD3-GQAMQMPJ.min.js.map
new file mode 100755
index 0000000..9865211
--- /dev/null
+++ b/docs/public/architecture-O4VJ6CD3-GQAMQMPJ.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": [],
+ "sourcesContent": [],
+ "mappings": "",
+ "names": []
+}
diff --git a/docs/public/architectureDiagram-VXUJARFQ-H4V63UKK.min.js b/docs/public/architectureDiagram-VXUJARFQ-H4V63UKK.min.js
new file mode 100755
index 0000000..99141ae
--- /dev/null
+++ b/docs/public/architectureDiagram-VXUJARFQ-H4V63UKK.min.js
@@ -0,0 +1,37 @@
+import{a as qe}from"./chunk-V3WVIUUL.min.js";import{a as Qe}from"./chunk-I6VG5SPK.min.js";import"./chunk-LK7NMYKK.min.js";import{a as ze}from"./chunk-7EBV5LUJ.min.js";import"./chunk-6RTTMAJH.min.js";import"./chunk-LGVO22YL.min.js";import"./chunk-HVSI2YYT.min.js";import"./chunk-6B6J5Z6Z.min.js";import"./chunk-EU44H33B.min.js";import"./chunk-CQUFH26W.min.js";import"./chunk-LBFZT66H.min.js";import{b as Ze,c as ke,d as he,g as le}from"./chunk-XCAVDAZC.min.js";import"./chunk-R5JLOOQ4.min.js";import"./chunk-PTL4EUOE.min.js";import{a as Ee}from"./chunk-XXYYAETH.min.js";import{l as Be,p as $e}from"./chunk-QZZKR5JD.min.js";import"./chunk-CM5D5KZN.min.js";import{D as Fe,M as be,P as Pe,Q as Ge,R as Ue,S as Ye,T as Xe,U as He,V as We,W as se,q as Re,y as Se}from"./chunk-3EE2TK35.min.js";import"./chunk-E5F23VE2.min.js";import{b as ct,d as ye,j as Ve}from"./chunk-6TVUEPFY.min.js";import{a as pe,d as ur}from"./chunk-OSRY5VT3.min.js";var Te=pe((re,me)=>{(function(w,N){typeof re=="object"&&typeof me=="object"?me.exports=N():typeof define=="function"&&define.amd?define([],N):typeof re=="object"?re.layoutBase=N():w.layoutBase=N()})(re,function(){return(function(m){var w={};function N(u){if(w[u])return w[u].exports;var o=w[u]={i:u,l:!1,exports:{}};return m[u].call(o.exports,o,o.exports,N),o.l=!0,o.exports}return N.m=m,N.c=w,N.i=function(u){return u},N.d=function(u,o,n){N.o(u,o)||Object.defineProperty(u,o,{configurable:!1,enumerable:!0,get:n})},N.n=function(u){var o=u&&u.__esModule?function(){return u.default}:function(){return u};return N.d(o,"a",o),o},N.o=function(u,o){return Object.prototype.hasOwnProperty.call(u,o)},N.p="",N(N.s=28)})([(function(m,w,N){"use strict";function u(){}u.QUALITY=1,u.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,u.DEFAULT_INCREMENTAL=!1,u.DEFAULT_ANIMATION_ON_LAYOUT=!0,u.DEFAULT_ANIMATION_DURING_LAYOUT=!1,u.DEFAULT_ANIMATION_PERIOD=50,u.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,u.DEFAULT_GRAPH_MARGIN=15,u.NODE_DIMENSIONS_INCLUDE_LABELS=!1,u.SIMPLE_NODE_SIZE=40,u.SIMPLE_NODE_HALF_SIZE=u.SIMPLE_NODE_SIZE/2,u.EMPTY_COMPOUND_NODE_SIZE=40,u.MIN_EDGE_LENGTH=1,u.WORLD_BOUNDARY=1e6,u.INITIAL_WORLD_BOUNDARY=u.WORLD_BOUNDARY/1e3,u.WORLD_CENTER_X=1200,u.WORLD_CENTER_Y=900,m.exports=u}),(function(m,w,N){"use strict";var u=N(2),o=N(8),n=N(9);function e(c,t,g){u.call(this,g),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=g,this.bendpoints=[],this.source=c,this.target=t}e.prototype=Object.create(u.prototype);for(var a in u)e[a]=u[a];e.prototype.getSource=function(){return this.source},e.prototype.getTarget=function(){return this.target},e.prototype.isInterGraph=function(){return this.isInterGraph},e.prototype.getLength=function(){return this.length},e.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},e.prototype.getBendpoints=function(){return this.bendpoints},e.prototype.getLca=function(){return this.lca},e.prototype.getSourceInLca=function(){return this.sourceInLca},e.prototype.getTargetInLca=function(){return this.targetInLca},e.prototype.getOtherEnd=function(c){if(this.source===c)return this.target;if(this.target===c)return this.source;throw"Node is not incident with this edge"},e.prototype.getOtherEndInGraph=function(c,t){for(var g=this.getOtherEnd(c),i=t.getGraphManager().getRoot();;){if(g.getOwner()==t)return g;if(g.getOwner()==i)break;g=g.getOwner().getParent()}return null},e.prototype.updateLength=function(){var c=new Array(4);this.isOverlapingSourceAndTarget=o.getIntersection(this.target.getRect(),this.source.getRect(),c),this.isOverlapingSourceAndTarget||(this.lengthX=c[0]-c[2],this.lengthY=c[1]-c[3],Math.abs(this.lengthX)<1&&(this.lengthX=n.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=n.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},e.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=n.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=n.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},m.exports=e}),(function(m,w,N){"use strict";function u(o){this.vGraphObject=o}m.exports=u}),(function(m,w,N){"use strict";var u=N(2),o=N(10),n=N(13),e=N(0),a=N(16),c=N(5);function t(i,r,h,f){h==null&&f==null&&(f=r),u.call(this,f),i.graphManager!=null&&(i=i.graphManager),this.estimatedSize=o.MIN_VALUE,this.inclusionTreeDepth=o.MAX_VALUE,this.vGraphObject=f,this.edges=[],this.graphManager=i,h!=null&&r!=null?this.rect=new n(r.x,r.y,h.width,h.height):this.rect=new n}t.prototype=Object.create(u.prototype);for(var g in u)t[g]=u[g];t.prototype.getEdges=function(){return this.edges},t.prototype.getChild=function(){return this.child},t.prototype.getOwner=function(){return this.owner},t.prototype.getWidth=function(){return this.rect.width},t.prototype.setWidth=function(i){this.rect.width=i},t.prototype.getHeight=function(){return this.rect.height},t.prototype.setHeight=function(i){this.rect.height=i},t.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},t.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},t.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},t.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},t.prototype.getRect=function(){return this.rect},t.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},t.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},t.prototype.setRect=function(i,r){this.rect.x=i.x,this.rect.y=i.y,this.rect.width=r.width,this.rect.height=r.height},t.prototype.setCenter=function(i,r){this.rect.x=i-this.rect.width/2,this.rect.y=r-this.rect.height/2},t.prototype.setLocation=function(i,r){this.rect.x=i,this.rect.y=r},t.prototype.moveBy=function(i,r){this.rect.x+=i,this.rect.y+=r},t.prototype.getEdgeListToNode=function(i){var r=[],h,f=this;return f.edges.forEach(function(l){if(l.target==i){if(l.source!=f)throw"Incorrect edge source!";r.push(l)}}),r},t.prototype.getEdgesBetween=function(i){var r=[],h,f=this;return f.edges.forEach(function(l){if(!(l.source==f||l.target==f))throw"Incorrect edge source and/or target";(l.target==i||l.source==i)&&r.push(l)}),r},t.prototype.getNeighborsList=function(){var i=new Set,r=this;return r.edges.forEach(function(h){if(h.source==r)i.add(h.target);else{if(h.target!=r)throw"Incorrect incidency!";i.add(h.source)}}),i},t.prototype.withChildren=function(){var i=new Set,r,h;if(i.add(this),this.child!=null)for(var f=this.child.getNodes(),l=0;lr?(this.rect.x-=(this.labelWidth-r)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(r+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(h+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>h?(this.rect.y-=(this.labelHeight-h)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(h+this.labelHeight))}}},t.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==o.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},t.prototype.transform=function(i){var r=this.rect.x;r>e.WORLD_BOUNDARY?r=e.WORLD_BOUNDARY:r<-e.WORLD_BOUNDARY&&(r=-e.WORLD_BOUNDARY);var h=this.rect.y;h>e.WORLD_BOUNDARY?h=e.WORLD_BOUNDARY:h<-e.WORLD_BOUNDARY&&(h=-e.WORLD_BOUNDARY);var f=new c(r,h),l=i.inverseTransformPoint(f);this.setLocation(l.x,l.y)},t.prototype.getLeft=function(){return this.rect.x},t.prototype.getRight=function(){return this.rect.x+this.rect.width},t.prototype.getTop=function(){return this.rect.y},t.prototype.getBottom=function(){return this.rect.y+this.rect.height},t.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},m.exports=t}),(function(m,w,N){"use strict";var u=N(0);function o(){}for(var n in u)o[n]=u[n];o.MAX_ITERATIONS=2500,o.DEFAULT_EDGE_LENGTH=50,o.DEFAULT_SPRING_STRENGTH=.45,o.DEFAULT_REPULSION_STRENGTH=4500,o.DEFAULT_GRAVITY_STRENGTH=.4,o.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,o.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,o.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,o.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,o.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,o.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,o.COOLING_ADAPTATION_FACTOR=.33,o.ADAPTATION_LOWER_NODE_LIMIT=1e3,o.ADAPTATION_UPPER_NODE_LIMIT=5e3,o.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,o.MAX_NODE_DISPLACEMENT=o.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,o.MIN_REPULSION_DIST=o.DEFAULT_EDGE_LENGTH/10,o.CONVERGENCE_CHECK_PERIOD=100,o.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,o.MIN_EDGE_LENGTH=1,o.GRID_CALCULATION_CHECK_PERIOD=10,m.exports=o}),(function(m,w,N){"use strict";function u(o,n){o==null&&n==null?(this.x=0,this.y=0):(this.x=o,this.y=n)}u.prototype.getX=function(){return this.x},u.prototype.getY=function(){return this.y},u.prototype.setX=function(o){this.x=o},u.prototype.setY=function(o){this.y=o},u.prototype.getDifference=function(o){return new DimensionD(this.x-o.x,this.y-o.y)},u.prototype.getCopy=function(){return new u(this.x,this.y)},u.prototype.translate=function(o){return this.x+=o.width,this.y+=o.height,this},m.exports=u}),(function(m,w,N){"use strict";var u=N(2),o=N(10),n=N(0),e=N(7),a=N(3),c=N(1),t=N(13),g=N(12),i=N(11);function r(f,l,L){u.call(this,L),this.estimatedSize=o.MIN_VALUE,this.margin=n.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=f,l!=null&&l instanceof e?this.graphManager=l:l!=null&&l instanceof Layout&&(this.graphManager=l.graphManager)}r.prototype=Object.create(u.prototype);for(var h in u)r[h]=u[h];r.prototype.getNodes=function(){return this.nodes},r.prototype.getEdges=function(){return this.edges},r.prototype.getGraphManager=function(){return this.graphManager},r.prototype.getParent=function(){return this.parent},r.prototype.getLeft=function(){return this.left},r.prototype.getRight=function(){return this.right},r.prototype.getTop=function(){return this.top},r.prototype.getBottom=function(){return this.bottom},r.prototype.isConnected=function(){return this.isConnected},r.prototype.add=function(f,l,L){if(l==null&&L==null){var y=f;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(y)>-1)throw"Node already in graph!";return y.owner=this,this.getNodes().push(y),y}else{var p=f;if(!(this.getNodes().indexOf(l)>-1&&this.getNodes().indexOf(L)>-1))throw"Source or target not in graph!";if(!(l.owner==L.owner&&l.owner==this))throw"Both owners must be this graph!";return l.owner!=L.owner?null:(p.source=l,p.target=L,p.isInterGraph=!1,this.getEdges().push(p),l.edges.push(p),L!=l&&L.edges.push(p),p)}},r.prototype.remove=function(f){var l=f;if(f instanceof a){if(l==null)throw"Node is null!";if(!(l.owner!=null&&l.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var L=l.edges.slice(),y,p=L.length,C=0;C-1&&S>-1))throw"Source and/or target doesn't know this edge!";y.source.edges.splice(A,1),y.target!=y.source&&y.target.edges.splice(S,1);var R=y.source.owner.getEdges().indexOf(y);if(R==-1)throw"Not in owner's edge list!";y.source.owner.getEdges().splice(R,1)}},r.prototype.updateLeftTop=function(){for(var f=o.MAX_VALUE,l=o.MAX_VALUE,L,y,p,C=this.getNodes(),R=C.length,A=0;AL&&(f=L),l>y&&(l=y)}return f==o.MAX_VALUE?null:(C[0].getParent().paddingLeft!=null?p=C[0].getParent().paddingLeft:p=this.margin,this.left=l-p,this.top=f-p,new g(this.left,this.top))},r.prototype.updateBounds=function(f){for(var l=o.MAX_VALUE,L=-o.MAX_VALUE,y=o.MAX_VALUE,p=-o.MAX_VALUE,C,R,A,S,B,Y=this.nodes,tt=Y.length,x=0;xC&&(l=C),LA&&(y=A),pC&&(l=C),LA&&(y=A),p=this.nodes.length){var tt=0;L.forEach(function(x){x.owner==f&&tt++}),tt==this.nodes.length&&(this.isConnected=!0)}},m.exports=r}),(function(m,w,N){"use strict";var u,o=N(1);function n(e){u=N(6),this.layout=e,this.graphs=[],this.edges=[]}n.prototype.addRoot=function(){var e=this.layout.newGraph(),a=this.layout.newNode(null),c=this.add(e,a);return this.setRootGraph(c),this.rootGraph},n.prototype.add=function(e,a,c,t,g){if(c==null&&t==null&&g==null){if(e==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(e)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(e),e.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return e.parent=a,a.child=e,e}else{g=c,t=a,c=e;var i=t.getOwner(),r=g.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(r!=null&&r.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==r)return c.isInterGraph=!1,i.add(c,t,g);if(c.isInterGraph=!0,c.source=t,c.target=g,this.edges.indexOf(c)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(c),!(c.source!=null&&c.target!=null))throw"Edge source and/or target is null!";if(!(c.source.edges.indexOf(c)==-1&&c.target.edges.indexOf(c)==-1))throw"Edge already in source and/or target incidency list!";return c.source.edges.push(c),c.target.edges.push(c),c}},n.prototype.remove=function(e){if(e instanceof u){var a=e;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var c=[];c=c.concat(a.getEdges());for(var t,g=c.length,i=0;i=e.getRight()?a[0]+=Math.min(e.getX()-n.getX(),n.getRight()-e.getRight()):e.getX()<=n.getX()&&e.getRight()>=n.getRight()&&(a[0]+=Math.min(n.getX()-e.getX(),e.getRight()-n.getRight())),n.getY()<=e.getY()&&n.getBottom()>=e.getBottom()?a[1]+=Math.min(e.getY()-n.getY(),n.getBottom()-e.getBottom()):e.getY()<=n.getY()&&e.getBottom()>=n.getBottom()&&(a[1]+=Math.min(n.getY()-e.getY(),e.getBottom()-n.getBottom()));var g=Math.abs((e.getCenterY()-n.getCenterY())/(e.getCenterX()-n.getCenterX()));e.getCenterY()===n.getCenterY()&&e.getCenterX()===n.getCenterX()&&(g=1);var i=g*a[0],r=a[1]/g;a[0]i)return a[0]=c,a[1]=h,a[2]=g,a[3]=Y,!1;if(tg)return a[0]=r,a[1]=t,a[2]=S,a[3]=i,!1;if(cg?(a[0]=l,a[1]=L,s=!0):(a[0]=f,a[1]=h,s=!0):v===d&&(c>g?(a[0]=r,a[1]=h,s=!0):(a[0]=y,a[1]=L,s=!0)),-T===d?g>c?(a[2]=B,a[3]=Y,E=!0):(a[2]=S,a[3]=A,E=!0):T===d&&(g>c?(a[2]=R,a[3]=A,E=!0):(a[2]=tt,a[3]=Y,E=!0)),s&&E)return!1;if(c>g?t>i?(D=this.getCardinalDirection(v,d,4),O=this.getCardinalDirection(T,d,2)):(D=this.getCardinalDirection(-v,d,3),O=this.getCardinalDirection(-T,d,1)):t>i?(D=this.getCardinalDirection(-v,d,1),O=this.getCardinalDirection(-T,d,3)):(D=this.getCardinalDirection(v,d,2),O=this.getCardinalDirection(T,d,4)),!s)switch(D){case 1:F=h,P=c+-C/d,a[0]=P,a[1]=F;break;case 2:P=y,F=t+p*d,a[0]=P,a[1]=F;break;case 3:F=L,P=c+C/d,a[0]=P,a[1]=F;break;case 4:P=l,F=t+-p*d,a[0]=P,a[1]=F;break}if(!E)switch(O){case 1:Z=A,I=g+-k/d,a[2]=I,a[3]=Z;break;case 2:I=tt,Z=i+x*d,a[2]=I,a[3]=Z;break;case 3:Z=Y,I=g+k/d,a[2]=I,a[3]=Z;break;case 4:I=B,Z=i+-x*d,a[2]=I,a[3]=Z;break}}return!1},o.getCardinalDirection=function(n,e,a){return n>e?a:1+a%4},o.getIntersection=function(n,e,a,c){if(c==null)return this.getIntersection2(n,e,a);var t=n.x,g=n.y,i=e.x,r=e.y,h=a.x,f=a.y,l=c.x,L=c.y,y=void 0,p=void 0,C=void 0,R=void 0,A=void 0,S=void 0,B=void 0,Y=void 0,tt=void 0;return C=r-g,A=t-i,B=i*g-t*r,R=L-f,S=h-l,Y=l*f-h*L,tt=C*S-R*A,tt===0?null:(y=(A*Y-S*B)/tt,p=(R*B-C*Y)/tt,new u(y,p))},o.angleOfVector=function(n,e,a,c){var t=void 0;return n!==a?(t=Math.atan((c-e)/(a-n)),a=0){var L=(-h+Math.sqrt(h*h-4*r*f))/(2*r),y=(-h-Math.sqrt(h*h-4*r*f))/(2*r),p=null;return L>=0&&L<=1?[L]:y>=0&&y<=1?[y]:p}else return null},o.HALF_PI=.5*Math.PI,o.ONE_AND_HALF_PI=1.5*Math.PI,o.TWO_PI=2*Math.PI,o.THREE_PI=3*Math.PI,m.exports=o}),(function(m,w,N){"use strict";function u(){}u.sign=function(o){return o>0?1:o<0?-1:0},u.floor=function(o){return o<0?Math.ceil(o):Math.floor(o)},u.ceil=function(o){return o<0?Math.floor(o):Math.ceil(o)},m.exports=u}),(function(m,w,N){"use strict";function u(){}u.MAX_VALUE=2147483647,u.MIN_VALUE=-2147483648,m.exports=u}),(function(m,w,N){"use strict";var u=(function(){function t(g,i){for(var r=0;r"u"?"undefined":u(n);return n==null||e!="object"&&e!="function"},m.exports=o}),(function(m,w,N){"use strict";function u(h){if(Array.isArray(h)){for(var f=0,l=Array(h.length);f0&&f;){for(C.push(A[0]);C.length>0&&f;){var S=C[0];C.splice(0,1),p.add(S);for(var B=S.getEdges(),y=0;y-1&&A.splice(k,1)}p=new Set,R=new Map}}return h},r.prototype.createDummyNodesForBendpoints=function(h){for(var f=[],l=h.source,L=this.graphManager.calcLowestCommonAncestor(h.source,h.target),y=0;y0){for(var L=this.edgeToDummyNodes.get(l),y=0;y=0&&f.splice(Y,1);var tt=R.getNeighborsList();tt.forEach(function(s){if(l.indexOf(s)<0){var E=L.get(s),v=E-1;v==1&&S.push(s),L.set(s,v)}})}l=l.concat(S),(f.length==1||f.length==2)&&(y=!0,p=f[0])}return p},r.prototype.setGraphManager=function(h){this.graphManager=h},m.exports=r}),(function(m,w,N){"use strict";function u(){}u.seed=1,u.x=0,u.nextDouble=function(){return u.x=Math.sin(u.seed++)*1e4,u.x-Math.floor(u.x)},m.exports=u}),(function(m,w,N){"use strict";var u=N(5);function o(n,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o.prototype.getWorldOrgX=function(){return this.lworldOrgX},o.prototype.setWorldOrgX=function(n){this.lworldOrgX=n},o.prototype.getWorldOrgY=function(){return this.lworldOrgY},o.prototype.setWorldOrgY=function(n){this.lworldOrgY=n},o.prototype.getWorldExtX=function(){return this.lworldExtX},o.prototype.setWorldExtX=function(n){this.lworldExtX=n},o.prototype.getWorldExtY=function(){return this.lworldExtY},o.prototype.setWorldExtY=function(n){this.lworldExtY=n},o.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},o.prototype.setDeviceOrgX=function(n){this.ldeviceOrgX=n},o.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},o.prototype.setDeviceOrgY=function(n){this.ldeviceOrgY=n},o.prototype.getDeviceExtX=function(){return this.ldeviceExtX},o.prototype.setDeviceExtX=function(n){this.ldeviceExtX=n},o.prototype.getDeviceExtY=function(){return this.ldeviceExtY},o.prototype.setDeviceExtY=function(n){this.ldeviceExtY=n},o.prototype.transformX=function(n){var e=0,a=this.lworldExtX;return a!=0&&(e=this.ldeviceOrgX+(n-this.lworldOrgX)*this.ldeviceExtX/a),e},o.prototype.transformY=function(n){var e=0,a=this.lworldExtY;return a!=0&&(e=this.ldeviceOrgY+(n-this.lworldOrgY)*this.ldeviceExtY/a),e},o.prototype.inverseTransformX=function(n){var e=0,a=this.ldeviceExtX;return a!=0&&(e=this.lworldOrgX+(n-this.ldeviceOrgX)*this.lworldExtX/a),e},o.prototype.inverseTransformY=function(n){var e=0,a=this.ldeviceExtY;return a!=0&&(e=this.lworldOrgY+(n-this.ldeviceOrgY)*this.lworldExtY/a),e},o.prototype.inverseTransformPoint=function(n){var e=new u(this.inverseTransformX(n.x),this.inverseTransformY(n.y));return e},m.exports=o}),(function(m,w,N){"use strict";function u(i){if(Array.isArray(i)){for(var r=0,h=Array(i.length);rn.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*n.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(i-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-n.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT_INCREMENTAL):(i>n.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(n.COOLING_ADAPTATION_FACTOR,1-(i-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*(1-n.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*n.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},t.prototype.calcSpringForces=function(){for(var i=this.getAllEdges(),r,h=0;h0&&arguments[0]!==void 0?arguments[0]:!0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,h,f,l,L,y=this.getAllNodes(),p;if(this.useFRGridVariant)for(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&i&&this.updateGrid(),p=new Set,h=0;hC||p>C)&&(i.gravitationForceX=-this.gravityConstant*l,i.gravitationForceY=-this.gravityConstant*L)):(C=r.getEstimatedSize()*this.compoundGravityRangeFactor,(y>C||p>C)&&(i.gravitationForceX=-this.gravityConstant*l*this.compoundGravityConstant,i.gravitationForceY=-this.gravityConstant*L*this.compoundGravityConstant))},t.prototype.isConverged=function(){var i,r=!1;return this.totalIterations>this.maxIterations/3&&(r=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),i=this.totalDisplacement=y.length||C>=y[0].length)){for(var R=0;Rt}}]),a})();m.exports=e}),(function(m,w,N){"use strict";function u(){}u.svd=function(o){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=o.length,this.n=o[0].length;var n=Math.min(this.m,this.n);this.s=(function(Dt){for(var Nt=[];Dt-- >0;)Nt.push(0);return Nt})(Math.min(this.m+1,this.n)),this.U=(function(Dt){var Nt=function $t(Rt){if(Rt.length==0)return 0;for(var Xt=[],zt=0;zt0;)Nt.push(0);return Nt})(this.n),a=(function(Dt){for(var Nt=[];Dt-- >0;)Nt.push(0);return Nt})(this.m),c=!0,t=!0,g=Math.min(this.m-1,this.n),i=Math.max(0,Math.min(this.n-2,this.m)),r=0;r=0;d--)if(this.s[d]!==0){for(var D=d+1;D=0;b--){if((function(Dt,Nt){return Dt&&Nt})(b0;){var Q=void 0,Ut=void 0;for(Q=E-2;Q>=-1&&Q!==-1;Q--)if(Math.abs(e[Q])<=St+Lt*(Math.abs(this.s[Q])+Math.abs(this.s[Q+1]))){e[Q]=0;break}if(Q===E-2)Ut=4;else{var wt=void 0;for(wt=E-1;wt>=Q&&wt!==Q;wt--){var nt=(wt!==E?Math.abs(e[wt]):0)+(wt!==Q+1?Math.abs(e[wt-1]):0);if(Math.abs(this.s[wt])<=St+Lt*nt){this.s[wt]=0;break}}wt===Q?Ut=3:wt===E-1?Ut=1:(Ut=2,Q=wt)}switch(Q++,Ut){case 1:{var et=e[E-2];e[E-2]=0;for(var pt=E-2;pt>=Q;pt--){var Et=u.hypot(this.s[pt],et),Ct=this.s[pt]/Et,mt=et/Et;if(this.s[pt]=Et,pt!==Q&&(et=-mt*e[pt-1],e[pt-1]=Ct*e[pt-1]),t)for(var Tt=0;Tt=this.s[Q+1]);){var lt=this.s[Q];if(this.s[Q]=this.s[Q+1],this.s[Q+1]=lt,t&&QMath.abs(n)?(e=n/o,e=Math.abs(o)*Math.sqrt(1+e*e)):n!=0?(e=o/n,e=Math.abs(n)*Math.sqrt(1+e*e)):e=0,e},m.exports=u}),(function(m,w,N){"use strict";var u=(function(){function e(a,c){for(var t=0;t2&&arguments[2]!==void 0?arguments[2]:1,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;o(this,e),this.sequence1=a,this.sequence2=c,this.match_score=t,this.mismatch_penalty=g,this.gap_penalty=i,this.iMax=a.length+1,this.jMax=c.length+1,this.grid=new Array(this.iMax);for(var r=0;r=0;a--){var c=this.listeners[a];c.event===n&&c.callback===e&&this.listeners.splice(a,1)}},o.emit=function(n,e){for(var a=0;a{(function(w,N){typeof ie=="object"&&typeof Ne=="object"?Ne.exports=N(Te()):typeof define=="function"&&define.amd?define(["layout-base"],N):typeof ie=="object"?ie.coseBase=N(Te()):w.coseBase=N(w.layoutBase)})(ie,function(m){return(()=>{"use strict";var w={45:((n,e,a)=>{var c={};c.layoutBase=a(551),c.CoSEConstants=a(806),c.CoSEEdge=a(767),c.CoSEGraph=a(880),c.CoSEGraphManager=a(578),c.CoSELayout=a(765),c.CoSENode=a(991),c.ConstraintHandler=a(902),n.exports=c}),806:((n,e,a)=>{var c=a(551).FDLayoutConstants;function t(){}for(var g in c)t[g]=c[g];t.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,t.DEFAULT_RADIAL_SEPARATION=c.DEFAULT_EDGE_LENGTH,t.DEFAULT_COMPONENT_SEPERATION=60,t.TILE=!0,t.TILING_PADDING_VERTICAL=10,t.TILING_PADDING_HORIZONTAL=10,t.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,t.ENFORCE_CONSTRAINTS=!0,t.APPLY_LAYOUT=!0,t.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,t.TREE_REDUCTION_ON_INCREMENTAL=!0,t.PURE_INCREMENTAL=t.DEFAULT_INCREMENTAL,n.exports=t}),767:((n,e,a)=>{var c=a(551).FDLayoutEdge;function t(i,r,h){c.call(this,i,r,h)}t.prototype=Object.create(c.prototype);for(var g in c)t[g]=c[g];n.exports=t}),880:((n,e,a)=>{var c=a(551).LGraph;function t(i,r,h){c.call(this,i,r,h)}t.prototype=Object.create(c.prototype);for(var g in c)t[g]=c[g];n.exports=t}),578:((n,e,a)=>{var c=a(551).LGraphManager;function t(i){c.call(this,i)}t.prototype=Object.create(c.prototype);for(var g in c)t[g]=c[g];n.exports=t}),765:((n,e,a)=>{var c=a(551).FDLayout,t=a(578),g=a(880),i=a(991),r=a(767),h=a(806),f=a(902),l=a(551).FDLayoutConstants,L=a(551).LayoutConstants,y=a(551).Point,p=a(551).PointD,C=a(551).DimensionD,R=a(551).Layout,A=a(551).Integer,S=a(551).IGeometry,B=a(551).LGraph,Y=a(551).Transform,tt=a(551).LinkedList;function x(){c.call(this),this.toBeTiled={},this.constraints={}}x.prototype=Object.create(c.prototype);for(var k in c)x[k]=c[k];x.prototype.newGraphManager=function(){var s=new t(this);return this.graphManager=s,s},x.prototype.newGraph=function(s){return new g(null,this.graphManager,s)},x.prototype.newNode=function(s){return new i(this.graphManager,s)},x.prototype.newEdge=function(s){return new r(null,null,s)},x.prototype.initParameters=function(){c.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=l.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=l.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},x.prototype.initSpringEmbedder=function(){c.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/l.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},x.prototype.layout=function(){var s=L.DEFAULT_CREATE_BENDS_AS_NEEDED;return s&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},x.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(h.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),v=this.nodesWithGravity.filter(function(D){return E.has(D)});this.graphManager.setAllNodesToApplyGravitation(v)}}else{var s=this.getFlatForest();if(s.length>0)this.positionNodesRadially(s);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),v=this.nodesWithGravity.filter(function(T){return E.has(T)});this.graphManager.setAllNodesToApplyGravitation(v),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(f.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},x.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var s=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(d){return s.has(d)});this.graphManager.setAllNodesToApplyGravitation(E),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var v=!this.isTreeGrowing&&!this.isGrowthFinished,T=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(v,T),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},x.prototype.getPositionsData=function(){for(var s=this.graphManager.getAllNodes(),E={},v=0;v0&&this.updateDisplacements();for(var v=0;v0&&(T.fixedNodeWeight=D)}}if(this.constraints.relativePlacementConstraint){var O=new Map,P=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(M){s.fixedNodesOnHorizontal.add(M),s.fixedNodesOnVertical.add(M)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var F=this.constraints.alignmentConstraint.vertical,v=0;v=2*M.length/3;J--)U=Math.floor(Math.random()*(J+1)),X=M[J],M[J]=M[U],M[U]=X;return M},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(M){if(M.left){var U=O.has(M.left)?O.get(M.left):M.left,X=O.has(M.right)?O.get(M.right):M.right;s.nodesInRelativeHorizontal.includes(U)||(s.nodesInRelativeHorizontal.push(U),s.nodeToRelativeConstraintMapHorizontal.set(U,[]),s.dummyToNodeForVerticalAlignment.has(U)?s.nodeToTempPositionMapHorizontal.set(U,s.idToNodeMap.get(s.dummyToNodeForVerticalAlignment.get(U)[0]).getCenterX()):s.nodeToTempPositionMapHorizontal.set(U,s.idToNodeMap.get(U).getCenterX())),s.nodesInRelativeHorizontal.includes(X)||(s.nodesInRelativeHorizontal.push(X),s.nodeToRelativeConstraintMapHorizontal.set(X,[]),s.dummyToNodeForVerticalAlignment.has(X)?s.nodeToTempPositionMapHorizontal.set(X,s.idToNodeMap.get(s.dummyToNodeForVerticalAlignment.get(X)[0]).getCenterX()):s.nodeToTempPositionMapHorizontal.set(X,s.idToNodeMap.get(X).getCenterX())),s.nodeToRelativeConstraintMapHorizontal.get(U).push({right:X,gap:M.gap}),s.nodeToRelativeConstraintMapHorizontal.get(X).push({left:U,gap:M.gap})}else{var J=P.has(M.top)?P.get(M.top):M.top,st=P.has(M.bottom)?P.get(M.bottom):M.bottom;s.nodesInRelativeVertical.includes(J)||(s.nodesInRelativeVertical.push(J),s.nodeToRelativeConstraintMapVertical.set(J,[]),s.dummyToNodeForHorizontalAlignment.has(J)?s.nodeToTempPositionMapVertical.set(J,s.idToNodeMap.get(s.dummyToNodeForHorizontalAlignment.get(J)[0]).getCenterY()):s.nodeToTempPositionMapVertical.set(J,s.idToNodeMap.get(J).getCenterY())),s.nodesInRelativeVertical.includes(st)||(s.nodesInRelativeVertical.push(st),s.nodeToRelativeConstraintMapVertical.set(st,[]),s.dummyToNodeForHorizontalAlignment.has(st)?s.nodeToTempPositionMapVertical.set(st,s.idToNodeMap.get(s.dummyToNodeForHorizontalAlignment.get(st)[0]).getCenterY()):s.nodeToTempPositionMapVertical.set(st,s.idToNodeMap.get(st).getCenterY())),s.nodeToRelativeConstraintMapVertical.get(J).push({bottom:st,gap:M.gap}),s.nodeToRelativeConstraintMapVertical.get(st).push({top:J,gap:M.gap})}});else{var Z=new Map,_=new Map;this.constraints.relativePlacementConstraint.forEach(function(M){if(M.left){var U=O.has(M.left)?O.get(M.left):M.left,X=O.has(M.right)?O.get(M.right):M.right;Z.has(U)?Z.get(U).push(X):Z.set(U,[X]),Z.has(X)?Z.get(X).push(U):Z.set(X,[U])}else{var J=P.has(M.top)?P.get(M.top):M.top,st=P.has(M.bottom)?P.get(M.bottom):M.bottom;_.has(J)?_.get(J).push(st):_.set(J,[st]),_.has(st)?_.get(st).push(J):_.set(st,[J])}});var b=function(U,X){var J=[],st=[],Lt=new tt,St=new Set,Q=0;return U.forEach(function(Ut,wt){if(!St.has(wt)){J[Q]=[],st[Q]=!1;var nt=wt;for(Lt.push(nt),St.add(nt),J[Q].push(nt);Lt.length!=0;){nt=Lt.shift(),X.has(nt)&&(st[Q]=!0);var et=U.get(nt);et.forEach(function(pt){St.has(pt)||(Lt.push(pt),St.add(pt),J[Q].push(pt))})}Q++}}),{components:J,isFixed:st}},j=b(Z,s.fixedNodesOnHorizontal);this.componentsOnHorizontal=j.components,this.fixedComponentsOnHorizontal=j.isFixed;var V=b(_,s.fixedNodesOnVertical);this.componentsOnVertical=V.components,this.fixedComponentsOnVertical=V.isFixed}}},x.prototype.updateDisplacements=function(){var s=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(V){var M=s.idToNodeMap.get(V.nodeId);M.displacementX=0,M.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var E=this.constraints.alignmentConstraint.vertical,v=0;v1){var P;for(P=0;PT&&(T=Math.floor(O.y)),D=Math.floor(O.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new p(L.WORLD_CENTER_X-O.x/2,L.WORLD_CENTER_Y-O.y/2))},x.radialLayout=function(s,E,v){var T=Math.max(this.maxDiagonalInTree(s),h.DEFAULT_RADIAL_SEPARATION);x.branchRadialLayout(E,null,0,359,0,T);var d=B.calculateBounds(s),D=new Y;D.setDeviceOrgX(d.getMinX()),D.setDeviceOrgY(d.getMinY()),D.setWorldOrgX(v.x),D.setWorldOrgY(v.y);for(var O=0;O1;){var J=X[0];X.splice(0,1);var st=b.indexOf(J);st>=0&&b.splice(st,1),M--,j--}E!=null?U=(b.indexOf(X[0])+1)%M:U=0;for(var Lt=Math.abs(T-v)/j,St=U;V!=j;St=++St%M){var Q=b[St].getOtherEnd(s);if(Q!=E){var Ut=(v+V*Lt)%360,wt=(Ut+Lt)%360;x.branchRadialLayout(Q,s,Ut,wt,d+D,D),V++}}},x.maxDiagonalInTree=function(s){for(var E=A.MIN_VALUE,v=0;vE&&(E=d)}return E},x.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},x.prototype.groupZeroDegreeMembers=function(){var s=this,E={};this.memberGroups={},this.idToDummyNode={};for(var v=[],T=this.graphManager.getAllNodes(),d=0;d"u"&&(E[P]=[]),E[P]=E[P].concat(D)}Object.keys(E).forEach(function(F){if(E[F].length>1){var I="DummyCompound_"+F;s.memberGroups[I]=E[F];var Z=E[F][0].getParent(),_=new i(s.graphManager);_.id=I,_.paddingLeft=Z.paddingLeft||0,_.paddingRight=Z.paddingRight||0,_.paddingBottom=Z.paddingBottom||0,_.paddingTop=Z.paddingTop||0,s.idToDummyNode[I]=_;var b=s.getGraphManager().add(s.newGraph(),_),j=Z.getChild();j.add(_);for(var V=0;Vd?(T.rect.x-=(T.labelWidth-d)/2,T.setWidth(T.labelWidth),T.labelMarginLeft=(T.labelWidth-d)/2):T.labelPosHorizontal=="right"&&T.setWidth(d+T.labelWidth)),T.labelHeight&&(T.labelPosVertical=="top"?(T.rect.y-=T.labelHeight,T.setHeight(D+T.labelHeight),T.labelMarginTop=T.labelHeight):T.labelPosVertical=="center"&&T.labelHeight>D?(T.rect.y-=(T.labelHeight-D)/2,T.setHeight(T.labelHeight),T.labelMarginTop=(T.labelHeight-D)/2):T.labelPosVertical=="bottom"&&T.setHeight(D+T.labelHeight))}})},x.prototype.repopulateCompounds=function(){for(var s=this.compoundOrder.length-1;s>=0;s--){var E=this.compoundOrder[s],v=E.id,T=E.paddingLeft,d=E.paddingTop,D=E.labelMarginLeft,O=E.labelMarginTop;this.adjustLocations(this.tiledMemberPack[v],E.rect.x,E.rect.y,T,d,D,O)}},x.prototype.repopulateZeroDegreeMembers=function(){var s=this,E=this.tiledZeroDegreePack;Object.keys(E).forEach(function(v){var T=s.idToDummyNode[v],d=T.paddingLeft,D=T.paddingTop,O=T.labelMarginLeft,P=T.labelMarginTop;s.adjustLocations(E[v],T.rect.x,T.rect.y,d,D,O,P)})},x.prototype.getToBeTiled=function(s){var E=s.id;if(this.toBeTiled[E]!=null)return this.toBeTiled[E];var v=s.getChild();if(v==null)return this.toBeTiled[E]=!1,!1;for(var T=v.getNodes(),d=0;d0)return this.toBeTiled[E]=!1,!1;if(D.getChild()==null){this.toBeTiled[D.id]=!1;continue}if(!this.getToBeTiled(D))return this.toBeTiled[E]=!1,!1}return this.toBeTiled[E]=!0,!0},x.prototype.getNodeDegree=function(s){for(var E=s.id,v=s.getEdges(),T=0,d=0;dZ&&(Z=b.rect.height)}v+=Z+s.verticalPadding}},x.prototype.tileCompoundMembers=function(s,E){var v=this;this.tiledMemberPack=[],Object.keys(s).forEach(function(T){var d=E[T];if(v.tiledMemberPack[T]=v.tileNodes(s[T],d.paddingLeft+d.paddingRight),d.rect.width=v.tiledMemberPack[T].width,d.rect.height=v.tiledMemberPack[T].height,d.setCenter(v.tiledMemberPack[T].centerX,v.tiledMemberPack[T].centerY),d.labelMarginLeft=0,d.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var D=d.rect.width,O=d.rect.height;d.labelWidth&&(d.labelPosHorizontal=="left"?(d.rect.x-=d.labelWidth,d.setWidth(D+d.labelWidth),d.labelMarginLeft=d.labelWidth):d.labelPosHorizontal=="center"&&d.labelWidth>D?(d.rect.x-=(d.labelWidth-D)/2,d.setWidth(d.labelWidth),d.labelMarginLeft=(d.labelWidth-D)/2):d.labelPosHorizontal=="right"&&d.setWidth(D+d.labelWidth)),d.labelHeight&&(d.labelPosVertical=="top"?(d.rect.y-=d.labelHeight,d.setHeight(O+d.labelHeight),d.labelMarginTop=d.labelHeight):d.labelPosVertical=="center"&&d.labelHeight>O?(d.rect.y-=(d.labelHeight-O)/2,d.setHeight(d.labelHeight),d.labelMarginTop=(d.labelHeight-O)/2):d.labelPosVertical=="bottom"&&d.setHeight(O+d.labelHeight))}})},x.prototype.tileNodes=function(s,E){var v=this.tileNodesByFavoringDim(s,E,!0),T=this.tileNodesByFavoringDim(s,E,!1),d=this.getOrgRatio(v),D=this.getOrgRatio(T),O;return DP&&(P=V.getWidth())});var F=D/d,I=O/d,Z=Math.pow(v-T,2)+4*(F+T)*(I+v)*d,_=(T-v+Math.sqrt(Z))/(2*(F+T)),b;E?(b=Math.ceil(_),b==_&&b++):b=Math.floor(_);var j=b*(F+T)-T;return P>j&&(j=P),j+=T*2,j},x.prototype.tileNodesByFavoringDim=function(s,E,v){var T=h.TILING_PADDING_VERTICAL,d=h.TILING_PADDING_HORIZONTAL,D=h.TILING_COMPARE_BY,O={rows:[],rowWidth:[],rowHeight:[],width:0,height:E,verticalPadding:T,horizontalPadding:d,centerX:0,centerY:0};D&&(O.idealRowWidth=this.calcIdealRowWidth(s,v));var P=function(M){return M.rect.width*M.rect.height},F=function(M,U){return P(U)-P(M)};s.sort(function(V,M){var U=F;return O.idealRowWidth?(U=D,U(V.id,M.id)):U(V,M)});for(var I=0,Z=0,_=0;_0&&(O+=s.horizontalPadding),s.rowWidth[v]=O,s.width0&&(P+=s.verticalPadding);var F=0;P>s.rowHeight[v]&&(F=s.rowHeight[v],s.rowHeight[v]=P,F=s.rowHeight[v]-F),s.height+=F,s.rows[v].push(E)},x.prototype.getShortestRowIndex=function(s){for(var E=-1,v=Number.MAX_VALUE,T=0;Tv&&(E=T,v=s.rowWidth[T]);return E},x.prototype.canAddHorizontal=function(s,E,v){if(s.idealRowWidth){var T=s.rows.length-1,d=s.rowWidth[T];return d+E+s.horizontalPadding<=s.idealRowWidth}var D=this.getShortestRowIndex(s);if(D<0)return!0;var O=s.rowWidth[D];if(O+s.horizontalPadding+E<=s.width)return!0;var P=0;s.rowHeight[D]0&&(P=v+s.verticalPadding-s.rowHeight[D]);var F;s.width-O>=E+s.horizontalPadding?F=(s.height+P)/(O+E+s.horizontalPadding):F=(s.height+P)/s.width,P=v+s.verticalPadding;var I;return s.widthD&&E!=v){T.splice(-1,1),s.rows[v].push(d),s.rowWidth[E]=s.rowWidth[E]-D,s.rowWidth[v]=s.rowWidth[v]+D,s.width=s.rowWidth[instance.getLongestRowIndex(s)];for(var O=Number.MIN_VALUE,P=0;PO&&(O=T[P].height);E>0&&(O+=s.verticalPadding);var F=s.rowHeight[E]+s.rowHeight[v];s.rowHeight[E]=O,s.rowHeight[v]0)for(var j=d;j<=D;j++)b[0]+=this.grid[j][O-1].length+this.grid[j][O].length-1;if(D0)for(var j=O;j<=P;j++)b[3]+=this.grid[d-1][j].length+this.grid[d][j].length-1;for(var V=A.MAX_VALUE,M,U,X=0;X{var c=a(551).FDLayoutNode,t=a(551).IMath;function g(r,h,f,l){c.call(this,r,h,f,l)}g.prototype=Object.create(c.prototype);for(var i in c)g[i]=c[i];g.prototype.calculateDisplacement=function(){var r=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=r.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=r.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=r.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=r.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>r.coolingFactor*r.maxNodeDisplacement&&(this.displacementX=r.coolingFactor*r.maxNodeDisplacement*t.sign(this.displacementX)),Math.abs(this.displacementY)>r.coolingFactor*r.maxNodeDisplacement&&(this.displacementY=r.coolingFactor*r.maxNodeDisplacement*t.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},g.prototype.propogateDisplacementToChildren=function(r,h){for(var f=this.getChild().getNodes(),l,L=0;L{function c(f){if(Array.isArray(f)){for(var l=0,L=Array(f.length);l0){var dt=0;it.forEach(function(lt){W=="horizontal"?(q.set(lt,y.has(lt)?p[y.get(lt)]:$.get(lt)),dt+=q.get(lt)):(q.set(lt,y.has(lt)?C[y.get(lt)]:$.get(lt)),dt+=q.get(lt))}),dt=dt/it.length,ot.forEach(function(lt){z.has(lt)||q.set(lt,dt)})}else{var at=0;ot.forEach(function(lt){W=="horizontal"?at+=y.has(lt)?p[y.get(lt)]:$.get(lt):at+=y.has(lt)?C[y.get(lt)]:$.get(lt)}),at=at/ot.length,ot.forEach(function(lt){q.set(lt,at)})}});for(var rt=function(){var it=gt.shift(),dt=H.get(it);dt.forEach(function(at){if(q.get(at.id)lt&&(lt=Xt),ztFt&&(Ft=zt)}}catch(_t){Vt=!0,Dt=_t}finally{try{!xt&&Nt.return&&Nt.return()}finally{if(Vt)throw Dt}}var ce=(dt+lt)/2-(at+Ft)/2,qt=!0,Jt=!1,Kt=void 0;try{for(var Qt=ot[Symbol.iterator](),oe;!(qt=(oe=Qt.next()).done);qt=!0){var jt=oe.value;q.set(jt,q.get(jt)+ce)}}catch(_t){Jt=!0,Kt=_t}finally{try{!qt&&Qt.return&&Qt.return()}finally{if(Jt)throw Kt}}})}return q},k=function(H){var W=0,z=0,$=0,K=0;if(H.forEach(function(ht){ht.left?p[y.get(ht.left)]-p[y.get(ht.right)]>=0?W++:z++:C[y.get(ht.top)]-C[y.get(ht.bottom)]>=0?$++:K++}),W>z&&$>K)for(var ut=0;utz)for(var ft=0;ftK)for(var q=0;q1)l.fixedNodeConstraint.forEach(function(G,H){T[H]=[G.position.x,G.position.y],d[H]=[p[y.get(G.nodeId)],C[y.get(G.nodeId)]]}),D=!0;else if(l.alignmentConstraint)(function(){var G=0;if(l.alignmentConstraint.vertical){for(var H=l.alignmentConstraint.vertical,W=function(q){var ht=new Set;H[q].forEach(function(vt){ht.add(vt)});var gt=new Set([].concat(c(ht)).filter(function(vt){return P.has(vt)})),rt=void 0;gt.size>0?rt=p[y.get(gt.values().next().value)]:rt=tt(ht).x,H[q].forEach(function(vt){T[G]=[rt,C[y.get(vt)]],d[G]=[p[y.get(vt)],C[y.get(vt)]],G++})},z=0;z0?rt=p[y.get(gt.values().next().value)]:rt=tt(ht).y,$[q].forEach(function(vt){T[G]=[p[y.get(vt)],rt],d[G]=[p[y.get(vt)],C[y.get(vt)]],G++})},ut=0;ut<$.length;ut++)K(ut);D=!0}l.relativePlacementConstraint&&(O=!0)})();else if(l.relativePlacementConstraint){for(var _=0,b=0,j=0;j_&&(_=Z[j].length,b=j);if(_0){var Ct={x:0,y:0};l.fixedNodeConstraint.forEach(function(G,H){var W={x:p[y.get(G.nodeId)],y:C[y.get(G.nodeId)]},z=G.position,$=Y(z,W);Ct.x+=$.x,Ct.y+=$.y}),Ct.x/=l.fixedNodeConstraint.length,Ct.y/=l.fixedNodeConstraint.length,p.forEach(function(G,H){p[H]+=Ct.x}),C.forEach(function(G,H){C[H]+=Ct.y}),l.fixedNodeConstraint.forEach(function(G){p[y.get(G.nodeId)]=G.position.x,C[y.get(G.nodeId)]=G.position.y})}if(l.alignmentConstraint){if(l.alignmentConstraint.vertical)for(var mt=l.alignmentConstraint.vertical,Tt=function(H){var W=new Set;mt[H].forEach(function(K){W.add(K)});var z=new Set([].concat(c(W)).filter(function(K){return P.has(K)})),$=void 0;z.size>0?$=p[y.get(z.values().next().value)]:$=tt(W).x,W.forEach(function(K){P.has(K)||(p[y.get(K)]=$)})},Ot=0;Ot0?$=C[y.get(z.values().next().value)]:$=tt(W).y,W.forEach(function(K){P.has(K)||(C[y.get(K)]=$)})},Pt=0;Pt{n.exports=m})},N={};function u(n){var e=N[n];if(e!==void 0)return e.exports;var a=N[n]={exports:{}};return w[n](a,a.exports,u),a.exports}var o=u(45);return o})()})});var Je=pe((ae,Ce)=>{(function(w,N){typeof ae=="object"&&typeof Ce=="object"?Ce.exports=N(Le()):typeof define=="function"&&define.amd?define(["cose-base"],N):typeof ae=="object"?ae.cytoscapeFcose=N(Le()):w.cytoscapeFcose=N(w.coseBase)})(ae,function(m){return(()=>{"use strict";var w={658:(n=>{n.exports=Object.assign!=null?Object.assign.bind(Object):function(e){for(var a=arguments.length,c=Array(a>1?a-1:0),t=1;t{var c=(function(){function i(r,h){var f=[],l=!0,L=!1,y=void 0;try{for(var p=r[Symbol.iterator](),C;!(l=(C=p.next()).done)&&(f.push(C.value),!(h&&f.length===h));l=!0);}catch(R){L=!0,y=R}finally{try{!l&&p.return&&p.return()}finally{if(L)throw y}}return f}return function(r,h){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return i(r,h);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),t=a(140).layoutBase.LinkedList,g={};g.getTopMostNodes=function(i){for(var r={},h=0;h0&&D.merge(I)});for(var O=0;O1){C=y[0],R=C.connectedEdges().length,y.forEach(function(d){d.connectedEdges().length0&&f.set("dummy"+(f.size+1),B),Y},g.relocateComponent=function(i,r,h){if(!h.fixedNodeConstraint){var f=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,L=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY;if(h.quality=="draft"){var p=!0,C=!1,R=void 0;try{for(var A=r.nodeIndexes[Symbol.iterator](),S;!(p=(S=A.next()).done);p=!0){var B=S.value,Y=c(B,2),tt=Y[0],x=Y[1],k=h.cy.getElementById(tt);if(k){var s=k.boundingBox(),E=r.xCoords[x]-s.w/2,v=r.xCoords[x]+s.w/2,T=r.yCoords[x]-s.h/2,d=r.yCoords[x]+s.h/2;El&&(l=v),Ty&&(y=d)}}}catch(I){C=!0,R=I}finally{try{!p&&A.return&&A.return()}finally{if(C)throw R}}var D=i.x-(l+f)/2,O=i.y-(y+L)/2;r.xCoords=r.xCoords.map(function(I){return I+D}),r.yCoords=r.yCoords.map(function(I){return I+O})}else{Object.keys(r).forEach(function(I){var Z=r[I],_=Z.getRect().x,b=Z.getRect().x+Z.getRect().width,j=Z.getRect().y,V=Z.getRect().y+Z.getRect().height;_l&&(l=b),jy&&(y=V)});var P=i.x-(l+f)/2,F=i.y-(y+L)/2;Object.keys(r).forEach(function(I){var Z=r[I];Z.setCenter(Z.getCenterX()+P,Z.getCenterY()+F)})}}},g.calcBoundingBox=function(i,r,h,f){for(var l=Number.MAX_SAFE_INTEGER,L=Number.MIN_SAFE_INTEGER,y=Number.MAX_SAFE_INTEGER,p=Number.MIN_SAFE_INTEGER,C=void 0,R=void 0,A=void 0,S=void 0,B=i.descendants().not(":parent"),Y=B.length,tt=0;ttC&&(l=C),LA&&(y=A),p{var c=a(548),t=a(140).CoSELayout,g=a(140).CoSENode,i=a(140).layoutBase.PointD,r=a(140).layoutBase.DimensionD,h=a(140).layoutBase.LayoutConstants,f=a(140).layoutBase.FDLayoutConstants,l=a(140).CoSEConstants,L=function(p,C){var R=p.cy,A=p.eles,S=A.nodes(),B=A.edges(),Y=void 0,tt=void 0,x=void 0,k={};p.randomize&&(Y=C.nodeIndexes,tt=C.xCoords,x=C.yCoords);var s=function(I){return typeof I=="function"},E=function(I,Z){return s(I)?I(Z):I},v=c.calcParentsWithoutChildren(R,A),T=function F(I,Z,_,b){for(var j=Z.length,V=0;V0){var Lt=void 0;Lt=_.getGraphManager().add(_.newGraph(),X),F(Lt,U,_,b)}}},d=function(I,Z,_){for(var b=0,j=0,V=0;V<_.length;V++){var M=_[V],U=k[M.data("source")],X=k[M.data("target")];if(U&&X&&U!==X&&U.getEdgesBetween(X).length==0){var J=Z.add(I.newEdge(),U,X);J.id=M.id(),J.idealLength=E(p.idealEdgeLength,M),J.edgeElasticity=E(p.edgeElasticity,M),b+=J.idealLength,j++}}p.idealEdgeLength!=null&&(j>0?l.DEFAULT_EDGE_LENGTH=f.DEFAULT_EDGE_LENGTH=b/j:s(p.idealEdgeLength)?l.DEFAULT_EDGE_LENGTH=f.DEFAULT_EDGE_LENGTH=50:l.DEFAULT_EDGE_LENGTH=f.DEFAULT_EDGE_LENGTH=p.idealEdgeLength,l.MIN_REPULSION_DIST=f.MIN_REPULSION_DIST=f.DEFAULT_EDGE_LENGTH/10,l.DEFAULT_RADIAL_SEPARATION=f.DEFAULT_EDGE_LENGTH)},D=function(I,Z){Z.fixedNodeConstraint&&(I.constraints.fixedNodeConstraint=Z.fixedNodeConstraint),Z.alignmentConstraint&&(I.constraints.alignmentConstraint=Z.alignmentConstraint),Z.relativePlacementConstraint&&(I.constraints.relativePlacementConstraint=Z.relativePlacementConstraint)};p.nestingFactor!=null&&(l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=f.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=p.nestingFactor),p.gravity!=null&&(l.DEFAULT_GRAVITY_STRENGTH=f.DEFAULT_GRAVITY_STRENGTH=p.gravity),p.numIter!=null&&(l.MAX_ITERATIONS=f.MAX_ITERATIONS=p.numIter),p.gravityRange!=null&&(l.DEFAULT_GRAVITY_RANGE_FACTOR=f.DEFAULT_GRAVITY_RANGE_FACTOR=p.gravityRange),p.gravityCompound!=null&&(l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=f.DEFAULT_COMPOUND_GRAVITY_STRENGTH=p.gravityCompound),p.gravityRangeCompound!=null&&(l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=f.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=p.gravityRangeCompound),p.initialEnergyOnIncremental!=null&&(l.DEFAULT_COOLING_FACTOR_INCREMENTAL=f.DEFAULT_COOLING_FACTOR_INCREMENTAL=p.initialEnergyOnIncremental),p.tilingCompareBy!=null&&(l.TILING_COMPARE_BY=p.tilingCompareBy),p.quality=="proof"?h.QUALITY=2:h.QUALITY=0,l.NODE_DIMENSIONS_INCLUDE_LABELS=f.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=p.nodeDimensionsIncludeLabels,l.DEFAULT_INCREMENTAL=f.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!p.randomize,l.ANIMATE=f.ANIMATE=h.ANIMATE=p.animate,l.TILE=p.tile,l.TILING_PADDING_VERTICAL=typeof p.tilingPaddingVertical=="function"?p.tilingPaddingVertical.call():p.tilingPaddingVertical,l.TILING_PADDING_HORIZONTAL=typeof p.tilingPaddingHorizontal=="function"?p.tilingPaddingHorizontal.call():p.tilingPaddingHorizontal,l.DEFAULT_INCREMENTAL=f.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,l.PURE_INCREMENTAL=!p.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=p.uniformNodeDimensions,p.step=="transformed"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,l.ENFORCE_CONSTRAINTS=!1,l.APPLY_LAYOUT=!1),p.step=="enforced"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!0,l.APPLY_LAYOUT=!1),p.step=="cose"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!1,l.APPLY_LAYOUT=!0),p.step=="all"&&(p.randomize?l.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!0,l.APPLY_LAYOUT=!0),p.fixedNodeConstraint||p.alignmentConstraint||p.relativePlacementConstraint?l.TREE_REDUCTION_ON_INCREMENTAL=!1:l.TREE_REDUCTION_ON_INCREMENTAL=!0;var O=new t,P=O.newGraphManager();return T(P.addRoot(),c.getTopMostNodes(S),O,p),d(O,P,B),D(O,p),O.runLayout(),k};n.exports={coseLayout:L}}),212:((n,e,a)=>{var c=(function(){function p(C,R){for(var A=0;A0)if(d){var P=i.getTopMostNodes(A.eles.nodes());if(s=i.connectComponents(S,A.eles,P),s.forEach(function(nt){var et=nt.boundingBox();E.push({x:et.x1+et.w/2,y:et.y1+et.h/2})}),A.randomize&&s.forEach(function(nt){A.eles=nt,Y.push(h(A))}),A.quality=="default"||A.quality=="proof"){var F=S.collection();if(A.tile){var I=new Map,Z=[],_=[],b=0,j={nodeIndexes:I,xCoords:Z,yCoords:_},V=[];if(s.forEach(function(nt,et){nt.edges().length==0&&(nt.nodes().forEach(function(pt,Et){F.merge(nt.nodes()[Et]),pt.isParent()||(j.nodeIndexes.set(nt.nodes()[Et].id(),b++),j.xCoords.push(nt.nodes()[0].position().x),j.yCoords.push(nt.nodes()[0].position().y))}),V.push(et))}),F.length>1){var M=F.boundingBox();E.push({x:M.x1+M.w/2,y:M.y1+M.h/2}),s.push(F),Y.push(j);for(var U=V.length-1;U>=0;U--)s.splice(V[U],1),Y.splice(V[U],1),E.splice(V[U],1)}}s.forEach(function(nt,et){A.eles=nt,k.push(l(A,Y[et])),i.relocateComponent(E[et],k[et],A)})}else s.forEach(function(nt,et){i.relocateComponent(E[et],Y[et],A)});var X=new Set;if(s.length>1){var J=[],st=B.filter(function(nt){return nt.css("display")=="none"});s.forEach(function(nt,et){var pt=void 0;if(A.quality=="draft"&&(pt=Y[et].nodeIndexes),nt.nodes().not(st).length>0){var Et={};Et.edges=[],Et.nodes=[];var Ct=void 0;nt.nodes().not(st).forEach(function(mt){if(A.quality=="draft")if(!mt.isParent())Ct=pt.get(mt.id()),Et.nodes.push({x:Y[et].xCoords[Ct]-mt.boundingbox().w/2,y:Y[et].yCoords[Ct]-mt.boundingbox().h/2,width:mt.boundingbox().w,height:mt.boundingbox().h});else{var Tt=i.calcBoundingBox(mt,Y[et].xCoords,Y[et].yCoords,pt);Et.nodes.push({x:Tt.topLeftX,y:Tt.topLeftY,width:Tt.width,height:Tt.height})}else k[et][mt.id()]&&Et.nodes.push({x:k[et][mt.id()].getLeft(),y:k[et][mt.id()].getTop(),width:k[et][mt.id()].getWidth(),height:k[et][mt.id()].getHeight()})}),nt.edges().forEach(function(mt){var Tt=mt.source(),Ot=mt.target();if(Tt.css("display")!="none"&&Ot.css("display")!="none")if(A.quality=="draft"){var It=pt.get(Tt.id()),Wt=pt.get(Ot.id()),Pt=[],Yt=[];if(Tt.isParent()){var bt=i.calcBoundingBox(Tt,Y[et].xCoords,Y[et].yCoords,pt);Pt.push(bt.topLeftX+bt.width/2),Pt.push(bt.topLeftY+bt.height/2)}else Pt.push(Y[et].xCoords[It]),Pt.push(Y[et].yCoords[It]);if(Ot.isParent()){var G=i.calcBoundingBox(Ot,Y[et].xCoords,Y[et].yCoords,pt);Yt.push(G.topLeftX+G.width/2),Yt.push(G.topLeftY+G.height/2)}else Yt.push(Y[et].xCoords[Wt]),Yt.push(Y[et].yCoords[Wt]);Et.edges.push({startX:Pt[0],startY:Pt[1],endX:Yt[0],endY:Yt[1]})}else k[et][Tt.id()]&&k[et][Ot.id()]&&Et.edges.push({startX:k[et][Tt.id()].getCenterX(),startY:k[et][Tt.id()].getCenterY(),endX:k[et][Ot.id()].getCenterX(),endY:k[et][Ot.id()].getCenterY()})}),Et.nodes.length>0&&(J.push(Et),X.add(et))}});var Lt=T.packComponents(J,A.randomize).shifts;if(A.quality=="draft")Y.forEach(function(nt,et){var pt=nt.xCoords.map(function(Ct){return Ct+Lt[et].dx}),Et=nt.yCoords.map(function(Ct){return Ct+Lt[et].dy});nt.xCoords=pt,nt.yCoords=Et});else{var St=0;X.forEach(function(nt){Object.keys(k[nt]).forEach(function(et){var pt=k[nt][et];pt.setCenter(pt.getCenterX()+Lt[St].dx,pt.getCenterY()+Lt[St].dy)}),St++})}}}else{var D=A.eles.boundingBox();if(E.push({x:D.x1+D.w/2,y:D.y1+D.h/2}),A.randomize){var O=h(A);Y.push(O)}A.quality=="default"||A.quality=="proof"?(k.push(l(A,Y[0])),i.relocateComponent(E[0],k[0],A)):i.relocateComponent(E[0],Y[0],A)}var Q=function(et,pt){if(A.quality=="default"||A.quality=="proof"){typeof et=="number"&&(et=pt);var Et=void 0,Ct=void 0,mt=et.data("id");return k.forEach(function(Ot){mt in Ot&&(Et={x:Ot[mt].getRect().getCenterX(),y:Ot[mt].getRect().getCenterY()},Ct=Ot[mt])}),A.nodeDimensionsIncludeLabels&&(Ct.labelWidth&&(Ct.labelPosHorizontal=="left"?Et.x+=Ct.labelWidth/2:Ct.labelPosHorizontal=="right"&&(Et.x-=Ct.labelWidth/2)),Ct.labelHeight&&(Ct.labelPosVertical=="top"?Et.y+=Ct.labelHeight/2:Ct.labelPosVertical=="bottom"&&(Et.y-=Ct.labelHeight/2))),Et==null&&(Et={x:et.position("x"),y:et.position("y")}),{x:Et.x,y:Et.y}}else{var Tt=void 0;return Y.forEach(function(Ot){var It=Ot.nodeIndexes.get(et.id());It!=null&&(Tt={x:Ot.xCoords[It],y:Ot.yCoords[It]})}),Tt==null&&(Tt={x:et.position("x"),y:et.position("y")}),{x:Tt.x,y:Tt.y}}};if(A.quality=="default"||A.quality=="proof"||A.randomize){var Ut=i.calcParentsWithoutChildren(S,B),wt=B.filter(function(nt){return nt.css("display")=="none"});A.eles=B.not(wt),B.nodes().not(":parent").not(wt).layoutPositions(R,A,Q),Ut.length>0&&Ut.forEach(function(nt){nt.position(Q(nt))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),p})();n.exports=y}),657:((n,e,a)=>{var c=a(548),t=a(140).layoutBase.Matrix,g=a(140).layoutBase.SVD,i=function(h){var f=h.cy,l=h.eles,L=l.nodes(),y=l.nodes(":parent"),p=new Map,C=new Map,R=new Map,A=[],S=[],B=[],Y=[],tt=[],x=[],k=[],s=[],E=void 0,v=void 0,T=1e8,d=1e-9,D=h.piTol,O=h.samplingType,P=h.nodeSeparation,F=void 0,I=function(){for(var W=0,z=0,$=!1;z=ut;){q=K[ut++];for(var ot=A[q],it=0;itrt&&(rt=tt[at],vt=at)}return vt},_=function(W){var z=void 0;if(W){z=Math.floor(Math.random()*v),E=z;for(var K=0;K=1)break;rt=gt}for(var ot=0;ot=1)break;rt=gt}for(var dt=0;dt0&&(z.isParent()?A[W].push(R.get(z.id())):A[W].push(z.id()))})});var Ut=function(W){var z=C.get(W),$=void 0;p.get(W).forEach(function(K){f.getElementById(K).isParent()?$=R.get(K):$=K,A[z].push($),A[C.get($)].push(W)})},wt=!0,nt=!1,et=void 0;try{for(var pt=p.keys()[Symbol.iterator](),Et;!(wt=(Et=pt.next()).done);wt=!0){var Ct=Et.value;Ut(Ct)}}catch(H){nt=!0,et=H}finally{try{!wt&&pt.return&&pt.return()}finally{if(nt)throw et}}v=C.size;var mt=void 0;if(v>2){F=v{var c=a(212),t=function(i){i&&i("layout","fcose",c)};typeof cytoscape<"u"&&t(cytoscape),n.exports=t}),140:(n=>{n.exports=m})},N={};function u(n){var e=N[n];if(e!==void 0)return e.exports;var a=N[n]={exports:{}};return w[n](a,a.exports,u),a.exports}var o=u(579);return o})()})});var ir=ur(Je(),1);var Ke={L:"left",R:"right",T:"top",B:"bottom"},je={L:ct(m=>`${m},${m/2} 0,${m} 0,0`,"L"),R:ct(m=>`0,${m/2} ${m},0 ${m},${m}`,"R"),T:ct(m=>`0,0 ${m},0 ${m/2},${m}`,"T"),B:ct(m=>`${m/2},0 ${m},${m} 0,${m}`,"B")},fe={L:ct((m,w)=>m-w+2,"L"),R:ct((m,w)=>m-2,"R"),T:ct((m,w)=>m-w+2,"T"),B:ct((m,w)=>m-2,"B")},dr=ct(function(m){return Ht(m)?m==="L"?"R":"L":m==="T"?"B":"T"},"getOppositeArchitectureDirection"),_e=ct(function(m){let w=m;return w==="L"||w==="R"||w==="T"||w==="B"},"isArchitectureDirection"),Ht=ct(function(m){let w=m;return w==="L"||w==="R"},"isArchitectureDirectionX"),kt=ct(function(m){let w=m;return w==="T"||w==="B"},"isArchitectureDirectionY"),Me=ct(function(m,w){let N=Ht(m)&&kt(w),u=kt(m)&&Ht(w);return N||u},"isArchitectureDirectionXY"),vr=ct(function(m){let w=m[0],N=m[1],u=Ht(w)&&kt(N),o=kt(w)&&Ht(N);return u||o},"isArchitecturePairXY"),pr=ct(function(m){return m!=="LL"&&m!=="RR"&&m!=="TT"&&m!=="BB"},"isValidArchitectureDirectionPair"),Ae=ct(function(m,w){let N=`${m}${w}`;return pr(N)?N:void 0},"getArchitectureDirectionPair"),yr=ct(function([m,w],N){let u=N[0],o=N[1];return Ht(u)?kt(o)?[m+(u==="L"?-1:1),w+(o==="T"?1:-1)]:[m+(u==="L"?-1:1),w]:Ht(o)?[m+(o==="L"?1:-1),w+(u==="T"?1:-1)]:[m,w+(u==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),Er=ct(function(m){return m==="LT"||m==="TL"?[1,1]:m==="BL"||m==="LB"?[1,-1]:m==="BR"||m==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),mr=ct(function(m,w){return Me(m,w)?"bend":Ht(m)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),Tr=ct(function(m){return m.type==="service"},"isArchitectureService"),Nr=ct(function(m){return m.type==="junction"},"isArchitectureJunction"),tr=ct(m=>m.data(),"edgeData"),ee=ct(m=>m.data(),"nodeData"),Lr=Re.architecture,er=class{constructor(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.elements={},this.setAccTitle=Ge,this.getAccTitle=Ue,this.setDiagramTitle=He,this.getDiagramTitle=We,this.getAccDescription=Xe,this.setAccDescription=Ye,this.clear()}static{ct(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},Pe()}addService({id:m,icon:w,in:N,title:u,iconText:o}){if(this.registeredIds[m]!==void 0)throw new Error(`The service id [${m}] is already in use by another ${this.registeredIds[m]}`);if(N!==void 0){if(m===N)throw new Error(`The service [${m}] cannot be placed within itself`);if(this.registeredIds[N]===void 0)throw new Error(`The service [${m}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[N]==="node")throw new Error(`The service [${m}]'s parent is not a group`)}this.registeredIds[m]="node",this.nodes[m]={id:m,type:"service",icon:w,iconText:o,title:u,edges:[],in:N}}getServices(){return Object.values(this.nodes).filter(Tr)}addJunction({id:m,in:w}){this.registeredIds[m]="node",this.nodes[m]={id:m,type:"junction",edges:[],in:w}}getJunctions(){return Object.values(this.nodes).filter(Nr)}getNodes(){return Object.values(this.nodes)}getNode(m){return this.nodes[m]??null}addGroup({id:m,icon:w,in:N,title:u}){if(this.registeredIds?.[m]!==void 0)throw new Error(`The group id [${m}] is already in use by another ${this.registeredIds[m]}`);if(N!==void 0){if(m===N)throw new Error(`The group [${m}] cannot be placed within itself`);if(this.registeredIds?.[N]===void 0)throw new Error(`The group [${m}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[N]==="node")throw new Error(`The group [${m}]'s parent is not a group`)}this.registeredIds[m]="group",this.groups[m]={id:m,icon:w,title:u,in:N}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:m,rhsId:w,lhsDir:N,rhsDir:u,lhsInto:o,rhsInto:n,lhsGroup:e,rhsGroup:a,title:c}){if(!_e(N))throw new Error(`Invalid direction given for left hand side of edge ${m}--${w}. Expected (L,R,T,B) got ${String(N)}`);if(!_e(u))throw new Error(`Invalid direction given for right hand side of edge ${m}--${w}. Expected (L,R,T,B) got ${String(u)}`);if(this.nodes[m]===void 0&&this.groups[m]===void 0)throw new Error(`The left-hand id [${m}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[w]===void 0&&this.groups[w]===void 0)throw new Error(`The right-hand id [${w}] does not yet exist. Please create the service/group before declaring an edge to it.`);let t=this.nodes[m].in,g=this.nodes[w].in;if(e&&t&&g&&t==g)throw new Error(`The left-hand id [${m}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(a&&t&&g&&t==g)throw new Error(`The right-hand id [${w}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let i={lhsId:m,lhsDir:N,lhsInto:o,lhsGroup:e,rhsId:w,rhsDir:u,rhsInto:n,rhsGroup:a,title:c};this.edges.push(i),this.nodes[m]&&this.nodes[w]&&(this.nodes[m].edges.push(this.edges[this.edges.length-1]),this.nodes[w].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let m={},w=Object.entries(this.nodes).reduce((a,[c,t])=>(a[c]=t.edges.reduce((g,i)=>{let r=this.getNode(i.lhsId)?.in,h=this.getNode(i.rhsId)?.in;if(r&&h&&r!==h){let f=mr(i.lhsDir,i.rhsDir);f!=="bend"&&(m[r]??={},m[r][h]=f,m[h]??={},m[h][r]=f)}if(i.lhsId===c){let f=Ae(i.lhsDir,i.rhsDir);f&&(g[f]=i.rhsId)}else{let f=Ae(i.rhsDir,i.lhsDir);f&&(g[f]=i.lhsId)}return g},{}),a),{}),N=Object.keys(w)[0],u={[N]:1},o=Object.keys(w).reduce((a,c)=>c===N?a:{...a,[c]:1},{}),n=ct(a=>{let c={[a]:[0,0]},t=[a];for(;t.length>0;){let g=t.shift();if(g){u[g]=1,delete o[g];let i=w[g],[r,h]=c[g];Object.entries(i).forEach(([f,l])=>{u[l]||(c[l]=yr([r,h],f),t.push(l))})}}return c},"BFS"),e=[n(N)];for(;Object.keys(o).length>0;)e.push(n(Object.keys(o)[0]));this.dataStructures={adjList:w,spatialMaps:e,groupAlignments:m}}return this.dataStructures}setElementForId(m,w){this.elements[m]=w}getElementById(m){return this.elements[m]}getConfig(){return Be({...Lr,...Se().architecture})}getConfigField(m){return this.getConfig()[m]}},Cr=ct((m,w)=>{qe(m,w),m.groups.map(N=>w.addGroup(N)),m.services.map(N=>w.addService({...N,type:"service"})),m.junctions.map(N=>w.addJunction({...N,type:"junction"})),m.edges.map(N=>w.addEdge(N))},"populateDb"),rr={parser:{yy:void 0},parse:ct(async m=>{let w=await Qe("architecture",m);ye.debug(w);let N=rr.parser?.yy;if(!(N instanceof er))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Cr(w,N)},"parse")},Ar=ct(m=>`
+ .edge {
+ stroke-width: ${m.archEdgeWidth};
+ stroke: ${m.archEdgeColor};
+ fill: none;
+ }
+
+ .arrow {
+ fill: ${m.archEdgeArrowColor};
+ }
+
+ .node-bkg {
+ fill: none;
+ stroke: ${m.archGroupBorderColor};
+ stroke-width: ${m.archGroupBorderWidth};
+ stroke-dasharray: 8;
+ }
+ .node-icon-text {
+ display: flex;
+ align-items: center;
+ }
+
+ .node-icon-text > div {
+ color: #fff;
+ margin: 1px;
+ height: fit-content;
+ text-align: center;
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ }
+`,"getStyles"),Mr=Ar,te=ct(m=>` ${m} `,"wrapIcon"),ne={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:te(' ')},server:{body:te(' ')},disk:{body:te(' ')},internet:{body:te(' ')},cloud:{body:te(' ')},unknown:Ze,blank:{body:te("")}}},wr=ct(async function(m,w,N){let u=N.getConfigField("padding"),o=N.getConfigField("iconSize"),n=o/2,e=o/6,a=e/2;await Promise.all(w.edges().map(async c=>{let{source:t,sourceDir:g,sourceArrow:i,sourceGroup:r,target:h,targetDir:f,targetArrow:l,targetGroup:L,label:y}=tr(c),{x:p,y:C}=c[0].sourceEndpoint(),{x:R,y:A}=c[0].midpoint(),{x:S,y:B}=c[0].targetEndpoint(),Y=u+4;if(r&&(Ht(g)?p+=g==="L"?-Y:Y:C+=g==="T"?-Y:Y+18),L&&(Ht(f)?S+=f==="L"?-Y:Y:B+=f==="T"?-Y:Y+18),!r&&N.getNode(t)?.type==="junction"&&(Ht(g)?p+=g==="L"?n:-n:C+=g==="T"?n:-n),!L&&N.getNode(h)?.type==="junction"&&(Ht(f)?S+=f==="L"?n:-n:B+=f==="T"?n:-n),c[0]._private.rscratch){let tt=m.insert("g");if(tt.insert("path").attr("d",`M ${p},${C} L ${R},${A} L${S},${B} `).attr("class","edge").attr("id",$e(t,h,{prefix:"L"})),i){let x=Ht(g)?fe[g](p,e):p-a,k=kt(g)?fe[g](C,e):C-a;tt.insert("polygon").attr("points",je[g](e)).attr("transform",`translate(${x},${k})`).attr("class","arrow")}if(l){let x=Ht(f)?fe[f](S,e):S-a,k=kt(f)?fe[f](B,e):B-a;tt.insert("polygon").attr("points",je[f](e)).attr("transform",`translate(${x},${k})`).attr("class","arrow")}if(y){let x=Me(g,f)?"XY":Ht(g)?"X":"Y",k=0;x==="X"?k=Math.abs(p-S):x==="Y"?k=Math.abs(C-B)/1.5:k=Math.abs(p-S)/2;let s=tt.append("g");if(await le(s,y,{useHtmlLabels:!1,width:k,classes:"architecture-service-label"},se()),s.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),x==="X")s.attr("transform","translate("+R+", "+A+")");else if(x==="Y")s.attr("transform","translate("+R+", "+A+") rotate(-90)");else if(x==="XY"){let E=Ae(g,f);if(E&&vr(E)){let v=s.node().getBoundingClientRect(),[T,d]=Er(E);s.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*T*d*45})`);let D=s.node().getBoundingClientRect();s.attr("transform",`
+ translate(${R}, ${A-v.height/2})
+ translate(${T*D.width/2}, ${d*D.height/2})
+ rotate(${-1*T*d*45}, 0, ${v.height/2})
+ `)}}}}}))},"drawEdges"),Or=ct(async function(m,w,N){let o=N.getConfigField("padding")*.75,n=N.getConfigField("fontSize"),a=N.getConfigField("iconSize")/2;await Promise.all(w.nodes().map(async c=>{let t=ee(c);if(t.type==="group"){let{h:g,w:i,x1:r,y1:h}=c.boundingBox(),f=m.append("rect");f.attr("id",`group-${t.id}`).attr("x",r+a).attr("y",h+a).attr("width",i).attr("height",g).attr("class","node-bkg");let l=m.append("g"),L=r,y=h;if(t.icon){let p=l.append("g");p.html(`${await he(t.icon,{height:o,width:o,fallbackPrefix:ne.prefix})} `),p.attr("transform","translate("+(L+a+1)+", "+(y+a+1)+")"),L+=o,y+=n/2-1-2}if(t.label){let p=l.append("g");await le(p,t.label,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},se()),p.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),p.attr("transform","translate("+(L+a+4)+", "+(y+a+2)+")")}N.setElementForId(t.id,f)}}))},"drawGroups"),Dr=ct(async function(m,w,N){let u=se();for(let o of N){let n=w.append("g"),e=m.getConfigField("iconSize");if(o.title){let g=n.append("g");await le(g,o.title,{useHtmlLabels:!1,width:e*1.5,classes:"architecture-service-label"},u),g.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),g.attr("transform","translate("+e/2+", "+e+")")}let a=n.append("g");if(o.icon)a.html(`${await he(o.icon,{height:e,width:e,fallbackPrefix:ne.prefix})} `);else if(o.iconText){a.html(`${await he("blank",{height:e,width:e,fallbackPrefix:ne.prefix})} `);let r=a.append("g").append("foreignObject").attr("width",e).attr("height",e).append("div").attr("class","node-icon-text").attr("style",`height: ${e}px;`).append("div").html(Fe(o.iconText,u)),h=parseInt(window.getComputedStyle(r.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;r.attr("style",`-webkit-line-clamp: ${Math.floor((e-2)/h)};`)}else a.append("path").attr("class","node-bkg").attr("id","node-"+o.id).attr("d",`M0 ${e} v${-e} q0,-5 5,-5 h${e} q5,0 5,5 v${e} H0 Z`);n.attr("id",`service-${o.id}`).attr("class","architecture-service");let{width:c,height:t}=n.node().getBBox();o.width=c,o.height=t,m.setElementForId(o.id,n)}return 0},"drawServices"),xr=ct(function(m,w,N){N.forEach(u=>{let o=w.append("g"),n=m.getConfigField("iconSize");o.append("g").append("rect").attr("id","node-"+u.id).attr("fill-opacity","0").attr("width",n).attr("height",n),o.attr("class","architecture-junction");let{width:a,height:c}=o._groups[0][0].getBBox();o.width=a,o.height=c,m.setElementForId(u.id,o)})},"drawJunctions");ke([{name:ne.prefix,icons:ne}]);Ee.use(ir.default);function ar(m,w,N){m.forEach(u=>{w.add({group:"nodes",data:{type:"service",id:u.id,icon:u.icon,label:u.title,parent:u.in,width:N.getConfigField("iconSize"),height:N.getConfigField("iconSize")},classes:"node-service"})})}ct(ar,"addServices");function nr(m,w,N){m.forEach(u=>{w.add({group:"nodes",data:{type:"junction",id:u.id,parent:u.in,width:N.getConfigField("iconSize"),height:N.getConfigField("iconSize")},classes:"node-junction"})})}ct(nr,"addJunctions");function or(m,w){w.nodes().map(N=>{let u=ee(N);if(u.type==="group")return;u.x=N.position().x,u.y=N.position().y,m.getElementById(u.id).attr("transform","translate("+(u.x||0)+","+(u.y||0)+")")})}ct(or,"positionNodes");function sr(m,w){m.forEach(N=>{w.add({group:"nodes",data:{type:"group",id:N.id,icon:N.icon,label:N.title,parent:N.in},classes:"node-group"})})}ct(sr,"addGroups");function hr(m,w){m.forEach(N=>{let{lhsId:u,rhsId:o,lhsInto:n,lhsGroup:e,rhsInto:a,lhsDir:c,rhsDir:t,rhsGroup:g,title:i}=N,r=Me(N.lhsDir,N.rhsDir)?"segments":"straight",h={id:`${u}-${o}`,label:i,source:u,sourceDir:c,sourceArrow:n,sourceGroup:e,sourceEndpoint:c==="L"?"0 50%":c==="R"?"100% 50%":c==="T"?"50% 0":"50% 100%",target:o,targetDir:t,targetArrow:a,targetGroup:g,targetEndpoint:t==="L"?"0 50%":t==="R"?"100% 50%":t==="T"?"50% 0":"50% 100%"};w.add({group:"edges",data:h,classes:r})})}ct(hr,"addEdges");function lr(m,w,N){let u=ct((a,c)=>Object.entries(a).reduce((t,[g,i])=>{let r=0,h=Object.entries(i);if(h.length===1)return t[g]=h[0][1],t;for(let f=0;f{let c={},t={};return Object.entries(a).forEach(([g,[i,r]])=>{let h=m.getNode(g)?.in??"default";c[r]??={},c[r][h]??=[],c[r][h].push(g),t[i]??={},t[i][h]??=[],t[i][h].push(g)}),{horiz:Object.values(u(c,"horizontal")).filter(g=>g.length>1),vert:Object.values(u(t,"vertical")).filter(g=>g.length>1)}}),[n,e]=o.reduce(([a,c],{horiz:t,vert:g})=>[[...a,...t],[...c,...g]],[[],[]]);return{horizontal:n,vertical:e}}ct(lr,"getAlignments");function fr(m,w){let N=[],u=ct(n=>`${n[0]},${n[1]}`,"posToStr"),o=ct(n=>n.split(",").map(e=>parseInt(e)),"strToPos");return m.forEach(n=>{let e=Object.fromEntries(Object.entries(n).map(([g,i])=>[u(i),g])),a=[u([0,0])],c={},t={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;a.length>0;){let g=a.shift();if(g){c[g]=1;let i=e[g];if(i){let r=o(g);Object.entries(t).forEach(([h,f])=>{let l=u([r[0]+f[0],r[1]+f[1]]),L=e[l];L&&!c[l]&&(a.push(l),N.push({[Ke[h]]:L,[Ke[dr(h)]]:i,gap:1.5*w.getConfigField("iconSize")}))})}}}}),N}ct(fr,"getRelativeConstraints");function cr(m,w,N,u,o,{spatialMaps:n,groupAlignments:e}){return new Promise(a=>{let c=Ve("body").append("div").attr("id","cy").attr("style","display:none"),t=Ee({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${o.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${o.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});c.remove(),sr(N,t),ar(m,t,o),nr(w,t,o),hr(u,t);let g=lr(o,n,e),i=fr(n,o),r=t.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(h){let[f,l]=h.connectedNodes(),{parent:L}=ee(f),{parent:y}=ee(l);return L===y?1.5*o.getConfigField("iconSize"):.5*o.getConfigField("iconSize")},edgeElasticity(h){let[f,l]=h.connectedNodes(),{parent:L}=ee(f),{parent:y}=ee(l);return L===y?.45:.001},alignmentConstraint:g,relativePlacementConstraint:i});r.one("layoutstop",()=>{function h(f,l,L,y){let p,C,{x:R,y:A}=f,{x:S,y:B}=l;C=(y-A+(R-L)*(A-B)/(R-S))/Math.sqrt(1+Math.pow((A-B)/(R-S),2)),p=Math.sqrt(Math.pow(y-A,2)+Math.pow(L-R,2)-Math.pow(C,2));let Y=Math.sqrt(Math.pow(S-R,2)+Math.pow(B-A,2));p=p/Y;let tt=(S-R)*(y-A)-(B-A)*(L-R);switch(!0){case tt>=0:tt=1;break;case tt<0:tt=-1;break}let x=(S-R)*(L-R)+(B-A)*(y-A);switch(!0){case x>=0:x=1;break;case x<0:x=-1;break}return C=Math.abs(C)*tt,p=p*x,{distances:C,weights:p}}ct(h,"getSegmentWeights"),t.startBatch();for(let f of Object.values(t.edges()))if(f.data?.()){let{x:l,y:L}=f.source().position(),{x:y,y:p}=f.target().position();if(l!==y&&L!==p){let C=f.sourceEndpoint(),R=f.targetEndpoint(),{sourceDir:A}=tr(f),[S,B]=kt(A)?[C.x,R.y]:[R.x,C.y],{weights:Y,distances:tt}=h(C,R,S,B);f.style("segment-distances",tt),f.style("segment-weights",Y)}}t.endBatch(),r.run()}),r.run(),t.ready(h=>{ye.info("Ready",h),a(t)})})}ct(cr,"layoutArchitecture");var Ir=ct(async(m,w,N,u)=>{let o=u.db,n=o.getServices(),e=o.getJunctions(),a=o.getGroups(),c=o.getEdges(),t=o.getDataStructures(),g=ze(w),i=g.append("g");i.attr("class","architecture-edges");let r=g.append("g");r.attr("class","architecture-services");let h=g.append("g");h.attr("class","architecture-groups"),await Dr(o,r,n),xr(o,r,e);let f=await cr(n,e,a,c,o,t);await wr(i,f,o),await Or(h,f,o),or(o,f),be(void 0,g,o.getConfigField("padding"),o.getConfigField("useMaxWidth"))},"draw"),Rr={draw:Ir},Wr={parser:rr,get db(){return new er},renderer:Rr,styles:Mr};export{Wr as diagram};
+//# sourceMappingURL=architectureDiagram-VXUJARFQ-H4V63UKK.min.js.map
diff --git a/docs/public/architectureDiagram-VXUJARFQ-H4V63UKK.min.js.map b/docs/public/architectureDiagram-VXUJARFQ-H4V63UKK.min.js.map
new file mode 100755
index 0000000..7ce83b0
--- /dev/null
+++ b/docs/public/architectureDiagram-VXUJARFQ-H4V63UKK.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/cytoscape-fcose/node_modules/layout-base/layout-base.js", "../../node_modules/cytoscape-fcose/node_modules/cose-base/cose-base.js", "../../node_modules/cytoscape-fcose/cytoscape-fcose.js", "../../node_modules/mermaid/dist/chunks/mermaid.core/architectureDiagram-VXUJARFQ.mjs"],
+ "sourcesContent": ["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"layoutBase\"] = factory();\n\telse\n\t\troot[\"layoutBase\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 28);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LayoutConstants() {}\n\n/**\r\n * Layout Quality: 0:draft, 1:default, 2:proof\r\n */\nLayoutConstants.QUALITY = 1;\n\n/**\r\n * Default parameters\r\n */\nLayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;\nLayoutConstants.DEFAULT_INCREMENTAL = false;\nLayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;\nLayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;\nLayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;\nLayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;\n\n// -----------------------------------------------------------------------------\n// Section: General other constants\n// -----------------------------------------------------------------------------\n/*\r\n * Margins of a graph to be applied on bouding rectangle of its contents. We\r\n * assume margins on all four sides to be uniform.\r\n */\nLayoutConstants.DEFAULT_GRAPH_MARGIN = 15;\n\n/*\r\n * Whether to consider labels in node dimensions or not\r\n */\nLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_SIZE = 40;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;\n\n/*\r\n * Empty compound node size. When a compound node is empty, its both\r\n * dimensions should be of this value.\r\n */\nLayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;\n\n/*\r\n * Minimum length that an edge should take during layout\r\n */\nLayoutConstants.MIN_EDGE_LENGTH = 1;\n\n/*\r\n * World boundaries that layout operates on\r\n */\nLayoutConstants.WORLD_BOUNDARY = 1000000;\n\n/*\r\n * World boundaries that random positioning can be performed with\r\n */\nLayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;\n\n/*\r\n * Coordinates of the world center\r\n */\nLayoutConstants.WORLD_CENTER_X = 1200;\nLayoutConstants.WORLD_CENTER_Y = 900;\n\nmodule.exports = LayoutConstants;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction LEdge(source, target, vEdge) {\n LGraphObject.call(this, vEdge);\n\n this.isOverlapingSourceAndTarget = false;\n this.vGraphObject = vEdge;\n this.bendpoints = [];\n this.source = source;\n this.target = target;\n}\n\nLEdge.prototype = Object.create(LGraphObject.prototype);\n\nfor (var prop in LGraphObject) {\n LEdge[prop] = LGraphObject[prop];\n}\n\nLEdge.prototype.getSource = function () {\n return this.source;\n};\n\nLEdge.prototype.getTarget = function () {\n return this.target;\n};\n\nLEdge.prototype.isInterGraph = function () {\n return this.isInterGraph;\n};\n\nLEdge.prototype.getLength = function () {\n return this.length;\n};\n\nLEdge.prototype.isOverlapingSourceAndTarget = function () {\n return this.isOverlapingSourceAndTarget;\n};\n\nLEdge.prototype.getBendpoints = function () {\n return this.bendpoints;\n};\n\nLEdge.prototype.getLca = function () {\n return this.lca;\n};\n\nLEdge.prototype.getSourceInLca = function () {\n return this.sourceInLca;\n};\n\nLEdge.prototype.getTargetInLca = function () {\n return this.targetInLca;\n};\n\nLEdge.prototype.getOtherEnd = function (node) {\n if (this.source === node) {\n return this.target;\n } else if (this.target === node) {\n return this.source;\n } else {\n throw \"Node is not incident with this edge\";\n }\n};\n\nLEdge.prototype.getOtherEndInGraph = function (node, graph) {\n var otherEnd = this.getOtherEnd(node);\n var root = graph.getGraphManager().getRoot();\n\n while (true) {\n if (otherEnd.getOwner() == graph) {\n return otherEnd;\n }\n\n if (otherEnd.getOwner() == root) {\n break;\n }\n\n otherEnd = otherEnd.getOwner().getParent();\n }\n\n return null;\n};\n\nLEdge.prototype.updateLength = function () {\n var clipPointCoordinates = new Array(4);\n\n this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);\n\n if (!this.isOverlapingSourceAndTarget) {\n this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];\n this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n }\n};\n\nLEdge.prototype.updateLengthSimple = function () {\n this.lengthX = this.target.getCenterX() - this.source.getCenterX();\n this.lengthY = this.target.getCenterY() - this.source.getCenterY();\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n};\n\nmodule.exports = LEdge;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LGraphObject(vGraphObject) {\n this.vGraphObject = vGraphObject;\n}\n\nmodule.exports = LGraphObject;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar RectangleD = __webpack_require__(13);\nvar LayoutConstants = __webpack_require__(0);\nvar RandomSeed = __webpack_require__(16);\nvar PointD = __webpack_require__(5);\n\nfunction LNode(gm, loc, size, vNode) {\n //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)\n if (size == null && vNode == null) {\n vNode = loc;\n }\n\n LGraphObject.call(this, vNode);\n\n //Alternative constructor 2 : LNode(Layout layout, Object vNode)\n if (gm.graphManager != null) gm = gm.graphManager;\n\n this.estimatedSize = Integer.MIN_VALUE;\n this.inclusionTreeDepth = Integer.MAX_VALUE;\n this.vGraphObject = vNode;\n this.edges = [];\n this.graphManager = gm;\n\n if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();\n}\n\nLNode.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LNode[prop] = LGraphObject[prop];\n}\n\nLNode.prototype.getEdges = function () {\n return this.edges;\n};\n\nLNode.prototype.getChild = function () {\n return this.child;\n};\n\nLNode.prototype.getOwner = function () {\n // if (this.owner != null) {\n // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {\n // throw \"assert failed\";\n // }\n // }\n\n return this.owner;\n};\n\nLNode.prototype.getWidth = function () {\n return this.rect.width;\n};\n\nLNode.prototype.setWidth = function (width) {\n this.rect.width = width;\n};\n\nLNode.prototype.getHeight = function () {\n return this.rect.height;\n};\n\nLNode.prototype.setHeight = function (height) {\n this.rect.height = height;\n};\n\nLNode.prototype.getCenterX = function () {\n return this.rect.x + this.rect.width / 2;\n};\n\nLNode.prototype.getCenterY = function () {\n return this.rect.y + this.rect.height / 2;\n};\n\nLNode.prototype.getCenter = function () {\n return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);\n};\n\nLNode.prototype.getLocation = function () {\n return new PointD(this.rect.x, this.rect.y);\n};\n\nLNode.prototype.getRect = function () {\n return this.rect;\n};\n\nLNode.prototype.getDiagonal = function () {\n return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);\n};\n\n/**\n * This method returns half the diagonal length of this node.\n */\nLNode.prototype.getHalfTheDiagonal = function () {\n return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;\n};\n\nLNode.prototype.setRect = function (upperLeft, dimension) {\n this.rect.x = upperLeft.x;\n this.rect.y = upperLeft.y;\n this.rect.width = dimension.width;\n this.rect.height = dimension.height;\n};\n\nLNode.prototype.setCenter = function (cx, cy) {\n this.rect.x = cx - this.rect.width / 2;\n this.rect.y = cy - this.rect.height / 2;\n};\n\nLNode.prototype.setLocation = function (x, y) {\n this.rect.x = x;\n this.rect.y = y;\n};\n\nLNode.prototype.moveBy = function (dx, dy) {\n this.rect.x += dx;\n this.rect.y += dy;\n};\n\nLNode.prototype.getEdgeListToNode = function (to) {\n var edgeList = [];\n var edge;\n var self = this;\n\n self.edges.forEach(function (edge) {\n\n if (edge.target == to) {\n if (edge.source != self) throw \"Incorrect edge source!\";\n\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getEdgesBetween = function (other) {\n var edgeList = [];\n var edge;\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (!(edge.source == self || edge.target == self)) throw \"Incorrect edge source and/or target\";\n\n if (edge.target == other || edge.source == other) {\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getNeighborsList = function () {\n var neighbors = new Set();\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (edge.source == self) {\n neighbors.add(edge.target);\n } else {\n if (edge.target != self) {\n throw \"Incorrect incidency!\";\n }\n\n neighbors.add(edge.source);\n }\n });\n\n return neighbors;\n};\n\nLNode.prototype.withChildren = function () {\n var withNeighborsList = new Set();\n var childNode;\n var children;\n\n withNeighborsList.add(this);\n\n if (this.child != null) {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n children = childNode.withChildren();\n children.forEach(function (node) {\n withNeighborsList.add(node);\n });\n }\n }\n\n return withNeighborsList;\n};\n\nLNode.prototype.getNoOfChildren = function () {\n var noOfChildren = 0;\n var childNode;\n\n if (this.child == null) {\n noOfChildren = 1;\n } else {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n\n noOfChildren += childNode.getNoOfChildren();\n }\n }\n\n if (noOfChildren == 0) {\n noOfChildren = 1;\n }\n return noOfChildren;\n};\n\nLNode.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLNode.prototype.calcEstimatedSize = function () {\n if (this.child == null) {\n return this.estimatedSize = (this.rect.width + this.rect.height) / 2;\n } else {\n this.estimatedSize = this.child.calcEstimatedSize();\n this.rect.width = this.estimatedSize;\n this.rect.height = this.estimatedSize;\n\n return this.estimatedSize;\n }\n};\n\nLNode.prototype.scatter = function () {\n var randomCenterX;\n var randomCenterY;\n\n var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;\n\n var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;\n\n this.rect.x = randomCenterX;\n this.rect.y = randomCenterY;\n};\n\nLNode.prototype.updateBounds = function () {\n if (this.getChild() == null) {\n throw \"assert failed\";\n }\n if (this.getChild().getNodes().length != 0) {\n // wrap the children nodes by re-arranging the boundaries\n var childGraph = this.getChild();\n childGraph.updateBounds(true);\n\n this.rect.x = childGraph.getLeft();\n this.rect.y = childGraph.getTop();\n\n this.setWidth(childGraph.getRight() - childGraph.getLeft());\n this.setHeight(childGraph.getBottom() - childGraph.getTop());\n\n // Update compound bounds considering its label properties \n if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = childGraph.getRight() - childGraph.getLeft();\n var height = childGraph.getBottom() - childGraph.getTop();\n\n if (this.labelWidth) {\n if (this.labelPosHorizontal == \"left\") {\n this.rect.x -= this.labelWidth;\n this.setWidth(width + this.labelWidth);\n } else if (this.labelPosHorizontal == \"center\" && this.labelWidth > width) {\n this.rect.x -= (this.labelWidth - width) / 2;\n this.setWidth(this.labelWidth);\n } else if (this.labelPosHorizontal == \"right\") {\n this.setWidth(width + this.labelWidth);\n }\n }\n\n if (this.labelHeight) {\n if (this.labelPosVertical == \"top\") {\n this.rect.y -= this.labelHeight;\n this.setHeight(height + this.labelHeight);\n } else if (this.labelPosVertical == \"center\" && this.labelHeight > height) {\n this.rect.y -= (this.labelHeight - height) / 2;\n this.setHeight(this.labelHeight);\n } else if (this.labelPosVertical == \"bottom\") {\n this.setHeight(height + this.labelHeight);\n }\n }\n }\n }\n};\n\nLNode.prototype.getInclusionTreeDepth = function () {\n if (this.inclusionTreeDepth == Integer.MAX_VALUE) {\n throw \"assert failed\";\n }\n return this.inclusionTreeDepth;\n};\n\nLNode.prototype.transform = function (trans) {\n var left = this.rect.x;\n\n if (left > LayoutConstants.WORLD_BOUNDARY) {\n left = LayoutConstants.WORLD_BOUNDARY;\n } else if (left < -LayoutConstants.WORLD_BOUNDARY) {\n left = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var top = this.rect.y;\n\n if (top > LayoutConstants.WORLD_BOUNDARY) {\n top = LayoutConstants.WORLD_BOUNDARY;\n } else if (top < -LayoutConstants.WORLD_BOUNDARY) {\n top = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var leftTop = new PointD(left, top);\n var vLeftTop = trans.inverseTransformPoint(leftTop);\n\n this.setLocation(vLeftTop.x, vLeftTop.y);\n};\n\nLNode.prototype.getLeft = function () {\n return this.rect.x;\n};\n\nLNode.prototype.getRight = function () {\n return this.rect.x + this.rect.width;\n};\n\nLNode.prototype.getTop = function () {\n return this.rect.y;\n};\n\nLNode.prototype.getBottom = function () {\n return this.rect.y + this.rect.height;\n};\n\nLNode.prototype.getParent = function () {\n if (this.owner == null) {\n return null;\n }\n\n return this.owner.getParent();\n};\n\nmodule.exports = LNode;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0);\n\nfunction FDLayoutConstants() {}\n\n//FDLayoutConstants inherits static props in LayoutConstants\nfor (var prop in LayoutConstants) {\n FDLayoutConstants[prop] = LayoutConstants[prop];\n}\n\nFDLayoutConstants.MAX_ITERATIONS = 2500;\n\nFDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\nFDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;\nFDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;\nFDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;\nFDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;\nFDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;\nFDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;\nFDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;\nFDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;\nFDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;\nFDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;\nFDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\nFDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;\nFDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;\nFDLayoutConstants.MIN_EDGE_LENGTH = 1;\nFDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;\n\nmodule.exports = FDLayoutConstants;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction PointD(x, y) {\n if (x == null && y == null) {\n this.x = 0;\n this.y = 0;\n } else {\n this.x = x;\n this.y = y;\n }\n}\n\nPointD.prototype.getX = function () {\n return this.x;\n};\n\nPointD.prototype.getY = function () {\n return this.y;\n};\n\nPointD.prototype.setX = function (x) {\n this.x = x;\n};\n\nPointD.prototype.setY = function (y) {\n this.y = y;\n};\n\nPointD.prototype.getDifference = function (pt) {\n return new DimensionD(this.x - pt.x, this.y - pt.y);\n};\n\nPointD.prototype.getCopy = function () {\n return new PointD(this.x, this.y);\n};\n\nPointD.prototype.translate = function (dim) {\n this.x += dim.width;\n this.y += dim.height;\n return this;\n};\n\nmodule.exports = PointD;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(7);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar RectangleD = __webpack_require__(13);\nvar Point = __webpack_require__(12);\nvar LinkedList = __webpack_require__(11);\n\nfunction LGraph(parent, obj2, vGraph) {\n LGraphObject.call(this, vGraph);\n this.estimatedSize = Integer.MIN_VALUE;\n this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;\n this.edges = [];\n this.nodes = [];\n this.isConnected = false;\n this.parent = parent;\n\n if (obj2 != null && obj2 instanceof LGraphManager) {\n this.graphManager = obj2;\n } else if (obj2 != null && obj2 instanceof Layout) {\n this.graphManager = obj2.graphManager;\n }\n}\n\nLGraph.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LGraph[prop] = LGraphObject[prop];\n}\n\nLGraph.prototype.getNodes = function () {\n return this.nodes;\n};\n\nLGraph.prototype.getEdges = function () {\n return this.edges;\n};\n\nLGraph.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLGraph.prototype.getParent = function () {\n return this.parent;\n};\n\nLGraph.prototype.getLeft = function () {\n return this.left;\n};\n\nLGraph.prototype.getRight = function () {\n return this.right;\n};\n\nLGraph.prototype.getTop = function () {\n return this.top;\n};\n\nLGraph.prototype.getBottom = function () {\n return this.bottom;\n};\n\nLGraph.prototype.isConnected = function () {\n return this.isConnected;\n};\n\nLGraph.prototype.add = function (obj1, sourceNode, targetNode) {\n if (sourceNode == null && targetNode == null) {\n var newNode = obj1;\n if (this.graphManager == null) {\n throw \"Graph has no graph mgr!\";\n }\n if (this.getNodes().indexOf(newNode) > -1) {\n throw \"Node already in graph!\";\n }\n newNode.owner = this;\n this.getNodes().push(newNode);\n\n return newNode;\n } else {\n var newEdge = obj1;\n if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {\n throw \"Source or target not in graph!\";\n }\n\n if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {\n throw \"Both owners must be this graph!\";\n }\n\n if (sourceNode.owner != targetNode.owner) {\n return null;\n }\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // set as intra-graph edge\n newEdge.isInterGraph = false;\n\n // add to graph edge list\n this.getEdges().push(newEdge);\n\n // add to incidency lists\n sourceNode.edges.push(newEdge);\n\n if (targetNode != sourceNode) {\n targetNode.edges.push(newEdge);\n }\n\n return newEdge;\n }\n};\n\nLGraph.prototype.remove = function (obj) {\n var node = obj;\n if (obj instanceof LNode) {\n if (node == null) {\n throw \"Node is null!\";\n }\n if (!(node.owner != null && node.owner == this)) {\n throw \"Owner graph is invalid!\";\n }\n if (this.graphManager == null) {\n throw \"Owner graph manager is invalid!\";\n }\n // remove incident edges first (make a copy to do it safely)\n var edgesToBeRemoved = node.edges.slice();\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n\n if (edge.isInterGraph) {\n this.graphManager.remove(edge);\n } else {\n edge.source.owner.remove(edge);\n }\n }\n\n // now the node itself\n var index = this.nodes.indexOf(node);\n if (index == -1) {\n throw \"Node not in owner node list!\";\n }\n\n this.nodes.splice(index, 1);\n } else if (obj instanceof LEdge) {\n var edge = obj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {\n throw \"Source and/or target owner is invalid!\";\n }\n\n var sourceIndex = edge.source.edges.indexOf(edge);\n var targetIndex = edge.target.edges.indexOf(edge);\n if (!(sourceIndex > -1 && targetIndex > -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n edge.source.edges.splice(sourceIndex, 1);\n\n if (edge.target != edge.source) {\n edge.target.edges.splice(targetIndex, 1);\n }\n\n var index = edge.source.owner.getEdges().indexOf(edge);\n if (index == -1) {\n throw \"Not in owner's edge list!\";\n }\n\n edge.source.owner.getEdges().splice(index, 1);\n }\n};\n\nLGraph.prototype.updateLeftTop = function () {\n var top = Integer.MAX_VALUE;\n var left = Integer.MAX_VALUE;\n var nodeTop;\n var nodeLeft;\n var margin;\n\n var nodes = this.getNodes();\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeTop = lNode.getTop();\n nodeLeft = lNode.getLeft();\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n }\n\n // Do we have any nodes in this graph?\n if (top == Integer.MAX_VALUE) {\n return null;\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = left - margin;\n this.top = top - margin;\n\n // Apply the margins and return the result\n return new Point(this.left, this.top);\n};\n\nLGraph.prototype.updateBounds = function (recursive) {\n // calculate bounds\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n var margin;\n\n var nodes = this.nodes;\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n\n if (recursive && lNode.child != null) {\n lNode.updateBounds();\n }\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n if (left == Integer.MAX_VALUE) {\n this.left = this.parent.getLeft();\n this.right = this.parent.getRight();\n this.top = this.parent.getTop();\n this.bottom = this.parent.getBottom();\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = boundingRect.x - margin;\n this.right = boundingRect.x + boundingRect.width + margin;\n this.top = boundingRect.y - margin;\n this.bottom = boundingRect.y + boundingRect.height + margin;\n};\n\nLGraph.calculateBounds = function (nodes) {\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n\n return boundingRect;\n};\n\nLGraph.prototype.getInclusionTreeDepth = function () {\n if (this == this.graphManager.getRoot()) {\n return 1;\n } else {\n return this.parent.getInclusionTreeDepth();\n }\n};\n\nLGraph.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLGraph.prototype.calcEstimatedSize = function () {\n var size = 0;\n var nodes = this.nodes;\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n size += lNode.calcEstimatedSize();\n }\n\n if (size == 0) {\n this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;\n } else {\n this.estimatedSize = size / Math.sqrt(this.nodes.length);\n }\n\n return this.estimatedSize;\n};\n\nLGraph.prototype.updateConnected = function () {\n var self = this;\n if (this.nodes.length == 0) {\n this.isConnected = true;\n return;\n }\n\n var queue = new LinkedList();\n var visited = new Set();\n var currentNode = this.nodes[0];\n var neighborEdges;\n var currentNeighbor;\n var childrenOfNode = currentNode.withChildren();\n childrenOfNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n\n while (queue.length !== 0) {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n neighborEdges = currentNode.getEdges();\n var size = neighborEdges.length;\n for (var i = 0; i < size; i++) {\n var neighborEdge = neighborEdges[i];\n currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);\n\n // Add unvisited neighbors to the list to visit\n if (currentNeighbor != null && !visited.has(currentNeighbor)) {\n var childrenOfNeighbor = currentNeighbor.withChildren();\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n }\n }\n }\n\n this.isConnected = false;\n\n if (visited.size >= this.nodes.length) {\n var noOfVisitedInThisGraph = 0;\n\n visited.forEach(function (visitedNode) {\n if (visitedNode.owner == self) {\n noOfVisitedInThisGraph++;\n }\n });\n\n if (noOfVisitedInThisGraph == this.nodes.length) {\n this.isConnected = true;\n }\n }\n};\n\nmodule.exports = LGraph;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph;\nvar LEdge = __webpack_require__(1);\n\nfunction LGraphManager(layout) {\n LGraph = __webpack_require__(6); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.\n this.layout = layout;\n\n this.graphs = [];\n this.edges = [];\n}\n\nLGraphManager.prototype.addRoot = function () {\n var ngraph = this.layout.newGraph();\n var nnode = this.layout.newNode(null);\n var root = this.add(ngraph, nnode);\n this.setRootGraph(root);\n return this.rootGraph;\n};\n\nLGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {\n //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge\n if (newEdge == null && sourceNode == null && targetNode == null) {\n if (newGraph == null) {\n throw \"Graph is null!\";\n }\n if (parentNode == null) {\n throw \"Parent node is null!\";\n }\n if (this.graphs.indexOf(newGraph) > -1) {\n throw \"Graph already in this graph mgr!\";\n }\n\n this.graphs.push(newGraph);\n\n if (newGraph.parent != null) {\n throw \"Already has a parent!\";\n }\n if (parentNode.child != null) {\n throw \"Already has a child!\";\n }\n\n newGraph.parent = parentNode;\n parentNode.child = newGraph;\n\n return newGraph;\n } else {\n //change the order of the parameters\n targetNode = newEdge;\n sourceNode = parentNode;\n newEdge = newGraph;\n var sourceGraph = sourceNode.getOwner();\n var targetGraph = targetNode.getOwner();\n\n if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {\n throw \"Source not in this graph mgr!\";\n }\n if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {\n throw \"Target not in this graph mgr!\";\n }\n\n if (sourceGraph == targetGraph) {\n newEdge.isInterGraph = false;\n return sourceGraph.add(newEdge, sourceNode, targetNode);\n } else {\n newEdge.isInterGraph = true;\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // add edge to inter-graph edge list\n if (this.edges.indexOf(newEdge) > -1) {\n throw \"Edge already in inter-graph edge list!\";\n }\n\n this.edges.push(newEdge);\n\n // add edge to source and target incidency lists\n if (!(newEdge.source != null && newEdge.target != null)) {\n throw \"Edge source and/or target is null!\";\n }\n\n if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {\n throw \"Edge already in source and/or target incidency list!\";\n }\n\n newEdge.source.edges.push(newEdge);\n newEdge.target.edges.push(newEdge);\n\n return newEdge;\n }\n }\n};\n\nLGraphManager.prototype.remove = function (lObj) {\n if (lObj instanceof LGraph) {\n var graph = lObj;\n if (graph.getGraphManager() != this) {\n throw \"Graph not in this graph mgr\";\n }\n if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {\n throw \"Invalid parent node!\";\n }\n\n // first the edges (make a copy to do it safely)\n var edgesToBeRemoved = [];\n\n edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());\n\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n graph.remove(edge);\n }\n\n // then the nodes (make a copy to do it safely)\n var nodesToBeRemoved = [];\n\n nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());\n\n var node;\n s = nodesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n node = nodesToBeRemoved[i];\n graph.remove(node);\n }\n\n // check if graph is the root\n if (graph == this.rootGraph) {\n this.setRootGraph(null);\n }\n\n // now remove the graph itself\n var index = this.graphs.indexOf(graph);\n this.graphs.splice(index, 1);\n\n // also reset the parent of the graph\n graph.parent = null;\n } else if (lObj instanceof LEdge) {\n edge = lObj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!edge.isInterGraph) {\n throw \"Not an inter-graph edge!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n\n // remove edge from source and target nodes' incidency lists\n\n if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n var index = edge.source.edges.indexOf(edge);\n edge.source.edges.splice(index, 1);\n index = edge.target.edges.indexOf(edge);\n edge.target.edges.splice(index, 1);\n\n // remove edge from owner graph manager's inter-graph edge list\n\n if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {\n throw \"Edge owner graph or owner graph manager is null!\";\n }\n if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {\n throw \"Not in owner graph manager's edge list!\";\n }\n\n var index = edge.source.owner.getGraphManager().edges.indexOf(edge);\n edge.source.owner.getGraphManager().edges.splice(index, 1);\n }\n};\n\nLGraphManager.prototype.updateBounds = function () {\n this.rootGraph.updateBounds(true);\n};\n\nLGraphManager.prototype.getGraphs = function () {\n return this.graphs;\n};\n\nLGraphManager.prototype.getAllNodes = function () {\n if (this.allNodes == null) {\n var nodeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < s; i++) {\n nodeList = nodeList.concat(graphs[i].getNodes());\n }\n this.allNodes = nodeList;\n }\n return this.allNodes;\n};\n\nLGraphManager.prototype.resetAllNodes = function () {\n this.allNodes = null;\n};\n\nLGraphManager.prototype.resetAllEdges = function () {\n this.allEdges = null;\n};\n\nLGraphManager.prototype.resetAllNodesToApplyGravitation = function () {\n this.allNodesToApplyGravitation = null;\n};\n\nLGraphManager.prototype.getAllEdges = function () {\n if (this.allEdges == null) {\n var edgeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < graphs.length; i++) {\n edgeList = edgeList.concat(graphs[i].getEdges());\n }\n\n edgeList = edgeList.concat(this.edges);\n\n this.allEdges = edgeList;\n }\n return this.allEdges;\n};\n\nLGraphManager.prototype.getAllNodesToApplyGravitation = function () {\n return this.allNodesToApplyGravitation;\n};\n\nLGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {\n if (this.allNodesToApplyGravitation != null) {\n throw \"assert failed\";\n }\n\n this.allNodesToApplyGravitation = nodeList;\n};\n\nLGraphManager.prototype.getRoot = function () {\n return this.rootGraph;\n};\n\nLGraphManager.prototype.setRootGraph = function (graph) {\n if (graph.getGraphManager() != this) {\n throw \"Root not in this graph mgr!\";\n }\n\n this.rootGraph = graph;\n // root graph must have a root node associated with it for convenience\n if (graph.parent == null) {\n graph.parent = this.layout.newNode(\"Root node\");\n }\n};\n\nLGraphManager.prototype.getLayout = function () {\n return this.layout;\n};\n\nLGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {\n if (!(firstNode != null && secondNode != null)) {\n throw \"assert failed\";\n }\n\n if (firstNode == secondNode) {\n return true;\n }\n // Is second node an ancestor of the first one?\n var ownerGraph = firstNode.getOwner();\n var parentNode;\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == secondNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n // Is first node an ancestor of the second one?\n ownerGraph = secondNode.getOwner();\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == firstNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n\n return false;\n};\n\nLGraphManager.prototype.calcLowestCommonAncestors = function () {\n var edge;\n var sourceNode;\n var targetNode;\n var sourceAncestorGraph;\n var targetAncestorGraph;\n\n var edges = this.getAllEdges();\n var s = edges.length;\n for (var i = 0; i < s; i++) {\n edge = edges[i];\n\n sourceNode = edge.source;\n targetNode = edge.target;\n edge.lca = null;\n edge.sourceInLca = sourceNode;\n edge.targetInLca = targetNode;\n\n if (sourceNode == targetNode) {\n edge.lca = sourceNode.getOwner();\n continue;\n }\n\n sourceAncestorGraph = sourceNode.getOwner();\n\n while (edge.lca == null) {\n edge.targetInLca = targetNode;\n targetAncestorGraph = targetNode.getOwner();\n\n while (edge.lca == null) {\n if (targetAncestorGraph == sourceAncestorGraph) {\n edge.lca = targetAncestorGraph;\n break;\n }\n\n if (targetAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca != null) {\n throw \"assert failed\";\n }\n edge.targetInLca = targetAncestorGraph.getParent();\n targetAncestorGraph = edge.targetInLca.getOwner();\n }\n\n if (sourceAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca == null) {\n edge.sourceInLca = sourceAncestorGraph.getParent();\n sourceAncestorGraph = edge.sourceInLca.getOwner();\n }\n }\n\n if (edge.lca == null) {\n throw \"assert failed\";\n }\n }\n};\n\nLGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {\n if (firstNode == secondNode) {\n return firstNode.getOwner();\n }\n var firstOwnerGraph = firstNode.getOwner();\n\n do {\n if (firstOwnerGraph == null) {\n break;\n }\n var secondOwnerGraph = secondNode.getOwner();\n\n do {\n if (secondOwnerGraph == null) {\n break;\n }\n\n if (secondOwnerGraph == firstOwnerGraph) {\n return secondOwnerGraph;\n }\n secondOwnerGraph = secondOwnerGraph.getParent().getOwner();\n } while (true);\n\n firstOwnerGraph = firstOwnerGraph.getParent().getOwner();\n } while (true);\n\n return firstOwnerGraph;\n};\n\nLGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {\n if (graph == null && depth == null) {\n graph = this.rootGraph;\n depth = 1;\n }\n var node;\n\n var nodes = graph.getNodes();\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n node = nodes[i];\n node.inclusionTreeDepth = depth;\n\n if (node.child != null) {\n this.calcInclusionTreeDepths(node.child, depth + 1);\n }\n }\n};\n\nLGraphManager.prototype.includesInvalidEdge = function () {\n var edge;\n var edgesToRemove = [];\n\n var s = this.edges.length;\n for (var i = 0; i < s; i++) {\n edge = this.edges[i];\n\n if (this.isOneAncestorOfOther(edge.source, edge.target)) {\n edgesToRemove.push(edge);\n }\n }\n\n // Remove invalid edges from graph manager\n for (var i = 0; i < edgesToRemove.length; i++) {\n this.remove(edgesToRemove[i]);\n }\n\n // Invalid edges are cleared, so return false\n return false;\n};\n\nmodule.exports = LGraphManager;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This class maintains a list of static geometry related utility methods.\n *\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar Point = __webpack_require__(12);\n\nfunction IGeometry() {}\n\n/**\n * This method calculates *half* the amount in x and y directions of the two\n * input rectangles needed to separate them keeping their respective\n * positioning, and returns the result in the input array. An input\n * separation buffer added to the amount in both directions. We assume that\n * the two rectangles do intersect.\n */\nIGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {\n if (!rectA.intersects(rectB)) {\n throw \"assert failed\";\n }\n\n var directions = new Array(2);\n\n this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);\n\n overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);\n overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);\n\n // update the overlapping amounts for the following cases:\n if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {\n /* Case x.1:\n *\n * rectA\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectB\n */\n overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());\n } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {\n /* Case x.2:\n *\n * rectB\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectA\n */\n overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());\n }\n if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {\n /* Case y.1:\n * ________ rectA\n * |\n * |\n * ______|____ rectB\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());\n } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {\n /* Case y.2:\n * ________ rectB\n * |\n * |\n * ______|____ rectA\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());\n }\n\n // find slope of the line passes two centers\n var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));\n // if centers are overlapped\n if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {\n // assume the slope is 1 (45 degree)\n slope = 1.0;\n }\n\n var moveByY = slope * overlapAmount[0];\n var moveByX = overlapAmount[1] / slope;\n if (overlapAmount[0] < moveByX) {\n moveByX = overlapAmount[0];\n } else {\n moveByY = overlapAmount[1];\n }\n // return half the amount so that if each rectangle is moved by these\n // amounts in opposite directions, overlap will be resolved\n overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);\n overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);\n};\n\n/**\n * This method decides the separation direction of overlapping nodes\n *\n * if directions[0] = -1, then rectA goes left\n * if directions[0] = 1, then rectA goes right\n * if directions[1] = -1, then rectA goes up\n * if directions[1] = 1, then rectA goes down\n */\nIGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {\n if (rectA.getCenterX() < rectB.getCenterX()) {\n directions[0] = -1;\n } else {\n directions[0] = 1;\n }\n\n if (rectA.getCenterY() < rectB.getCenterY()) {\n directions[1] = -1;\n } else {\n directions[1] = 1;\n }\n};\n\n/**\n * This method calculates the intersection (clipping) points of the two\n * input rectangles with line segment defined by the centers of these two\n * rectangles. The clipping points are saved in the input double array and\n * whether or not the two rectangles overlap is returned.\n */\nIGeometry.getIntersection2 = function (rectA, rectB, result) {\n //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB\n var p1x = rectA.getCenterX();\n var p1y = rectA.getCenterY();\n var p2x = rectB.getCenterX();\n var p2y = rectB.getCenterY();\n\n //if two rectangles intersect, then clipping points are centers\n if (rectA.intersects(rectB)) {\n result[0] = p1x;\n result[1] = p1y;\n result[2] = p2x;\n result[3] = p2y;\n return true;\n }\n //variables for rectA\n var topLeftAx = rectA.getX();\n var topLeftAy = rectA.getY();\n var topRightAx = rectA.getRight();\n var bottomLeftAx = rectA.getX();\n var bottomLeftAy = rectA.getBottom();\n var bottomRightAx = rectA.getRight();\n var halfWidthA = rectA.getWidthHalf();\n var halfHeightA = rectA.getHeightHalf();\n //variables for rectB\n var topLeftBx = rectB.getX();\n var topLeftBy = rectB.getY();\n var topRightBx = rectB.getRight();\n var bottomLeftBx = rectB.getX();\n var bottomLeftBy = rectB.getBottom();\n var bottomRightBx = rectB.getRight();\n var halfWidthB = rectB.getWidthHalf();\n var halfHeightB = rectB.getHeightHalf();\n\n //flag whether clipping points are found\n var clipPointAFound = false;\n var clipPointBFound = false;\n\n // line is vertical\n if (p1x === p2x) {\n if (p1y > p2y) {\n result[0] = p1x;\n result[1] = topLeftAy;\n result[2] = p2x;\n result[3] = bottomLeftBy;\n return false;\n } else if (p1y < p2y) {\n result[0] = p1x;\n result[1] = bottomLeftAy;\n result[2] = p2x;\n result[3] = topLeftBy;\n return false;\n } else {\n //not line, return null;\n }\n }\n // line is horizontal\n else if (p1y === p2y) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = p1y;\n result[2] = topRightBx;\n result[3] = p2y;\n return false;\n } else if (p1x < p2x) {\n result[0] = topRightAx;\n result[1] = p1y;\n result[2] = topLeftBx;\n result[3] = p2y;\n return false;\n } else {\n //not valid line, return null;\n }\n } else {\n //slopes of rectA's and rectB's diagonals\n var slopeA = rectA.height / rectA.width;\n var slopeB = rectB.height / rectB.width;\n\n //slope of line between center of rectA and center of rectB\n var slopePrime = (p2y - p1y) / (p2x - p1x);\n var cardinalDirectionA = void 0;\n var cardinalDirectionB = void 0;\n var tempPointAx = void 0;\n var tempPointAy = void 0;\n var tempPointBx = void 0;\n var tempPointBy = void 0;\n\n //determine whether clipping point is the corner of nodeA\n if (-slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = bottomLeftAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = topRightAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n }\n } else if (slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = bottomRightAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n }\n }\n\n //determine whether clipping point is the corner of nodeB\n if (-slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = bottomLeftBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = topRightBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n }\n } else if (slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = topLeftBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = bottomRightBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n }\n }\n\n //if both clipping points are corners\n if (clipPointAFound && clipPointBFound) {\n return false;\n }\n\n //determine Cardinal Direction of rectangles\n if (p1x > p2x) {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);\n } else {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);\n }\n } else {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);\n } else {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);\n }\n }\n //calculate clipping Point if it is not found before\n if (!clipPointAFound) {\n switch (cardinalDirectionA) {\n case 1:\n tempPointAy = topLeftAy;\n tempPointAx = p1x + -halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 2:\n tempPointAx = bottomRightAx;\n tempPointAy = p1y + halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 3:\n tempPointAy = bottomLeftAy;\n tempPointAx = p1x + halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 4:\n tempPointAx = bottomLeftAx;\n tempPointAy = p1y + -halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n }\n }\n if (!clipPointBFound) {\n switch (cardinalDirectionB) {\n case 1:\n tempPointBy = topLeftBy;\n tempPointBx = p2x + -halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 2:\n tempPointBx = bottomRightBx;\n tempPointBy = p2y + halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 3:\n tempPointBy = bottomLeftBy;\n tempPointBx = p2x + halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 4:\n tempPointBx = bottomLeftBx;\n tempPointBy = p2y + -halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n }\n }\n }\n return false;\n};\n\n/**\n * This method returns in which cardinal direction does input point stays\n * 1: North\n * 2: East\n * 3: South\n * 4: West\n */\nIGeometry.getCardinalDirection = function (slope, slopePrime, line) {\n if (slope > slopePrime) {\n return line;\n } else {\n return 1 + line % 4;\n }\n};\n\n/**\n * This method calculates the intersection of the two lines defined by\n * point pairs (s1,s2) and (f1,f2).\n */\nIGeometry.getIntersection = function (s1, s2, f1, f2) {\n if (f2 == null) {\n return this.getIntersection2(s1, s2, f1);\n }\n\n var x1 = s1.x;\n var y1 = s1.y;\n var x2 = s2.x;\n var y2 = s2.y;\n var x3 = f1.x;\n var y3 = f1.y;\n var x4 = f2.x;\n var y4 = f2.y;\n var x = void 0,\n y = void 0; // intersection point\n var a1 = void 0,\n a2 = void 0,\n b1 = void 0,\n b2 = void 0,\n c1 = void 0,\n c2 = void 0; // coefficients of line eqns.\n var denom = void 0;\n\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }\n\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }\n\n denom = a1 * b2 - a2 * b1;\n\n if (denom === 0) {\n return null;\n }\n\n x = (b1 * c2 - b2 * c1) / denom;\n y = (a2 * c1 - a1 * c2) / denom;\n\n return new Point(x, y);\n};\n\n/**\n * This method finds and returns the angle of the vector from the + x-axis\n * in clockwise direction (compatible w/ Java coordinate system!).\n */\nIGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {\n var C_angle = void 0;\n\n if (Cx !== Nx) {\n C_angle = Math.atan((Ny - Cy) / (Nx - Cx));\n\n if (Nx < Cx) {\n C_angle += Math.PI;\n } else if (Ny < Cy) {\n C_angle += this.TWO_PI;\n }\n } else if (Ny < Cy) {\n C_angle = this.ONE_AND_HALF_PI; // 270 degrees\n } else {\n C_angle = this.HALF_PI; // 90 degrees\n }\n\n return C_angle;\n};\n\n/**\n * This method checks whether the given two line segments (one with point\n * p1 and p2, the other with point p3 and p4) intersect at a point other\n * than these points.\n */\nIGeometry.doIntersect = function (p1, p2, p3, p4) {\n var a = p1.x;\n var b = p1.y;\n var c = p2.x;\n var d = p2.y;\n var p = p3.x;\n var q = p3.y;\n var r = p4.x;\n var s = p4.y;\n var det = (c - a) * (s - q) - (r - p) * (d - b);\n\n if (det === 0) {\n return false;\n } else {\n var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;\n var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;\n return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;\n }\n};\n\n/**\n * This method checks and calculates the intersection of \n * a line segment and a circle.\n */\nIGeometry.findCircleLineIntersections = function (Ex, Ey, Lx, Ly, Cx, Cy, r) {\n\n // E is the starting point of the ray,\n // L is the end point of the ray,\n // C is the center of sphere you're testing against\n // r is the radius of that sphere\n\n // Compute:\n // d = L - E ( Direction vector of ray, from start to end )\n // f = E - C ( Vector from center sphere to ray start )\n\n // Then the intersection is found by..\n // P = E + t * d\n // This is a parametric equation:\n // Px = Ex + tdx\n // Py = Ey + tdy\n\n // get a, b, c values\n var a = (Lx - Ex) * (Lx - Ex) + (Ly - Ey) * (Ly - Ey);\n var b = 2 * ((Ex - Cx) * (Lx - Ex) + (Ey - Cy) * (Ly - Ey));\n var c = (Ex - Cx) * (Ex - Cx) + (Ey - Cy) * (Ey - Cy) - r * r;\n\n // get discriminant\n var disc = b * b - 4 * a * c;\n if (disc >= 0) {\n // insert into quadratic formula\n var t1 = (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n var t2 = (-b - Math.sqrt(b * b - 4 * a * c)) / (2 * a);\n var intersections = null;\n if (t1 >= 0 && t1 <= 1) {\n // t1 is the intersection, and it's closer than t2\n // (since t1 uses -b - discriminant)\n // Impale, Poke\n return [t1];\n }\n\n // here t1 didn't intersect so we are either started\n // inside the sphere or completely past it\n if (t2 >= 0 && t2 <= 1) {\n // ExitWound\n return [t2];\n }\n\n return intersections;\n } else return null;\n};\n\n// -----------------------------------------------------------------------------\n// Section: Class Constants\n// -----------------------------------------------------------------------------\n/**\n * Some useful pre-calculated constants\n */\nIGeometry.HALF_PI = 0.5 * Math.PI;\nIGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;\nIGeometry.TWO_PI = 2.0 * Math.PI;\nIGeometry.THREE_PI = 3.0 * Math.PI;\n\nmodule.exports = IGeometry;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction IMath() {}\n\n/**\n * This method returns the sign of the input value.\n */\nIMath.sign = function (value) {\n if (value > 0) {\n return 1;\n } else if (value < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\nIMath.floor = function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n};\n\nIMath.ceil = function (value) {\n return value < 0 ? Math.floor(value) : Math.ceil(value);\n};\n\nmodule.exports = IMath;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Integer() {}\n\nInteger.MAX_VALUE = 2147483647;\nInteger.MIN_VALUE = -2147483648;\n\nmodule.exports = Integer;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar nodeFrom = function nodeFrom(value) {\n return { value: value, next: null, prev: null };\n};\n\nvar add = function add(prev, node, next, list) {\n if (prev !== null) {\n prev.next = node;\n } else {\n list.head = node;\n }\n\n if (next !== null) {\n next.prev = node;\n } else {\n list.tail = node;\n }\n\n node.prev = prev;\n node.next = next;\n\n list.length++;\n\n return node;\n};\n\nvar _remove = function _remove(node, list) {\n var prev = node.prev,\n next = node.next;\n\n\n if (prev !== null) {\n prev.next = next;\n } else {\n list.head = next;\n }\n\n if (next !== null) {\n next.prev = prev;\n } else {\n list.tail = prev;\n }\n\n node.prev = node.next = null;\n\n list.length--;\n\n return node;\n};\n\nvar LinkedList = function () {\n function LinkedList(vals) {\n var _this = this;\n\n _classCallCheck(this, LinkedList);\n\n this.length = 0;\n this.head = null;\n this.tail = null;\n\n if (vals != null) {\n vals.forEach(function (v) {\n return _this.push(v);\n });\n }\n }\n\n _createClass(LinkedList, [{\n key: \"size\",\n value: function size() {\n return this.length;\n }\n }, {\n key: \"insertBefore\",\n value: function insertBefore(val, otherNode) {\n return add(otherNode.prev, nodeFrom(val), otherNode, this);\n }\n }, {\n key: \"insertAfter\",\n value: function insertAfter(val, otherNode) {\n return add(otherNode, nodeFrom(val), otherNode.next, this);\n }\n }, {\n key: \"insertNodeBefore\",\n value: function insertNodeBefore(newNode, otherNode) {\n return add(otherNode.prev, newNode, otherNode, this);\n }\n }, {\n key: \"insertNodeAfter\",\n value: function insertNodeAfter(newNode, otherNode) {\n return add(otherNode, newNode, otherNode.next, this);\n }\n }, {\n key: \"push\",\n value: function push(val) {\n return add(this.tail, nodeFrom(val), null, this);\n }\n }, {\n key: \"unshift\",\n value: function unshift(val) {\n return add(null, nodeFrom(val), this.head, this);\n }\n }, {\n key: \"remove\",\n value: function remove(node) {\n return _remove(node, this);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n return _remove(this.tail, this).value;\n }\n }, {\n key: \"popNode\",\n value: function popNode() {\n return _remove(this.tail, this);\n }\n }, {\n key: \"shift\",\n value: function shift() {\n return _remove(this.head, this).value;\n }\n }, {\n key: \"shiftNode\",\n value: function shiftNode() {\n return _remove(this.head, this);\n }\n }, {\n key: \"get_object_at\",\n value: function get_object_at(index) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n return current.value;\n }\n }\n }, {\n key: \"set_object_at\",\n value: function set_object_at(index, value) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n current.value = value;\n }\n }\n }]);\n\n return LinkedList;\n}();\n\nmodule.exports = LinkedList;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\r\n *This class is the javascript implementation of the Point.java class in jdk\r\n */\nfunction Point(x, y, p) {\n this.x = null;\n this.y = null;\n if (x == null && y == null && p == null) {\n this.x = 0;\n this.y = 0;\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n this.x = x;\n this.y = y;\n } else if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.x = p.x;\n this.y = p.y;\n }\n}\n\nPoint.prototype.getX = function () {\n return this.x;\n};\n\nPoint.prototype.getY = function () {\n return this.y;\n};\n\nPoint.prototype.getLocation = function () {\n return new Point(this.x, this.y);\n};\n\nPoint.prototype.setLocation = function (x, y, p) {\n if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.setLocation(p.x, p.y);\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n //if both parameters are integer just move (x,y) location\n if (parseInt(x) == x && parseInt(y) == y) {\n this.move(x, y);\n } else {\n this.x = Math.floor(x + 0.5);\n this.y = Math.floor(y + 0.5);\n }\n }\n};\n\nPoint.prototype.move = function (x, y) {\n this.x = x;\n this.y = y;\n};\n\nPoint.prototype.translate = function (dx, dy) {\n this.x += dx;\n this.y += dy;\n};\n\nPoint.prototype.equals = function (obj) {\n if (obj.constructor.name == \"Point\") {\n var pt = obj;\n return this.x == pt.x && this.y == pt.y;\n }\n return this == obj;\n};\n\nPoint.prototype.toString = function () {\n return new Point().constructor.name + \"[x=\" + this.x + \",y=\" + this.y + \"]\";\n};\n\nmodule.exports = Point;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RectangleD(x, y, width, height) {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n\n if (x != null && y != null && width != null && height != null) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n\nRectangleD.prototype.getX = function () {\n return this.x;\n};\n\nRectangleD.prototype.setX = function (x) {\n this.x = x;\n};\n\nRectangleD.prototype.getY = function () {\n return this.y;\n};\n\nRectangleD.prototype.setY = function (y) {\n this.y = y;\n};\n\nRectangleD.prototype.getWidth = function () {\n return this.width;\n};\n\nRectangleD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nRectangleD.prototype.getHeight = function () {\n return this.height;\n};\n\nRectangleD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nRectangleD.prototype.getRight = function () {\n return this.x + this.width;\n};\n\nRectangleD.prototype.getBottom = function () {\n return this.y + this.height;\n};\n\nRectangleD.prototype.intersects = function (a) {\n if (this.getRight() < a.x) {\n return false;\n }\n\n if (this.getBottom() < a.y) {\n return false;\n }\n\n if (a.getRight() < this.x) {\n return false;\n }\n\n if (a.getBottom() < this.y) {\n return false;\n }\n\n return true;\n};\n\nRectangleD.prototype.getCenterX = function () {\n return this.x + this.width / 2;\n};\n\nRectangleD.prototype.getMinX = function () {\n return this.getX();\n};\n\nRectangleD.prototype.getMaxX = function () {\n return this.getX() + this.width;\n};\n\nRectangleD.prototype.getCenterY = function () {\n return this.y + this.height / 2;\n};\n\nRectangleD.prototype.getMinY = function () {\n return this.getY();\n};\n\nRectangleD.prototype.getMaxY = function () {\n return this.getY() + this.height;\n};\n\nRectangleD.prototype.getWidthHalf = function () {\n return this.width / 2;\n};\n\nRectangleD.prototype.getHeightHalf = function () {\n return this.height / 2;\n};\n\nmodule.exports = RectangleD;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction UniqueIDGeneretor() {}\n\nUniqueIDGeneretor.lastID = 0;\n\nUniqueIDGeneretor.createID = function (obj) {\n if (UniqueIDGeneretor.isPrimitive(obj)) {\n return obj;\n }\n if (obj.uniqueID != null) {\n return obj.uniqueID;\n }\n obj.uniqueID = UniqueIDGeneretor.getString();\n UniqueIDGeneretor.lastID++;\n return obj.uniqueID;\n};\n\nUniqueIDGeneretor.getString = function (id) {\n if (id == null) id = UniqueIDGeneretor.lastID;\n return \"Object#\" + id + \"\";\n};\n\nUniqueIDGeneretor.isPrimitive = function (arg) {\n var type = typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg);\n return arg == null || type != \"object\" && type != \"function\";\n};\n\nmodule.exports = UniqueIDGeneretor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(7);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar LGraph = __webpack_require__(6);\nvar PointD = __webpack_require__(5);\nvar Transform = __webpack_require__(17);\nvar Emitter = __webpack_require__(29);\n\nfunction Layout(isRemoteUse) {\n Emitter.call(this);\n\n //Layout Quality: 0:draft, 1:default, 2:proof\n this.layoutQuality = LayoutConstants.QUALITY;\n //Whether layout should create bendpoints as needed or not\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n //Whether layout should be incremental or not\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n //Whether we animate from before to after layout node positions\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n //Whether we animate the layout process or not\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n //Number iterations that should be done between two successive animations\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n /**\r\n * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When\r\n * they are, both spring and repulsion forces between two leaf nodes can be\r\n * calculated without the expensive clipping point calculations, resulting\r\n * in major speed-up.\r\n */\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n /**\r\n * This is used for creation of bendpoints by using dummy nodes and edges.\r\n * Maps an LEdge to its dummy bendpoint path.\r\n */\n this.edgeToDummyNodes = new Map();\n this.graphManager = new LGraphManager(this);\n this.isLayoutFinished = false;\n this.isSubLayout = false;\n this.isRemoteUse = false;\n\n if (isRemoteUse != null) {\n this.isRemoteUse = isRemoteUse;\n }\n}\n\nLayout.RANDOM_SEED = 1;\n\nLayout.prototype = Object.create(Emitter.prototype);\n\nLayout.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLayout.prototype.getAllNodes = function () {\n return this.graphManager.getAllNodes();\n};\n\nLayout.prototype.getAllEdges = function () {\n return this.graphManager.getAllEdges();\n};\n\nLayout.prototype.getAllNodesToApplyGravitation = function () {\n return this.graphManager.getAllNodesToApplyGravitation();\n};\n\nLayout.prototype.newGraphManager = function () {\n var gm = new LGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nLayout.prototype.newGraph = function (vGraph) {\n return new LGraph(null, this.graphManager, vGraph);\n};\n\nLayout.prototype.newNode = function (vNode) {\n return new LNode(this.graphManager, vNode);\n};\n\nLayout.prototype.newEdge = function (vEdge) {\n return new LEdge(null, null, vEdge);\n};\n\nLayout.prototype.checkLayoutSuccess = function () {\n return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();\n};\n\nLayout.prototype.runLayout = function () {\n this.isLayoutFinished = false;\n\n if (this.tilingPreLayout) {\n this.tilingPreLayout();\n }\n\n this.initParameters();\n var isLayoutSuccessfull;\n\n if (this.checkLayoutSuccess()) {\n isLayoutSuccessfull = false;\n } else {\n isLayoutSuccessfull = this.layout();\n }\n\n if (LayoutConstants.ANIMATE === 'during') {\n // If this is a 'during' layout animation. Layout is not finished yet. \n // We need to perform these in index.js when layout is really finished.\n return false;\n }\n\n if (isLayoutSuccessfull) {\n if (!this.isSubLayout) {\n this.doPostLayout();\n }\n }\n\n if (this.tilingPostLayout) {\n this.tilingPostLayout();\n }\n\n this.isLayoutFinished = true;\n\n return isLayoutSuccessfull;\n};\n\n/**\r\n * This method performs the operations required after layout.\r\n */\nLayout.prototype.doPostLayout = function () {\n //assert !isSubLayout : \"Should not be called on sub-layout!\";\n // Propagate geometric changes to v-level objects\n if (!this.incremental) {\n this.transform();\n }\n this.update();\n};\n\n/**\r\n * This method updates the geometry of the target graph according to\r\n * calculated layout.\r\n */\nLayout.prototype.update2 = function () {\n // update bend points\n if (this.createBendsAsNeeded) {\n this.createBendpointsFromDummyNodes();\n\n // reset all edges, since the topology has changed\n this.graphManager.resetAllEdges();\n }\n\n // perform edge, node and root updates if layout is not called\n // remotely\n if (!this.isRemoteUse) {\n // update all edges\n var edge;\n var allEdges = this.graphManager.getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n // this.update(edge);\n }\n\n // recursively update nodes\n var node;\n var nodes = this.graphManager.getRoot().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n // this.update(node);\n }\n\n // update root graph\n this.update(this.graphManager.getRoot());\n }\n};\n\nLayout.prototype.update = function (obj) {\n if (obj == null) {\n this.update2();\n } else if (obj instanceof LNode) {\n var node = obj;\n if (node.getChild() != null) {\n // since node is compound, recursively update child nodes\n var nodes = node.getChild().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n update(nodes[i]);\n }\n }\n\n // if the l-level node is associated with a v-level graph object,\n // then it is assumed that the v-level node implements the\n // interface Updatable.\n if (node.vGraphObject != null) {\n // cast to Updatable without any type check\n var vNode = node.vGraphObject;\n\n // call the update method of the interface\n vNode.update(node);\n }\n } else if (obj instanceof LEdge) {\n var edge = obj;\n // if the l-level edge is associated with a v-level graph object,\n // then it is assumed that the v-level edge implements the\n // interface Updatable.\n\n if (edge.vGraphObject != null) {\n // cast to Updatable without any type check\n var vEdge = edge.vGraphObject;\n\n // call the update method of the interface\n vEdge.update(edge);\n }\n } else if (obj instanceof LGraph) {\n var graph = obj;\n // if the l-level graph is associated with a v-level graph object,\n // then it is assumed that the v-level object implements the\n // interface Updatable.\n\n if (graph.vGraphObject != null) {\n // cast to Updatable without any type check\n var vGraph = graph.vGraphObject;\n\n // call the update method of the interface\n vGraph.update(graph);\n }\n }\n};\n\n/**\r\n * This method is used to set all layout parameters to default values\r\n * determined at compile time.\r\n */\nLayout.prototype.initParameters = function () {\n if (!this.isSubLayout) {\n this.layoutQuality = LayoutConstants.QUALITY;\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n }\n\n if (this.animationDuringLayout) {\n this.animationOnLayout = false;\n }\n};\n\nLayout.prototype.transform = function (newLeftTop) {\n if (newLeftTop == undefined) {\n this.transform(new PointD(0, 0));\n } else {\n // create a transformation object (from Eclipse to layout). When an\n // inverse transform is applied, we get upper-left coordinate of the\n // drawing or the root graph at given input coordinate (some margins\n // already included in calculation of left-top).\n\n var trans = new Transform();\n var leftTop = this.graphManager.getRoot().updateLeftTop();\n\n if (leftTop != null) {\n trans.setWorldOrgX(newLeftTop.x);\n trans.setWorldOrgY(newLeftTop.y);\n\n trans.setDeviceOrgX(leftTop.x);\n trans.setDeviceOrgY(leftTop.y);\n\n var nodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.transform(trans);\n }\n }\n }\n};\n\nLayout.prototype.positionNodesRandomly = function (graph) {\n\n if (graph == undefined) {\n //assert !this.incremental;\n this.positionNodesRandomly(this.getGraphManager().getRoot());\n this.getGraphManager().getRoot().updateBounds(true);\n } else {\n var lNode;\n var childGraph;\n\n var nodes = graph.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n lNode = nodes[i];\n childGraph = lNode.getChild();\n\n if (childGraph == null) {\n lNode.scatter();\n } else if (childGraph.getNodes().length == 0) {\n lNode.scatter();\n } else {\n this.positionNodesRandomly(childGraph);\n lNode.updateBounds();\n }\n }\n }\n};\n\n/**\r\n * This method returns a list of trees where each tree is represented as a\r\n * list of l-nodes. The method returns a list of size 0 when:\r\n * - The graph is not flat or\r\n * - One of the component(s) of the graph is not a tree.\r\n */\nLayout.prototype.getFlatForest = function () {\n var flatForest = [];\n var isForest = true;\n\n // Quick reference for all nodes in the graph manager associated with\n // this layout. The list should not be changed.\n var allNodes = this.graphManager.getRoot().getNodes();\n\n // First be sure that the graph is flat\n var isFlat = true;\n\n for (var i = 0; i < allNodes.length; i++) {\n if (allNodes[i].getChild() != null) {\n isFlat = false;\n }\n }\n\n // Return empty forest if the graph is not flat.\n if (!isFlat) {\n return flatForest;\n }\n\n // Run BFS for each component of the graph.\n\n var visited = new Set();\n var toBeVisited = [];\n var parents = new Map();\n var unProcessedNodes = [];\n\n unProcessedNodes = unProcessedNodes.concat(allNodes);\n\n // Each iteration of this loop finds a component of the graph and\n // decides whether it is a tree or not. If it is a tree, adds it to the\n // forest and continued with the next component.\n\n while (unProcessedNodes.length > 0 && isForest) {\n toBeVisited.push(unProcessedNodes[0]);\n\n // Start the BFS. Each iteration of this loop visits a node in a\n // BFS manner.\n while (toBeVisited.length > 0 && isForest) {\n //pool operation\n var currentNode = toBeVisited[0];\n toBeVisited.splice(0, 1);\n visited.add(currentNode);\n\n // Traverse all neighbors of this node\n var neighborEdges = currentNode.getEdges();\n\n for (var i = 0; i < neighborEdges.length; i++) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);\n\n // If BFS is not growing from this neighbor.\n if (parents.get(currentNode) != currentNeighbor) {\n // We haven't previously visited this neighbor.\n if (!visited.has(currentNeighbor)) {\n toBeVisited.push(currentNeighbor);\n parents.set(currentNeighbor, currentNode);\n }\n // Since we have previously visited this neighbor and\n // this neighbor is not parent of currentNode, given\n // graph contains a component that is not tree, hence\n // it is not a forest.\n else {\n isForest = false;\n break;\n }\n }\n }\n }\n\n // The graph contains a component that is not a tree. Empty\n // previously found trees. The method will end.\n if (!isForest) {\n flatForest = [];\n }\n // Save currently visited nodes as a tree in our forest. Reset\n // visited and parents lists. Continue with the next component of\n // the graph, if any.\n else {\n var temp = [].concat(_toConsumableArray(visited));\n flatForest.push(temp);\n //flatForest = flatForest.concat(temp);\n //unProcessedNodes.removeAll(visited);\n for (var i = 0; i < temp.length; i++) {\n var value = temp[i];\n var index = unProcessedNodes.indexOf(value);\n if (index > -1) {\n unProcessedNodes.splice(index, 1);\n }\n }\n visited = new Set();\n parents = new Map();\n }\n }\n\n return flatForest;\n};\n\n/**\r\n * This method creates dummy nodes (an l-level node with minimal dimensions)\r\n * for the given edge (one per bendpoint). The existing l-level structure\r\n * is updated accordingly.\r\n */\nLayout.prototype.createDummyNodesForBendpoints = function (edge) {\n var dummyNodes = [];\n var prev = edge.source;\n\n var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);\n\n for (var i = 0; i < edge.bendpoints.length; i++) {\n // create new dummy node\n var dummyNode = this.newNode(null);\n dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));\n\n graph.add(dummyNode);\n\n // create new dummy edge between prev and dummy node\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, dummyNode);\n\n dummyNodes.add(dummyNode);\n prev = dummyNode;\n }\n\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, edge.target);\n\n this.edgeToDummyNodes.set(edge, dummyNodes);\n\n // remove real edge from graph manager if it is inter-graph\n if (edge.isInterGraph()) {\n this.graphManager.remove(edge);\n }\n // else, remove the edge from the current graph\n else {\n graph.remove(edge);\n }\n\n return dummyNodes;\n};\n\n/**\r\n * This method creates bendpoints for edges from the dummy nodes\r\n * at l-level.\r\n */\nLayout.prototype.createBendpointsFromDummyNodes = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);\n\n for (var k = 0; k < edges.length; k++) {\n var lEdge = edges[k];\n\n if (lEdge.bendpoints.length > 0) {\n var path = this.edgeToDummyNodes.get(lEdge);\n\n for (var i = 0; i < path.length; i++) {\n var dummyNode = path[i];\n var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());\n\n // update bendpoint's location according to dummy node\n var ebp = lEdge.bendpoints.get(i);\n ebp.x = p.x;\n ebp.y = p.y;\n\n // remove the dummy node, dummy edges incident with this\n // dummy node is also removed (within the remove method)\n dummyNode.getOwner().remove(dummyNode);\n }\n\n // add the real edge to graph\n this.graphManager.add(lEdge, lEdge.source, lEdge.target);\n }\n }\n};\n\nLayout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {\n if (minDiv != undefined && maxMul != undefined) {\n var value = defaultValue;\n\n if (sliderValue <= 50) {\n var minValue = defaultValue / minDiv;\n value -= (defaultValue - minValue) / 50 * (50 - sliderValue);\n } else {\n var maxValue = defaultValue * maxMul;\n value += (maxValue - defaultValue) / 50 * (sliderValue - 50);\n }\n\n return value;\n } else {\n var a, b;\n\n if (sliderValue <= 50) {\n a = 9.0 * defaultValue / 500.0;\n b = defaultValue / 10.0;\n } else {\n a = 9.0 * defaultValue / 50.0;\n b = -8 * defaultValue;\n }\n\n return a * sliderValue + b;\n }\n};\n\n/**\r\n * This method finds and returns the center of the given nodes, assuming\r\n * that the given nodes form a tree in themselves.\r\n */\nLayout.findCenterOfTree = function (nodes) {\n var list = [];\n list = list.concat(nodes);\n\n var removedNodes = [];\n var remainingDegrees = new Map();\n var foundCenter = false;\n var centerNode = null;\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n var degree = node.getNeighborsList().size;\n remainingDegrees.set(node, node.getNeighborsList().size);\n\n if (degree == 1) {\n removedNodes.push(node);\n }\n }\n\n var tempList = [];\n tempList = tempList.concat(removedNodes);\n\n while (!foundCenter) {\n var tempList2 = [];\n tempList2 = tempList2.concat(tempList);\n tempList = [];\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n\n var index = list.indexOf(node);\n if (index >= 0) {\n list.splice(index, 1);\n }\n\n var neighbours = node.getNeighborsList();\n\n neighbours.forEach(function (neighbour) {\n if (removedNodes.indexOf(neighbour) < 0) {\n var otherDegree = remainingDegrees.get(neighbour);\n var newDegree = otherDegree - 1;\n\n if (newDegree == 1) {\n tempList.push(neighbour);\n }\n\n remainingDegrees.set(neighbour, newDegree);\n }\n });\n }\n\n removedNodes = removedNodes.concat(tempList);\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n }\n\n return centerNode;\n};\n\n/**\r\n * During the coarsening process, this layout may be referenced by two graph managers\r\n * this setter function grants access to change the currently being used graph manager\r\n */\nLayout.prototype.setGraphManager = function (gm) {\n this.graphManager = gm;\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RandomSeed() {}\n// adapted from: https://stackoverflow.com/a/19303725\nRandomSeed.seed = 1;\nRandomSeed.x = 0;\n\nRandomSeed.nextDouble = function () {\n RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;\n return RandomSeed.x - Math.floor(RandomSeed.x);\n};\n\nmodule.exports = RandomSeed;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar PointD = __webpack_require__(5);\n\nfunction Transform(x, y) {\n this.lworldOrgX = 0.0;\n this.lworldOrgY = 0.0;\n this.ldeviceOrgX = 0.0;\n this.ldeviceOrgY = 0.0;\n this.lworldExtX = 1.0;\n this.lworldExtY = 1.0;\n this.ldeviceExtX = 1.0;\n this.ldeviceExtY = 1.0;\n}\n\nTransform.prototype.getWorldOrgX = function () {\n return this.lworldOrgX;\n};\n\nTransform.prototype.setWorldOrgX = function (wox) {\n this.lworldOrgX = wox;\n};\n\nTransform.prototype.getWorldOrgY = function () {\n return this.lworldOrgY;\n};\n\nTransform.prototype.setWorldOrgY = function (woy) {\n this.lworldOrgY = woy;\n};\n\nTransform.prototype.getWorldExtX = function () {\n return this.lworldExtX;\n};\n\nTransform.prototype.setWorldExtX = function (wex) {\n this.lworldExtX = wex;\n};\n\nTransform.prototype.getWorldExtY = function () {\n return this.lworldExtY;\n};\n\nTransform.prototype.setWorldExtY = function (wey) {\n this.lworldExtY = wey;\n};\n\n/* Device related */\n\nTransform.prototype.getDeviceOrgX = function () {\n return this.ldeviceOrgX;\n};\n\nTransform.prototype.setDeviceOrgX = function (dox) {\n this.ldeviceOrgX = dox;\n};\n\nTransform.prototype.getDeviceOrgY = function () {\n return this.ldeviceOrgY;\n};\n\nTransform.prototype.setDeviceOrgY = function (doy) {\n this.ldeviceOrgY = doy;\n};\n\nTransform.prototype.getDeviceExtX = function () {\n return this.ldeviceExtX;\n};\n\nTransform.prototype.setDeviceExtX = function (dex) {\n this.ldeviceExtX = dex;\n};\n\nTransform.prototype.getDeviceExtY = function () {\n return this.ldeviceExtY;\n};\n\nTransform.prototype.setDeviceExtY = function (dey) {\n this.ldeviceExtY = dey;\n};\n\nTransform.prototype.transformX = function (x) {\n var xDevice = 0.0;\n var worldExtX = this.lworldExtX;\n if (worldExtX != 0.0) {\n xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;\n }\n\n return xDevice;\n};\n\nTransform.prototype.transformY = function (y) {\n var yDevice = 0.0;\n var worldExtY = this.lworldExtY;\n if (worldExtY != 0.0) {\n yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;\n }\n\n return yDevice;\n};\n\nTransform.prototype.inverseTransformX = function (x) {\n var xWorld = 0.0;\n var deviceExtX = this.ldeviceExtX;\n if (deviceExtX != 0.0) {\n xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;\n }\n\n return xWorld;\n};\n\nTransform.prototype.inverseTransformY = function (y) {\n var yWorld = 0.0;\n var deviceExtY = this.ldeviceExtY;\n if (deviceExtY != 0.0) {\n yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;\n }\n return yWorld;\n};\n\nTransform.prototype.inverseTransformPoint = function (inPoint) {\n var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));\n return outPoint;\n};\n\nmodule.exports = Transform;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar Layout = __webpack_require__(15);\nvar FDLayoutConstants = __webpack_require__(4);\nvar LayoutConstants = __webpack_require__(0);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction FDLayout() {\n Layout.call(this);\n\n this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.totalDisplacement = 0.0;\n this.oldTotalDisplacement = 0.0;\n this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;\n}\n\nFDLayout.prototype = Object.create(Layout.prototype);\n\nfor (var prop in Layout) {\n FDLayout[prop] = Layout[prop];\n}\n\nFDLayout.prototype.initParameters = function () {\n Layout.prototype.initParameters.call(this, arguments);\n\n this.totalIterations = 0;\n this.notAnimatedIterations = 0;\n\n this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;\n\n this.grid = [];\n};\n\nFDLayout.prototype.calcIdealEdgeLengths = function () {\n var edge;\n var originalIdealLength;\n var lcaDepth;\n var source;\n var target;\n var sizeOfSourceInLca;\n var sizeOfTargetInLca;\n\n var allEdges = this.getGraphManager().getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n\n originalIdealLength = edge.idealLength;\n\n if (edge.isInterGraph) {\n source = edge.getSource();\n target = edge.getTarget();\n\n sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();\n sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();\n\n if (this.useSmartIdealEdgeLengthCalculation) {\n edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;\n }\n\n lcaDepth = edge.getLca().getInclusionTreeDepth();\n\n edge.idealLength += originalIdealLength * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);\n }\n }\n};\n\nFDLayout.prototype.initSpringEmbedder = function () {\n\n var s = this.getAllNodes().length;\n if (this.incremental) {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n }\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;\n } else {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n } else {\n this.coolingFactor = 1.0;\n }\n this.initialCoolingFactor = this.coolingFactor;\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;\n }\n\n this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);\n\n // Reassign this attribute by using new constant value\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;\n\n this.repulsionRange = this.calcRepulsionRange();\n};\n\nFDLayout.prototype.calcSpringForces = function () {\n var lEdges = this.getAllEdges();\n var edge;\n\n for (var i = 0; i < lEdges.length; i++) {\n edge = lEdges[i];\n\n this.calcSpringForce(edge, edge.idealLength);\n }\n};\n\nFDLayout.prototype.calcRepulsionForces = function () {\n var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var i, j;\n var nodeA, nodeB;\n var lNodes = this.getAllNodes();\n var processedNodeSet;\n\n if (this.useFRGridVariant) {\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {\n this.updateGrid();\n }\n\n processedNodeSet = new Set();\n\n // calculate repulsion forces between each nodes and its surrounding\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);\n processedNodeSet.add(nodeA);\n }\n } else {\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n\n for (j = i + 1; j < lNodes.length; j++) {\n nodeB = lNodes[j];\n\n // If both nodes are not members of the same graph, skip.\n if (nodeA.getOwner() != nodeB.getOwner()) {\n continue;\n }\n\n this.calcRepulsionForce(nodeA, nodeB);\n }\n }\n }\n};\n\nFDLayout.prototype.calcGravitationalForces = function () {\n var node;\n var lNodes = this.getAllNodesToApplyGravitation();\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n this.calcGravitationalForce(node);\n }\n};\n\nFDLayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\nFDLayout.prototype.calcSpringForce = function (edge, idealLength) {\n var sourceNode = edge.getSource();\n var targetNode = edge.getTarget();\n\n var length;\n var springForce;\n var springForceX;\n var springForceY;\n\n // Update edge length\n if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {\n edge.updateLengthSimple();\n } else {\n edge.updateLength();\n\n if (edge.isOverlapingSourceAndTarget) {\n return;\n }\n }\n\n length = edge.getLength();\n\n if (length == 0) return;\n\n // Calculate spring forces\n springForce = edge.edgeElasticity * (length - idealLength);\n\n // Project force onto x and y axes\n springForceX = springForce * (edge.lengthX / length);\n springForceY = springForce * (edge.lengthY / length);\n\n // Apply forces on the end nodes\n sourceNode.springForceX += springForceX;\n sourceNode.springForceY += springForceY;\n targetNode.springForceX -= springForceX;\n targetNode.springForceY -= springForceY;\n};\n\nFDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {\n var rectA = nodeA.getRect();\n var rectB = nodeB.getRect();\n var overlapAmount = new Array(2);\n var clipPoints = new Array(4);\n var distanceX;\n var distanceY;\n var distanceSquared;\n var distance;\n var repulsionForce;\n var repulsionForceX;\n var repulsionForceY;\n\n if (rectA.intersects(rectB)) // two nodes overlap\n {\n // calculate separation amount in x and y directions\n IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);\n\n repulsionForceX = 2 * overlapAmount[0];\n repulsionForceY = 2 * overlapAmount[1];\n\n var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);\n\n // Apply forces on the two nodes\n nodeA.repulsionForceX -= childrenConstant * repulsionForceX;\n nodeA.repulsionForceY -= childrenConstant * repulsionForceY;\n nodeB.repulsionForceX += childrenConstant * repulsionForceX;\n nodeB.repulsionForceY += childrenConstant * repulsionForceY;\n } else // no overlap\n {\n // calculate distance\n\n if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers\n {\n distanceX = rectB.getCenterX() - rectA.getCenterX();\n distanceY = rectB.getCenterY() - rectA.getCenterY();\n } else // use clipping points\n {\n IGeometry.getIntersection(rectA, rectB, clipPoints);\n\n distanceX = clipPoints[2] - clipPoints[0];\n distanceY = clipPoints[3] - clipPoints[1];\n }\n\n // No repulsion range. FR grid variant should take care of this.\n if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n distanceSquared = distanceX * distanceX + distanceY * distanceY;\n distance = Math.sqrt(distanceSquared);\n\n // Here we use half of the nodes' repulsion values for backward compatibility\n repulsionForce = (nodeA.nodeRepulsion / 2 + nodeB.nodeRepulsion / 2) * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;\n\n // Project force onto x and y axes\n repulsionForceX = repulsionForce * distanceX / distance;\n repulsionForceY = repulsionForce * distanceY / distance;\n\n // Apply forces on the two nodes \n nodeA.repulsionForceX -= repulsionForceX;\n nodeA.repulsionForceY -= repulsionForceY;\n nodeB.repulsionForceX += repulsionForceX;\n nodeB.repulsionForceY += repulsionForceY;\n }\n};\n\nFDLayout.prototype.calcGravitationalForce = function (node) {\n var ownerGraph;\n var ownerCenterX;\n var ownerCenterY;\n var distanceX;\n var distanceY;\n var absDistanceX;\n var absDistanceY;\n var estimatedSize;\n ownerGraph = node.getOwner();\n\n ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;\n ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;\n distanceX = node.getCenterX() - ownerCenterX;\n distanceY = node.getCenterY() - ownerCenterY;\n absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;\n absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;\n\n if (node.getOwner() == this.graphManager.getRoot()) // in the root graph\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX;\n node.gravitationForceY = -this.gravityConstant * distanceY;\n }\n } else // inside a compound\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;\n node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;\n }\n }\n};\n\nFDLayout.prototype.isConverged = function () {\n var converged;\n var oscilating = false;\n\n if (this.totalIterations > this.maxIterations / 3) {\n oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;\n }\n\n converged = this.totalDisplacement < this.totalDisplacementThreshold;\n\n this.oldTotalDisplacement = this.totalDisplacement;\n\n return converged || oscilating;\n};\n\nFDLayout.prototype.animate = function () {\n if (this.animationDuringLayout && !this.isSubLayout) {\n if (this.notAnimatedIterations == this.animationPeriod) {\n this.update();\n this.notAnimatedIterations = 0;\n } else {\n this.notAnimatedIterations++;\n }\n }\n};\n\n//This method calculates the number of children (weight) for all nodes\nFDLayout.prototype.calcNoOfChildrenForAllNodes = function () {\n var node;\n var allNodes = this.graphManager.getAllNodes();\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n node.noOfChildren = node.getNoOfChildren();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: FR-Grid Variant Repulsion Force Calculation\n// -----------------------------------------------------------------------------\n\nFDLayout.prototype.calcGrid = function (graph) {\n\n var sizeX = 0;\n var sizeY = 0;\n\n sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));\n sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));\n\n var grid = new Array(sizeX);\n\n for (var i = 0; i < sizeX; i++) {\n grid[i] = new Array(sizeY);\n }\n\n for (var i = 0; i < sizeX; i++) {\n for (var j = 0; j < sizeY; j++) {\n grid[i][j] = new Array();\n }\n }\n\n return grid;\n};\n\nFDLayout.prototype.addNodeToGrid = function (v, left, top) {\n\n var startX = 0;\n var finishX = 0;\n var startY = 0;\n var finishY = 0;\n\n startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));\n finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));\n startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));\n finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));\n\n for (var i = startX; i <= finishX; i++) {\n for (var j = startY; j <= finishY; j++) {\n this.grid[i][j].push(v);\n v.setGridCoordinates(startX, finishX, startY, finishY);\n }\n }\n};\n\nFDLayout.prototype.updateGrid = function () {\n var i;\n var nodeA;\n var lNodes = this.getAllNodes();\n\n this.grid = this.calcGrid(this.graphManager.getRoot());\n\n // put all nodes to proper grid cells\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());\n }\n};\n\nFDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {\n\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {\n var surrounding = new Set();\n nodeA.surrounding = new Array();\n var nodeB;\n var grid = this.grid;\n\n for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {\n for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {\n if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {\n for (var k = 0; k < grid[i][j].length; k++) {\n nodeB = grid[i][j][k];\n\n // If both nodes are not members of the same graph, \n // or both nodes are the same, skip.\n if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {\n continue;\n }\n\n // check if the repulsion force between\n // nodeA and nodeB has already been calculated\n if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {\n var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);\n var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);\n\n // if the distance between nodeA and nodeB \n // is less then calculation range\n if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {\n //then add nodeB to surrounding of nodeA\n surrounding.add(nodeB);\n }\n }\n }\n }\n }\n }\n\n nodeA.surrounding = [].concat(_toConsumableArray(surrounding));\n }\n for (i = 0; i < nodeA.surrounding.length; i++) {\n this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);\n }\n};\n\nFDLayout.prototype.calcRepulsionRange = function () {\n return 0.0;\n};\n\nmodule.exports = FDLayout;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LEdge = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(4);\n\nfunction FDLayoutEdge(source, target, vEdge) {\n LEdge.call(this, source, target, vEdge);\n\n // Ideal length and elasticity value for this edge\n this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n this.edgeElasticity = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n}\n\nFDLayoutEdge.prototype = Object.create(LEdge.prototype);\n\nfor (var prop in LEdge) {\n FDLayoutEdge[prop] = LEdge[prop];\n}\n\nmodule.exports = FDLayoutEdge;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LNode = __webpack_require__(3);\nvar FDLayoutConstants = __webpack_require__(4);\n\nfunction FDLayoutNode(gm, loc, size, vNode) {\n // alternative constructor is handled inside LNode\n LNode.call(this, gm, loc, size, vNode);\n\n // Repulsion value of this node\n this.nodeRepulsion = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n\n //Spring, repulsion and gravitational forces acting on this node\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n //Amount by which this node is to be moved in this iteration\n this.displacementX = 0;\n this.displacementY = 0;\n\n //Start and finish grid coordinates that this node is fallen into\n this.startX = 0;\n this.finishX = 0;\n this.startY = 0;\n this.finishY = 0;\n\n //Geometric neighbors of this node\n this.surrounding = [];\n}\n\nFDLayoutNode.prototype = Object.create(LNode.prototype);\n\nfor (var prop in LNode) {\n FDLayoutNode[prop] = LNode[prop];\n}\n\nFDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {\n this.startX = _startX;\n this.finishX = _finishX;\n this.startY = _startY;\n this.finishY = _finishY;\n};\n\nmodule.exports = FDLayoutNode;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction DimensionD(width, height) {\n this.width = 0;\n this.height = 0;\n if (width !== null && height !== null) {\n this.height = height;\n this.width = width;\n }\n}\n\nDimensionD.prototype.getWidth = function () {\n return this.width;\n};\n\nDimensionD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nDimensionD.prototype.getHeight = function () {\n return this.height;\n};\n\nDimensionD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nmodule.exports = DimensionD;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashMap() {\n this.map = {};\n this.keys = [];\n}\n\nHashMap.prototype.put = function (key, value) {\n var theId = UniqueIDGeneretor.createID(key);\n if (!this.contains(theId)) {\n this.map[theId] = value;\n this.keys.push(key);\n }\n};\n\nHashMap.prototype.contains = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[key] != null;\n};\n\nHashMap.prototype.get = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[theId];\n};\n\nHashMap.prototype.keySet = function () {\n return this.keys;\n};\n\nmodule.exports = HashMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashSet() {\n this.set = {};\n}\n;\n\nHashSet.prototype.add = function (obj) {\n var theId = UniqueIDGeneretor.createID(obj);\n if (!this.contains(theId)) this.set[theId] = obj;\n};\n\nHashSet.prototype.remove = function (obj) {\n delete this.set[UniqueIDGeneretor.createID(obj)];\n};\n\nHashSet.prototype.clear = function () {\n this.set = {};\n};\n\nHashSet.prototype.contains = function (obj) {\n return this.set[UniqueIDGeneretor.createID(obj)] == obj;\n};\n\nHashSet.prototype.isEmpty = function () {\n return this.size() === 0;\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\n//concats this.set to the given list\nHashSet.prototype.addAllTo = function (list) {\n var keys = Object.keys(this.set);\n var length = keys.length;\n for (var i = 0; i < length; i++) {\n list.push(this.set[keys[i]]);\n }\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\nHashSet.prototype.addAll = function (list) {\n var s = list.length;\n for (var i = 0; i < s; i++) {\n var v = list[i];\n this.add(v);\n }\n};\n\nmodule.exports = HashSet;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Some matrix (1d and 2d array) operations\nfunction Matrix() {}\n\n/**\n * matrix multiplication\n * array1, array2 and result are 2d arrays\n */\nMatrix.multMat = function (array1, array2) {\n var result = [];\n\n for (var i = 0; i < array1.length; i++) {\n result[i] = [];\n for (var j = 0; j < array2[0].length; j++) {\n result[i][j] = 0;\n for (var k = 0; k < array1[0].length; k++) {\n result[i][j] += array1[i][k] * array2[k][j];\n }\n }\n }\n return result;\n};\n\n/**\n * matrix transpose\n * array and result are 2d arrays\n */\nMatrix.transpose = function (array) {\n var result = [];\n\n for (var i = 0; i < array[0].length; i++) {\n result[i] = [];\n for (var j = 0; j < array.length; j++) {\n result[i][j] = array[j][i];\n }\n }\n\n return result;\n};\n\n/**\n * multiply array with constant\n * array and result are 1d arrays\n */\nMatrix.multCons = function (array, constant) {\n var result = [];\n\n for (var i = 0; i < array.length; i++) {\n result[i] = array[i] * constant;\n }\n\n return result;\n};\n\n/**\n * substract two arrays\n * array1, array2 and result are 1d arrays\n */\nMatrix.minusOp = function (array1, array2) {\n var result = [];\n\n for (var i = 0; i < array1.length; i++) {\n result[i] = array1[i] - array2[i];\n }\n\n return result;\n};\n\n/**\n * dot product of two arrays with same size\n * array1 and array2 are 1d arrays\n */\nMatrix.dotProduct = function (array1, array2) {\n var product = 0;\n\n for (var i = 0; i < array1.length; i++) {\n product += array1[i] * array2[i];\n }\n\n return product;\n};\n\n/**\n * magnitude of an array\n * array is 1d array\n */\nMatrix.mag = function (array) {\n return Math.sqrt(this.dotProduct(array, array));\n};\n\n/**\n * normalization of an array\n * array and result are 1d array\n */\nMatrix.normalize = function (array) {\n var result = [];\n var magnitude = this.mag(array);\n\n for (var i = 0; i < array.length; i++) {\n result[i] = array[i] / magnitude;\n }\n\n return result;\n};\n\n/**\n * multiply an array with centering matrix\n * array and result are 1d array\n */\nMatrix.multGamma = function (array) {\n var result = [];\n var sum = 0;\n\n for (var i = 0; i < array.length; i++) {\n sum += array[i];\n }\n\n sum *= -1 / array.length;\n\n for (var _i = 0; _i < array.length; _i++) {\n result[_i] = sum + array[_i];\n }\n return result;\n};\n\n/**\n * a special matrix multiplication\n * result = 0.5 * C * INV * C^T * array\n * array and result are 1d, C and INV are 2d arrays\n */\nMatrix.multL = function (array, C, INV) {\n var result = [];\n var temp1 = [];\n var temp2 = [];\n\n // multiply by C^T\n for (var i = 0; i < C[0].length; i++) {\n var sum = 0;\n for (var j = 0; j < C.length; j++) {\n sum += -0.5 * C[j][i] * array[j];\n }\n temp1[i] = sum;\n }\n // multiply the result by INV\n for (var _i2 = 0; _i2 < INV.length; _i2++) {\n var _sum = 0;\n for (var _j = 0; _j < INV.length; _j++) {\n _sum += INV[_i2][_j] * temp1[_j];\n }\n temp2[_i2] = _sum;\n }\n // multiply the result by C\n for (var _i3 = 0; _i3 < C.length; _i3++) {\n var _sum2 = 0;\n for (var _j2 = 0; _j2 < C[0].length; _j2++) {\n _sum2 += C[_i3][_j2] * temp2[_j2];\n }\n result[_i3] = _sum2;\n }\n\n return result;\n};\n\nmodule.exports = Matrix;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A classic Quicksort algorithm with Hoare's partition\n * - Works also on LinkedList objects\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar LinkedList = __webpack_require__(11);\n\nvar Quicksort = function () {\n function Quicksort(A, compareFunction) {\n _classCallCheck(this, Quicksort);\n\n if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;\n\n var length = void 0;\n if (A instanceof LinkedList) length = A.size();else length = A.length;\n\n this._quicksort(A, 0, length - 1);\n }\n\n _createClass(Quicksort, [{\n key: '_quicksort',\n value: function _quicksort(A, p, r) {\n if (p < r) {\n var q = this._partition(A, p, r);\n this._quicksort(A, p, q);\n this._quicksort(A, q + 1, r);\n }\n }\n }, {\n key: '_partition',\n value: function _partition(A, p, r) {\n var x = this._get(A, p);\n var i = p;\n var j = r;\n while (true) {\n while (this.compareFunction(x, this._get(A, j))) {\n j--;\n }while (this.compareFunction(this._get(A, i), x)) {\n i++;\n }if (i < j) {\n this._swap(A, i, j);\n i++;\n j--;\n } else return j;\n }\n }\n }, {\n key: '_get',\n value: function _get(object, index) {\n if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];\n }\n }, {\n key: '_set',\n value: function _set(object, index, value) {\n if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;\n }\n }, {\n key: '_swap',\n value: function _swap(A, i, j) {\n var temp = this._get(A, i);\n this._set(A, i, this._get(A, j));\n this._set(A, j, temp);\n }\n }, {\n key: '_defaultCompareFunction',\n value: function _defaultCompareFunction(a, b) {\n return b > a;\n }\n }]);\n\n return Quicksort;\n}();\n\nmodule.exports = Quicksort;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Singular Value Decomposition implementation\nfunction SVD() {};\n\n/* Below singular value decomposition (svd) code including hypot function is adopted from https://github.com/dragonfly-ai/JamaJS\n Some changes are applied to make the code compatible with the fcose code and to make it independent from Jama.\n Input matrix is changed to a 2D array instead of Jama matrix. Matrix dimensions are taken according to 2D array instead of using Jama functions.\n An object that includes singular value components is created for return. \n The types of input parameters of the hypot function are removed. \n let is used instead of var for the variable initialization.\n*/\n/*\n Apache License\n Version 2.0, January 2004\n http://www.apache.org/licenses/\n\n TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n 1. Definitions.\n\n \"License\" shall mean the terms and conditions for use, reproduction,\n and distribution as defined by Sections 1 through 9 of this document.\n\n \"Licensor\" shall mean the copyright owner or entity authorized by\n the copyright owner that is granting the License.\n\n \"Legal Entity\" shall mean the union of the acting entity and all\n other entities that control, are controlled by, or are under common\n control with that entity. For the purposes of this definition,\n \"control\" means (i) the power, direct or indirect, to cause the\n direction or management of such entity, whether by contract or\n otherwise, or (ii) ownership of fifty percent (50%) or more of the\n outstanding shares, or (iii) beneficial ownership of such entity.\n\n \"You\" (or \"Your\") shall mean an individual or Legal Entity\n exercising permissions granted by this License.\n\n \"Source\" form shall mean the preferred form for making modifications,\n including but not limited to software source code, documentation\n source, and configuration files.\n\n \"Object\" form shall mean any form resulting from mechanical\n transformation or translation of a Source form, including but\n not limited to compiled object code, generated documentation,\n and conversions to other media types.\n\n \"Work\" shall mean the work of authorship, whether in Source or\n Object form, made available under the License, as indicated by a\n copyright notice that is included in or attached to the work\n (an example is provided in the Appendix below).\n\n \"Derivative Works\" shall mean any work, whether in Source or Object\n form, that is based on (or derived from) the Work and for which the\n editorial revisions, annotations, elaborations, or other modifications\n represent, as a whole, an original work of authorship. For the purposes\n of this License, Derivative Works shall not include works that remain\n separable from, or merely link (or bind by name) to the interfaces of,\n the Work and Derivative Works thereof.\n\n \"Contribution\" shall mean any work of authorship, including\n the original version of the Work and any modifications or additions\n to that Work or Derivative Works thereof, that is intentionally\n submitted to Licensor for inclusion in the Work by the copyright owner\n or by an individual or Legal Entity authorized to submit on behalf of\n the copyright owner. For the purposes of this definition, \"submitted\"\n means any form of electronic, verbal, or written communication sent\n to the Licensor or its representatives, including but not limited to\n communication on electronic mailing lists, source code control systems,\n and issue tracking systems that are managed by, or on behalf of, the\n Licensor for the purpose of discussing and improving the Work, but\n excluding communication that is conspicuously marked or otherwise\n designated in writing by the copyright owner as \"Not a Contribution.\"\n\n \"Contributor\" shall mean Licensor and any individual or Legal Entity\n on behalf of whom a Contribution has been received by Licensor and\n subsequently incorporated within the Work.\n\n 2. Grant of Copyright License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n copyright license to reproduce, prepare Derivative Works of,\n publicly display, publicly perform, sublicense, and distribute the\n Work and such Derivative Works in Source or Object form.\n\n 3. Grant of Patent License. Subject to the terms and conditions of\n this License, each Contributor hereby grants to You a perpetual,\n worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n (except as stated in this section) patent license to make, have made,\n use, offer to sell, sell, import, and otherwise transfer the Work,\n where such license applies only to those patent claims licensable\n by such Contributor that are necessarily infringed by their\n Contribution(s) alone or by combination of their Contribution(s)\n with the Work to which such Contribution(s) was submitted. If You\n institute patent litigation against any entity (including a\n cross-claim or counterclaim in a lawsuit) alleging that the Work\n or a Contribution incorporated within the Work constitutes direct\n or contributory patent infringement, then any patent licenses\n granted to You under this License for that Work shall terminate\n as of the date such litigation is filed.\n\n 4. Redistribution. You may reproduce and distribute copies of the\n Work or Derivative Works thereof in any medium, with or without\n modifications, and in Source or Object form, provided that You\n meet the following conditions:\n\n (a) You must give any other recipients of the Work or\n Derivative Works a copy of this License; and\n\n (b) You must cause any modified files to carry prominent notices\n stating that You changed the files; and\n\n (c) You must retain, in the Source form of any Derivative Works\n that You distribute, all copyright, patent, trademark, and\n attribution notices from the Source form of the Work,\n excluding those notices that do not pertain to any part of\n the Derivative Works; and\n\n (d) If the Work includes a \"NOTICE\" text file as part of its\n distribution, then any Derivative Works that You distribute must\n include a readable copy of the attribution notices contained\n within such NOTICE file, excluding those notices that do not\n pertain to any part of the Derivative Works, in at least one\n of the following places: within a NOTICE text file distributed\n as part of the Derivative Works; within the Source form or\n documentation, if provided along with the Derivative Works; or,\n within a display generated by the Derivative Works, if and\n wherever such third-party notices normally appear. The contents\n of the NOTICE file are for informational purposes only and\n do not modify the License. You may add Your own attribution\n notices within Derivative Works that You distribute, alongside\n or as an addendum to the NOTICE text from the Work, provided\n that such additional attribution notices cannot be construed\n as modifying the License.\n\n You may add Your own copyright statement to Your modifications and\n may provide additional or different license terms and conditions\n for use, reproduction, or distribution of Your modifications, or\n for any such Derivative Works as a whole, provided Your use,\n reproduction, and distribution of the Work otherwise complies with\n the conditions stated in this License.\n\n 5. Submission of Contributions. Unless You explicitly state otherwise,\n any Contribution intentionally submitted for inclusion in the Work\n by You to the Licensor shall be under the terms and conditions of\n this License, without any additional terms or conditions.\n Notwithstanding the above, nothing herein shall supersede or modify\n the terms of any separate license agreement you may have executed\n with Licensor regarding such Contributions.\n\n 6. Trademarks. This License does not grant permission to use the trade\n names, trademarks, service marks, or product names of the Licensor,\n except as required for reasonable and customary use in describing the\n origin of the Work and reproducing the content of the NOTICE file.\n\n 7. Disclaimer of Warranty. Unless required by applicable law or\n agreed to in writing, Licensor provides the Work (and each\n Contributor provides its Contributions) on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n implied, including, without limitation, any warranties or conditions\n of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n PARTICULAR PURPOSE. You are solely responsible for determining the\n appropriateness of using or redistributing the Work and assume any\n risks associated with Your exercise of permissions under this License.\n\n 8. Limitation of Liability. In no event and under no legal theory,\n whether in tort (including negligence), contract, or otherwise,\n unless required by applicable law (such as deliberate and grossly\n negligent acts) or agreed to in writing, shall any Contributor be\n liable to You for damages, including any direct, indirect, special,\n incidental, or consequential damages of any character arising as a\n result of this License or out of the use or inability to use the\n Work (including but not limited to damages for loss of goodwill,\n work stoppage, computer failure or malfunction, or any and all\n other commercial damages or losses), even if such Contributor\n has been advised of the possibility of such damages.\n\n 9. Accepting Warranty or Additional Liability. While redistributing\n the Work or Derivative Works thereof, You may choose to offer,\n and charge a fee for, acceptance of support, warranty, indemnity,\n or other liability obligations and/or rights consistent with this\n License. However, in accepting such obligations, You may act only\n on Your own behalf and on Your sole responsibility, not on behalf\n of any other Contributor, and only if You agree to indemnify,\n defend, and hold each Contributor harmless for any liability\n incurred by, or claims asserted against, such Contributor by reason\n of your accepting any such warranty or additional liability.\n\n END OF TERMS AND CONDITIONS\n\n APPENDIX: How to apply the Apache License to your work.\n\n To apply the Apache License to your work, attach the following\n boilerplate notice, with the fields enclosed by brackets \"{}\"\n replaced with your own identifying information. (Don't include\n the brackets!) The text should be enclosed in the appropriate\n comment syntax for the file format. We also recommend that a\n file or class name and description of purpose be included on the\n same \"printed page\" as the copyright notice for easier\n identification within third-party archives.\n\n Copyright {yyyy} {name of copyright owner}\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nSVD.svd = function (A) {\n this.U = null;\n this.V = null;\n this.s = null;\n this.m = 0;\n this.n = 0;\n this.m = A.length;\n this.n = A[0].length;\n var nu = Math.min(this.m, this.n);\n this.s = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(Math.min(this.m + 1, this.n));\n this.U = function (dims) {\n var allocate = function allocate(dims) {\n if (dims.length == 0) {\n return 0;\n } else {\n var array = [];\n for (var i = 0; i < dims[0]; i++) {\n array.push(allocate(dims.slice(1)));\n }\n return array;\n }\n };\n return allocate(dims);\n }([this.m, nu]);\n this.V = function (dims) {\n var allocate = function allocate(dims) {\n if (dims.length == 0) {\n return 0;\n } else {\n var array = [];\n for (var i = 0; i < dims[0]; i++) {\n array.push(allocate(dims.slice(1)));\n }\n return array;\n }\n };\n return allocate(dims);\n }([this.n, this.n]);\n var e = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(this.n);\n var work = function (s) {\n var a = [];\n while (s-- > 0) {\n a.push(0);\n }return a;\n }(this.m);\n var wantu = true;\n var wantv = true;\n var nct = Math.min(this.m - 1, this.n);\n var nrt = Math.max(0, Math.min(this.n - 2, this.m));\n for (var k = 0; k < Math.max(nct, nrt); k++) {\n if (k < nct) {\n this.s[k] = 0;\n for (var i = k; i < this.m; i++) {\n this.s[k] = SVD.hypot(this.s[k], A[i][k]);\n }\n ;\n if (this.s[k] !== 0.0) {\n if (A[k][k] < 0.0) {\n this.s[k] = -this.s[k];\n }\n for (var _i = k; _i < this.m; _i++) {\n A[_i][k] /= this.s[k];\n }\n ;\n A[k][k] += 1.0;\n }\n this.s[k] = -this.s[k];\n }\n for (var j = k + 1; j < this.n; j++) {\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(k < nct, this.s[k] !== 0.0)) {\n var t = 0;\n for (var _i2 = k; _i2 < this.m; _i2++) {\n t += A[_i2][k] * A[_i2][j];\n }\n ;\n t = -t / A[k][k];\n for (var _i3 = k; _i3 < this.m; _i3++) {\n A[_i3][j] += t * A[_i3][k];\n }\n ;\n }\n e[j] = A[k][j];\n }\n ;\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(wantu, k < nct)) {\n for (var _i4 = k; _i4 < this.m; _i4++) {\n this.U[_i4][k] = A[_i4][k];\n }\n ;\n }\n if (k < nrt) {\n e[k] = 0;\n for (var _i5 = k + 1; _i5 < this.n; _i5++) {\n e[k] = SVD.hypot(e[k], e[_i5]);\n }\n ;\n if (e[k] !== 0.0) {\n if (e[k + 1] < 0.0) {\n e[k] = -e[k];\n }\n for (var _i6 = k + 1; _i6 < this.n; _i6++) {\n e[_i6] /= e[k];\n }\n ;\n e[k + 1] += 1.0;\n }\n e[k] = -e[k];\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(k + 1 < this.m, e[k] !== 0.0)) {\n for (var _i7 = k + 1; _i7 < this.m; _i7++) {\n work[_i7] = 0.0;\n }\n ;\n for (var _j = k + 1; _j < this.n; _j++) {\n for (var _i8 = k + 1; _i8 < this.m; _i8++) {\n work[_i8] += e[_j] * A[_i8][_j];\n }\n ;\n }\n ;\n for (var _j2 = k + 1; _j2 < this.n; _j2++) {\n var _t = -e[_j2] / e[k + 1];\n for (var _i9 = k + 1; _i9 < this.m; _i9++) {\n A[_i9][_j2] += _t * work[_i9];\n }\n ;\n }\n ;\n }\n if (wantv) {\n for (var _i10 = k + 1; _i10 < this.n; _i10++) {\n this.V[_i10][k] = e[_i10];\n };\n }\n }\n };\n var p = Math.min(this.n, this.m + 1);\n if (nct < this.n) {\n this.s[nct] = A[nct][nct];\n }\n if (this.m < p) {\n this.s[p - 1] = 0.0;\n }\n if (nrt + 1 < p) {\n e[nrt] = A[nrt][p - 1];\n }\n e[p - 1] = 0.0;\n if (wantu) {\n for (var _j3 = nct; _j3 < nu; _j3++) {\n for (var _i11 = 0; _i11 < this.m; _i11++) {\n this.U[_i11][_j3] = 0.0;\n }\n ;\n this.U[_j3][_j3] = 1.0;\n };\n for (var _k = nct - 1; _k >= 0; _k--) {\n if (this.s[_k] !== 0.0) {\n for (var _j4 = _k + 1; _j4 < nu; _j4++) {\n var _t2 = 0;\n for (var _i12 = _k; _i12 < this.m; _i12++) {\n _t2 += this.U[_i12][_k] * this.U[_i12][_j4];\n };\n _t2 = -_t2 / this.U[_k][_k];\n for (var _i13 = _k; _i13 < this.m; _i13++) {\n this.U[_i13][_j4] += _t2 * this.U[_i13][_k];\n };\n };\n for (var _i14 = _k; _i14 < this.m; _i14++) {\n this.U[_i14][_k] = -this.U[_i14][_k];\n };\n this.U[_k][_k] = 1.0 + this.U[_k][_k];\n for (var _i15 = 0; _i15 < _k - 1; _i15++) {\n this.U[_i15][_k] = 0.0;\n };\n } else {\n for (var _i16 = 0; _i16 < this.m; _i16++) {\n this.U[_i16][_k] = 0.0;\n };\n this.U[_k][_k] = 1.0;\n }\n };\n }\n if (wantv) {\n for (var _k2 = this.n - 1; _k2 >= 0; _k2--) {\n if (function (lhs, rhs) {\n return lhs && rhs;\n }(_k2 < nrt, e[_k2] !== 0.0)) {\n for (var _j5 = _k2 + 1; _j5 < nu; _j5++) {\n var _t3 = 0;\n for (var _i17 = _k2 + 1; _i17 < this.n; _i17++) {\n _t3 += this.V[_i17][_k2] * this.V[_i17][_j5];\n };\n _t3 = -_t3 / this.V[_k2 + 1][_k2];\n for (var _i18 = _k2 + 1; _i18 < this.n; _i18++) {\n this.V[_i18][_j5] += _t3 * this.V[_i18][_k2];\n };\n };\n }\n for (var _i19 = 0; _i19 < this.n; _i19++) {\n this.V[_i19][_k2] = 0.0;\n };\n this.V[_k2][_k2] = 1.0;\n };\n }\n var pp = p - 1;\n var iter = 0;\n var eps = Math.pow(2.0, -52.0);\n var tiny = Math.pow(2.0, -966.0);\n while (p > 0) {\n var _k3 = void 0;\n var kase = void 0;\n for (_k3 = p - 2; _k3 >= -1; _k3--) {\n if (_k3 === -1) {\n break;\n }\n if (Math.abs(e[_k3]) <= tiny + eps * (Math.abs(this.s[_k3]) + Math.abs(this.s[_k3 + 1]))) {\n e[_k3] = 0.0;\n break;\n }\n };\n if (_k3 === p - 2) {\n kase = 4;\n } else {\n var ks = void 0;\n for (ks = p - 1; ks >= _k3; ks--) {\n if (ks === _k3) {\n break;\n }\n var _t4 = (ks !== p ? Math.abs(e[ks]) : 0.0) + (ks !== _k3 + 1 ? Math.abs(e[ks - 1]) : 0.0);\n if (Math.abs(this.s[ks]) <= tiny + eps * _t4) {\n this.s[ks] = 0.0;\n break;\n }\n };\n if (ks === _k3) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n _k3 = ks;\n }\n }\n _k3++;\n switch (kase) {\n case 1:\n {\n var f = e[p - 2];\n e[p - 2] = 0.0;\n for (var _j6 = p - 2; _j6 >= _k3; _j6--) {\n var _t5 = SVD.hypot(this.s[_j6], f);\n var cs = this.s[_j6] / _t5;\n var sn = f / _t5;\n this.s[_j6] = _t5;\n if (_j6 !== _k3) {\n f = -sn * e[_j6 - 1];\n e[_j6 - 1] = cs * e[_j6 - 1];\n }\n if (wantv) {\n for (var _i20 = 0; _i20 < this.n; _i20++) {\n _t5 = cs * this.V[_i20][_j6] + sn * this.V[_i20][p - 1];\n this.V[_i20][p - 1] = -sn * this.V[_i20][_j6] + cs * this.V[_i20][p - 1];\n this.V[_i20][_j6] = _t5;\n };\n }\n };\n };\n break;\n case 2:\n {\n var _f = e[_k3 - 1];\n e[_k3 - 1] = 0.0;\n for (var _j7 = _k3; _j7 < p; _j7++) {\n var _t6 = SVD.hypot(this.s[_j7], _f);\n var _cs = this.s[_j7] / _t6;\n var _sn = _f / _t6;\n this.s[_j7] = _t6;\n _f = -_sn * e[_j7];\n e[_j7] = _cs * e[_j7];\n if (wantu) {\n for (var _i21 = 0; _i21 < this.m; _i21++) {\n _t6 = _cs * this.U[_i21][_j7] + _sn * this.U[_i21][_k3 - 1];\n this.U[_i21][_k3 - 1] = -_sn * this.U[_i21][_j7] + _cs * this.U[_i21][_k3 - 1];\n this.U[_i21][_j7] = _t6;\n };\n }\n };\n };\n break;\n case 3:\n {\n var scale = Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[p - 1]), Math.abs(this.s[p - 2])), Math.abs(e[p - 2])), Math.abs(this.s[_k3])), Math.abs(e[_k3]));\n var sp = this.s[p - 1] / scale;\n var spm1 = this.s[p - 2] / scale;\n var epm1 = e[p - 2] / scale;\n var sk = this.s[_k3] / scale;\n var ek = e[_k3] / scale;\n var b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2.0;\n var c = sp * epm1 * (sp * epm1);\n var shift = 0.0;\n if (function (lhs, rhs) {\n return lhs || rhs;\n }(b !== 0.0, c !== 0.0)) {\n shift = Math.sqrt(b * b + c);\n if (b < 0.0) {\n shift = -shift;\n }\n shift = c / (b + shift);\n }\n var _f2 = (sk + sp) * (sk - sp) + shift;\n var g = sk * ek;\n for (var _j8 = _k3; _j8 < p - 1; _j8++) {\n var _t7 = SVD.hypot(_f2, g);\n var _cs2 = _f2 / _t7;\n var _sn2 = g / _t7;\n if (_j8 !== _k3) {\n e[_j8 - 1] = _t7;\n }\n _f2 = _cs2 * this.s[_j8] + _sn2 * e[_j8];\n e[_j8] = _cs2 * e[_j8] - _sn2 * this.s[_j8];\n g = _sn2 * this.s[_j8 + 1];\n this.s[_j8 + 1] = _cs2 * this.s[_j8 + 1];\n if (wantv) {\n for (var _i22 = 0; _i22 < this.n; _i22++) {\n _t7 = _cs2 * this.V[_i22][_j8] + _sn2 * this.V[_i22][_j8 + 1];\n this.V[_i22][_j8 + 1] = -_sn2 * this.V[_i22][_j8] + _cs2 * this.V[_i22][_j8 + 1];\n this.V[_i22][_j8] = _t7;\n };\n }\n _t7 = SVD.hypot(_f2, g);\n _cs2 = _f2 / _t7;\n _sn2 = g / _t7;\n this.s[_j8] = _t7;\n _f2 = _cs2 * e[_j8] + _sn2 * this.s[_j8 + 1];\n this.s[_j8 + 1] = -_sn2 * e[_j8] + _cs2 * this.s[_j8 + 1];\n g = _sn2 * e[_j8 + 1];\n e[_j8 + 1] = _cs2 * e[_j8 + 1];\n if (wantu && _j8 < this.m - 1) {\n for (var _i23 = 0; _i23 < this.m; _i23++) {\n _t7 = _cs2 * this.U[_i23][_j8] + _sn2 * this.U[_i23][_j8 + 1];\n this.U[_i23][_j8 + 1] = -_sn2 * this.U[_i23][_j8] + _cs2 * this.U[_i23][_j8 + 1];\n this.U[_i23][_j8] = _t7;\n };\n }\n };\n e[p - 2] = _f2;\n iter = iter + 1;\n };\n break;\n case 4:\n {\n if (this.s[_k3] <= 0.0) {\n this.s[_k3] = this.s[_k3] < 0.0 ? -this.s[_k3] : 0.0;\n if (wantv) {\n for (var _i24 = 0; _i24 <= pp; _i24++) {\n this.V[_i24][_k3] = -this.V[_i24][_k3];\n };\n }\n }\n while (_k3 < pp) {\n if (this.s[_k3] >= this.s[_k3 + 1]) {\n break;\n }\n var _t8 = this.s[_k3];\n this.s[_k3] = this.s[_k3 + 1];\n this.s[_k3 + 1] = _t8;\n if (wantv && _k3 < this.n - 1) {\n for (var _i25 = 0; _i25 < this.n; _i25++) {\n _t8 = this.V[_i25][_k3 + 1];\n this.V[_i25][_k3 + 1] = this.V[_i25][_k3];\n this.V[_i25][_k3] = _t8;\n };\n }\n if (wantu && _k3 < this.m - 1) {\n for (var _i26 = 0; _i26 < this.m; _i26++) {\n _t8 = this.U[_i26][_k3 + 1];\n this.U[_i26][_k3 + 1] = this.U[_i26][_k3];\n this.U[_i26][_k3] = _t8;\n };\n }\n _k3++;\n };\n iter = 0;\n p--;\n };\n break;\n }\n };\n var result = { U: this.U, V: this.V, S: this.s };\n return result;\n};\n\n// sqrt(a^2 + b^2) without under/overflow.\nSVD.hypot = function (a, b) {\n var r = void 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n r = Math.abs(a) * Math.sqrt(1 + r * r);\n } else if (b != 0) {\n r = a / b;\n r = Math.abs(b) * Math.sqrt(1 + r * r);\n } else {\n r = 0.0;\n }\n return r;\n};\n\nmodule.exports = SVD;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string\n * sequences by S.B.Needleman and C.D.Wunsch (1970).\n *\n * Aside from the inputs, you can assign the scores for,\n * - Match: The two characters at the current index are same.\n * - Mismatch: The two characters at the current index are different.\n * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.\n */\n\nvar NeedlemanWunsch = function () {\n function NeedlemanWunsch(sequence1, sequence2) {\n var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n\n _classCallCheck(this, NeedlemanWunsch);\n\n this.sequence1 = sequence1;\n this.sequence2 = sequence2;\n this.match_score = match_score;\n this.mismatch_penalty = mismatch_penalty;\n this.gap_penalty = gap_penalty;\n\n // Just the remove redundancy\n this.iMax = sequence1.length + 1;\n this.jMax = sequence2.length + 1;\n\n // Grid matrix of scores\n this.grid = new Array(this.iMax);\n for (var i = 0; i < this.iMax; i++) {\n this.grid[i] = new Array(this.jMax);\n\n for (var j = 0; j < this.jMax; j++) {\n this.grid[i][j] = 0;\n }\n }\n\n // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)\n this.tracebackGrid = new Array(this.iMax);\n for (var _i = 0; _i < this.iMax; _i++) {\n this.tracebackGrid[_i] = new Array(this.jMax);\n\n for (var _j = 0; _j < this.jMax; _j++) {\n this.tracebackGrid[_i][_j] = [null, null, null];\n }\n }\n\n // The aligned sequences (return multiple possibilities)\n this.alignments = [];\n\n // Final alignment score\n this.score = -1;\n\n // Calculate scores and tracebacks\n this.computeGrids();\n }\n\n _createClass(NeedlemanWunsch, [{\n key: \"getScore\",\n value: function getScore() {\n return this.score;\n }\n }, {\n key: \"getAlignments\",\n value: function getAlignments() {\n return this.alignments;\n }\n\n // Main dynamic programming procedure\n\n }, {\n key: \"computeGrids\",\n value: function computeGrids() {\n // Fill in the first row\n for (var j = 1; j < this.jMax; j++) {\n this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;\n this.tracebackGrid[0][j] = [false, false, true];\n }\n\n // Fill in the first column\n for (var i = 1; i < this.iMax; i++) {\n this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;\n this.tracebackGrid[i][0] = [false, true, false];\n }\n\n // Fill the rest of the grid\n for (var _i2 = 1; _i2 < this.iMax; _i2++) {\n for (var _j2 = 1; _j2 < this.jMax; _j2++) {\n // Find the max score(s) among [`Diag`, `Up`, `Left`]\n var diag = void 0;\n if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;\n\n var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;\n var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;\n\n // If there exists multiple max values, capture them for multiple paths\n var maxOf = [diag, up, left];\n var indices = this.arrayAllMaxIndexes(maxOf);\n\n // Update Grids\n this.grid[_i2][_j2] = maxOf[indices[0]];\n this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];\n }\n }\n\n // Update alignment score\n this.score = this.grid[this.iMax - 1][this.jMax - 1];\n }\n\n // Gets all possible valid sequence combinations\n\n }, {\n key: \"alignmentTraceback\",\n value: function alignmentTraceback() {\n var inProcessAlignments = [];\n\n inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],\n seq1: \"\",\n seq2: \"\"\n });\n\n while (inProcessAlignments[0]) {\n var current = inProcessAlignments[0];\n var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];\n\n if (directions[0]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n if (directions[1]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: '-' + current.seq2\n });\n }\n if (directions[2]) {\n inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],\n seq1: '-' + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n\n if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,\n sequence2: current.seq2\n });\n\n inProcessAlignments.shift();\n }\n\n return this.alignments;\n }\n\n // Helper Functions\n\n }, {\n key: \"getAllIndexes\",\n value: function getAllIndexes(arr, val) {\n var indexes = [],\n i = -1;\n while ((i = arr.indexOf(val, i + 1)) !== -1) {\n indexes.push(i);\n }\n return indexes;\n }\n }, {\n key: \"arrayAllMaxIndexes\",\n value: function arrayAllMaxIndexes(array) {\n return this.getAllIndexes(array, Math.max.apply(null, array));\n }\n }]);\n\n return NeedlemanWunsch;\n}();\n\nmodule.exports = NeedlemanWunsch;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutBase = function layoutBase() {\n return;\n};\n\nlayoutBase.FDLayout = __webpack_require__(18);\nlayoutBase.FDLayoutConstants = __webpack_require__(4);\nlayoutBase.FDLayoutEdge = __webpack_require__(19);\nlayoutBase.FDLayoutNode = __webpack_require__(20);\nlayoutBase.DimensionD = __webpack_require__(21);\nlayoutBase.HashMap = __webpack_require__(22);\nlayoutBase.HashSet = __webpack_require__(23);\nlayoutBase.IGeometry = __webpack_require__(8);\nlayoutBase.IMath = __webpack_require__(9);\nlayoutBase.Integer = __webpack_require__(10);\nlayoutBase.Point = __webpack_require__(12);\nlayoutBase.PointD = __webpack_require__(5);\nlayoutBase.RandomSeed = __webpack_require__(16);\nlayoutBase.RectangleD = __webpack_require__(13);\nlayoutBase.Transform = __webpack_require__(17);\nlayoutBase.UniqueIDGeneretor = __webpack_require__(14);\nlayoutBase.Quicksort = __webpack_require__(25);\nlayoutBase.LinkedList = __webpack_require__(11);\nlayoutBase.LGraphObject = __webpack_require__(2);\nlayoutBase.LGraph = __webpack_require__(6);\nlayoutBase.LEdge = __webpack_require__(1);\nlayoutBase.LGraphManager = __webpack_require__(7);\nlayoutBase.LNode = __webpack_require__(3);\nlayoutBase.Layout = __webpack_require__(15);\nlayoutBase.LayoutConstants = __webpack_require__(0);\nlayoutBase.NeedlemanWunsch = __webpack_require__(27);\nlayoutBase.Matrix = __webpack_require__(24);\nlayoutBase.SVD = __webpack_require__(26);\n\nmodule.exports = layoutBase;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Emitter() {\n this.listeners = [];\n}\n\nvar p = Emitter.prototype;\n\np.addListener = function (event, callback) {\n this.listeners.push({\n event: event,\n callback: callback\n });\n};\n\np.removeListener = function (event, callback) {\n for (var i = this.listeners.length; i >= 0; i--) {\n var l = this.listeners[i];\n\n if (l.event === event && l.callback === callback) {\n this.listeners.splice(i, 1);\n }\n }\n};\n\np.emit = function (event, data) {\n for (var i = 0; i < this.listeners.length; i++) {\n var l = this.listeners[i];\n\n if (event === l.event) {\n l.callback(data);\n }\n }\n};\n\nmodule.exports = Emitter;\n\n/***/ })\n/******/ ]);\n});", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__551__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 45:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(551);\ncoseBase.CoSEConstants = __webpack_require__(806);\ncoseBase.CoSEEdge = __webpack_require__(767);\ncoseBase.CoSEGraph = __webpack_require__(880);\ncoseBase.CoSEGraphManager = __webpack_require__(578);\ncoseBase.CoSELayout = __webpack_require__(765);\ncoseBase.CoSENode = __webpack_require__(991);\ncoseBase.ConstraintHandler = __webpack_require__(902);\n\nmodule.exports = coseBase;\n\n/***/ }),\n\n/***/ 806:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutConstants = __webpack_require__(551).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;\nCoSEConstants.ENFORCE_CONSTRAINTS = true;\nCoSEConstants.APPLY_LAYOUT = true;\nCoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS = true;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true; // this should be set to false if there will be a constraint\n// This constant is for differentiating whether actual layout algorithm that uses cose-base wants to apply only incremental layout or \n// an incremental layout on top of a randomized layout. If it is only incremental layout, then this constant should be true.\nCoSEConstants.PURE_INCREMENTAL = CoSEConstants.DEFAULT_INCREMENTAL;\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n\n/***/ 767:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutEdge = __webpack_require__(551).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n\n/***/ 880:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar LGraph = __webpack_require__(551).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n\n/***/ 578:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar LGraphManager = __webpack_require__(551).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n\n/***/ 765:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayout = __webpack_require__(551).FDLayout;\nvar CoSEGraphManager = __webpack_require__(578);\nvar CoSEGraph = __webpack_require__(880);\nvar CoSENode = __webpack_require__(991);\nvar CoSEEdge = __webpack_require__(767);\nvar CoSEConstants = __webpack_require__(806);\nvar ConstraintHandler = __webpack_require__(902);\nvar FDLayoutConstants = __webpack_require__(551).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(551).LayoutConstants;\nvar Point = __webpack_require__(551).Point;\nvar PointD = __webpack_require__(551).PointD;\nvar DimensionD = __webpack_require__(551).DimensionD;\nvar Layout = __webpack_require__(551).Layout;\nvar Integer = __webpack_require__(551).Integer;\nvar IGeometry = __webpack_require__(551).IGeometry;\nvar LGraph = __webpack_require__(551).LGraph;\nvar Transform = __webpack_require__(551).Transform;\nvar LinkedList = __webpack_require__(551).LinkedList;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n this.constraints = {}; // keep layout constraints\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n }\n};\n\n// This method is used to set CoSE related parameters used by spring embedder.\nCoSELayout.prototype.initSpringEmbedder = function () {\n FDLayout.prototype.initSpringEmbedder.call(this);\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = 0.04;\n this.coolingAdjuster = 1;\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n if (Object.keys(this.constraints).length > 0) {\n ConstraintHandler.handleConstraints(this);\n this.initConstraintVariables();\n }\n\n this.initSpringEmbedder();\n if (CoSEConstants.APPLY_LAYOUT) {\n this.runSpringEmbedder();\n }\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2;else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n if (CoSEConstants.PURE_INCREMENTAL) this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2 * ((100 - this.afterGrowthIterations) / 100);else this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\n// overrides moveNodes method in FDLayout\nCoSELayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n // calculate displacement for each node \n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.calculateDisplacement();\n }\n\n if (Object.keys(this.constraints).length > 0) {\n this.updateDisplacements();\n }\n\n // move each node\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\n// constraint related methods: initConstraintVariables and updateDisplacements\n\n// initialize constraint related variables\nCoSELayout.prototype.initConstraintVariables = function () {\n var self = this;\n this.idToNodeMap = new Map();\n this.fixedNodeSet = new Set();\n\n var allNodes = this.graphManager.getAllNodes();\n\n // fill idToNodeMap\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n this.idToNodeMap.set(node.id, node);\n }\n\n // calculate fixed node weight for given compound node\n var calculateCompoundWeight = function calculateCompoundWeight(compoundNode) {\n var nodes = compoundNode.getChild().getNodes();\n var node;\n var fixedNodeWeight = 0;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n if (self.fixedNodeSet.has(node.id)) {\n fixedNodeWeight += 100;\n }\n } else {\n fixedNodeWeight += calculateCompoundWeight(node);\n }\n }\n return fixedNodeWeight;\n };\n\n if (this.constraints.fixedNodeConstraint) {\n // fill fixedNodeSet\n this.constraints.fixedNodeConstraint.forEach(function (nodeData) {\n self.fixedNodeSet.add(nodeData.nodeId);\n });\n\n // assign fixed node weights to compounds if they contain fixed nodes\n var allNodes = this.graphManager.getAllNodes();\n var node;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getChild() != null) {\n var fixedNodeWeight = calculateCompoundWeight(node);\n if (fixedNodeWeight > 0) {\n node.fixedNodeWeight = fixedNodeWeight;\n }\n }\n }\n }\n\n if (this.constraints.relativePlacementConstraint) {\n var nodeToDummyForVerticalAlignment = new Map();\n var nodeToDummyForHorizontalAlignment = new Map();\n this.dummyToNodeForVerticalAlignment = new Map();\n this.dummyToNodeForHorizontalAlignment = new Map();\n this.fixedNodesOnHorizontal = new Set();\n this.fixedNodesOnVertical = new Set();\n\n // fill maps and sets\n this.fixedNodeSet.forEach(function (nodeId) {\n self.fixedNodesOnHorizontal.add(nodeId);\n self.fixedNodesOnVertical.add(nodeId);\n });\n\n if (this.constraints.alignmentConstraint) {\n if (this.constraints.alignmentConstraint.vertical) {\n var verticalAlignment = this.constraints.alignmentConstraint.vertical;\n for (var i = 0; i < verticalAlignment.length; i++) {\n this.dummyToNodeForVerticalAlignment.set(\"dummy\" + i, []);\n verticalAlignment[i].forEach(function (nodeId) {\n nodeToDummyForVerticalAlignment.set(nodeId, \"dummy\" + i);\n self.dummyToNodeForVerticalAlignment.get(\"dummy\" + i).push(nodeId);\n if (self.fixedNodeSet.has(nodeId)) {\n self.fixedNodesOnHorizontal.add(\"dummy\" + i);\n }\n });\n }\n }\n if (this.constraints.alignmentConstraint.horizontal) {\n var horizontalAlignment = this.constraints.alignmentConstraint.horizontal;\n for (var i = 0; i < horizontalAlignment.length; i++) {\n this.dummyToNodeForHorizontalAlignment.set(\"dummy\" + i, []);\n horizontalAlignment[i].forEach(function (nodeId) {\n nodeToDummyForHorizontalAlignment.set(nodeId, \"dummy\" + i);\n self.dummyToNodeForHorizontalAlignment.get(\"dummy\" + i).push(nodeId);\n if (self.fixedNodeSet.has(nodeId)) {\n self.fixedNodesOnVertical.add(\"dummy\" + i);\n }\n });\n }\n }\n }\n\n if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) {\n\n this.shuffle = function (array) {\n var j, x, i;\n for (i = array.length - 1; i >= 2 * array.length / 3; i--) {\n j = Math.floor(Math.random() * (i + 1));\n x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n };\n\n this.nodesInRelativeHorizontal = [];\n this.nodesInRelativeVertical = [];\n this.nodeToRelativeConstraintMapHorizontal = new Map();\n this.nodeToRelativeConstraintMapVertical = new Map();\n this.nodeToTempPositionMapHorizontal = new Map();\n this.nodeToTempPositionMapVertical = new Map();\n\n // fill arrays and maps\n this.constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n var nodeIdLeft = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left;\n var nodeIdRight = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right;\n\n if (!self.nodesInRelativeHorizontal.includes(nodeIdLeft)) {\n self.nodesInRelativeHorizontal.push(nodeIdLeft);\n self.nodeToRelativeConstraintMapHorizontal.set(nodeIdLeft, []);\n if (self.dummyToNodeForVerticalAlignment.has(nodeIdLeft)) {\n self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdLeft)[0]).getCenterX());\n } else {\n self.nodeToTempPositionMapHorizontal.set(nodeIdLeft, self.idToNodeMap.get(nodeIdLeft).getCenterX());\n }\n }\n if (!self.nodesInRelativeHorizontal.includes(nodeIdRight)) {\n self.nodesInRelativeHorizontal.push(nodeIdRight);\n self.nodeToRelativeConstraintMapHorizontal.set(nodeIdRight, []);\n if (self.dummyToNodeForVerticalAlignment.has(nodeIdRight)) {\n self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeIdRight)[0]).getCenterX());\n } else {\n self.nodeToTempPositionMapHorizontal.set(nodeIdRight, self.idToNodeMap.get(nodeIdRight).getCenterX());\n }\n }\n\n self.nodeToRelativeConstraintMapHorizontal.get(nodeIdLeft).push({ right: nodeIdRight, gap: constraint.gap });\n self.nodeToRelativeConstraintMapHorizontal.get(nodeIdRight).push({ left: nodeIdLeft, gap: constraint.gap });\n } else {\n var nodeIdTop = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top;\n var nodeIdBottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom;\n\n if (!self.nodesInRelativeVertical.includes(nodeIdTop)) {\n self.nodesInRelativeVertical.push(nodeIdTop);\n self.nodeToRelativeConstraintMapVertical.set(nodeIdTop, []);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeIdTop)) {\n self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdTop)[0]).getCenterY());\n } else {\n self.nodeToTempPositionMapVertical.set(nodeIdTop, self.idToNodeMap.get(nodeIdTop).getCenterY());\n }\n }\n if (!self.nodesInRelativeVertical.includes(nodeIdBottom)) {\n self.nodesInRelativeVertical.push(nodeIdBottom);\n self.nodeToRelativeConstraintMapVertical.set(nodeIdBottom, []);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeIdBottom)) {\n self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeIdBottom)[0]).getCenterY());\n } else {\n self.nodeToTempPositionMapVertical.set(nodeIdBottom, self.idToNodeMap.get(nodeIdBottom).getCenterY());\n }\n }\n self.nodeToRelativeConstraintMapVertical.get(nodeIdTop).push({ bottom: nodeIdBottom, gap: constraint.gap });\n self.nodeToRelativeConstraintMapVertical.get(nodeIdBottom).push({ top: nodeIdTop, gap: constraint.gap });\n }\n });\n } else {\n var subGraphOnHorizontal = new Map(); // subgraph from vertical RP constraints\n var subGraphOnVertical = new Map(); // subgraph from vertical RP constraints\n\n // construct subgraphs from relative placement constraints \n this.constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n var left = nodeToDummyForVerticalAlignment.has(constraint.left) ? nodeToDummyForVerticalAlignment.get(constraint.left) : constraint.left;\n var right = nodeToDummyForVerticalAlignment.has(constraint.right) ? nodeToDummyForVerticalAlignment.get(constraint.right) : constraint.right;\n if (subGraphOnHorizontal.has(left)) {\n subGraphOnHorizontal.get(left).push(right);\n } else {\n subGraphOnHorizontal.set(left, [right]);\n }\n if (subGraphOnHorizontal.has(right)) {\n subGraphOnHorizontal.get(right).push(left);\n } else {\n subGraphOnHorizontal.set(right, [left]);\n }\n } else {\n var top = nodeToDummyForHorizontalAlignment.has(constraint.top) ? nodeToDummyForHorizontalAlignment.get(constraint.top) : constraint.top;\n var bottom = nodeToDummyForHorizontalAlignment.has(constraint.bottom) ? nodeToDummyForHorizontalAlignment.get(constraint.bottom) : constraint.bottom;\n if (subGraphOnVertical.has(top)) {\n subGraphOnVertical.get(top).push(bottom);\n } else {\n subGraphOnVertical.set(top, [bottom]);\n }\n if (subGraphOnVertical.has(bottom)) {\n subGraphOnVertical.get(bottom).push(top);\n } else {\n subGraphOnVertical.set(bottom, [top]);\n }\n }\n });\n\n // function to construct components from a given graph \n // also returns an array that keeps whether each component contains fixed node\n var constructComponents = function constructComponents(graph, fixedNodes) {\n var components = [];\n var isFixed = [];\n var queue = new LinkedList();\n var visited = new Set();\n var count = 0;\n\n graph.forEach(function (value, key) {\n if (!visited.has(key)) {\n components[count] = [];\n isFixed[count] = false;\n var currentNode = key;\n queue.push(currentNode);\n visited.add(currentNode);\n components[count].push(currentNode);\n\n while (queue.length != 0) {\n currentNode = queue.shift();\n if (fixedNodes.has(currentNode)) {\n isFixed[count] = true;\n }\n var neighbors = graph.get(currentNode);\n neighbors.forEach(function (neighbor) {\n if (!visited.has(neighbor)) {\n queue.push(neighbor);\n visited.add(neighbor);\n components[count].push(neighbor);\n }\n });\n }\n count++;\n }\n });\n\n return { components: components, isFixed: isFixed };\n };\n\n var resultOnHorizontal = constructComponents(subGraphOnHorizontal, self.fixedNodesOnHorizontal);\n this.componentsOnHorizontal = resultOnHorizontal.components;\n this.fixedComponentsOnHorizontal = resultOnHorizontal.isFixed;\n var resultOnVertical = constructComponents(subGraphOnVertical, self.fixedNodesOnVertical);\n this.componentsOnVertical = resultOnVertical.components;\n this.fixedComponentsOnVertical = resultOnVertical.isFixed;\n }\n }\n};\n\n// updates node displacements based on constraints\nCoSELayout.prototype.updateDisplacements = function () {\n var self = this;\n if (this.constraints.fixedNodeConstraint) {\n this.constraints.fixedNodeConstraint.forEach(function (nodeData) {\n var fixedNode = self.idToNodeMap.get(nodeData.nodeId);\n fixedNode.displacementX = 0;\n fixedNode.displacementY = 0;\n });\n }\n\n if (this.constraints.alignmentConstraint) {\n if (this.constraints.alignmentConstraint.vertical) {\n var allVerticalAlignments = this.constraints.alignmentConstraint.vertical;\n for (var i = 0; i < allVerticalAlignments.length; i++) {\n var totalDisplacementX = 0;\n for (var j = 0; j < allVerticalAlignments[i].length; j++) {\n if (this.fixedNodeSet.has(allVerticalAlignments[i][j])) {\n totalDisplacementX = 0;\n break;\n }\n totalDisplacementX += this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX;\n }\n var averageDisplacementX = totalDisplacementX / allVerticalAlignments[i].length;\n for (var j = 0; j < allVerticalAlignments[i].length; j++) {\n this.idToNodeMap.get(allVerticalAlignments[i][j]).displacementX = averageDisplacementX;\n }\n }\n }\n if (this.constraints.alignmentConstraint.horizontal) {\n var allHorizontalAlignments = this.constraints.alignmentConstraint.horizontal;\n for (var i = 0; i < allHorizontalAlignments.length; i++) {\n var totalDisplacementY = 0;\n for (var j = 0; j < allHorizontalAlignments[i].length; j++) {\n if (this.fixedNodeSet.has(allHorizontalAlignments[i][j])) {\n totalDisplacementY = 0;\n break;\n }\n totalDisplacementY += this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY;\n }\n var averageDisplacementY = totalDisplacementY / allHorizontalAlignments[i].length;\n for (var j = 0; j < allHorizontalAlignments[i].length; j++) {\n this.idToNodeMap.get(allHorizontalAlignments[i][j]).displacementY = averageDisplacementY;\n }\n }\n }\n }\n\n if (this.constraints.relativePlacementConstraint) {\n\n if (CoSEConstants.RELAX_MOVEMENT_ON_CONSTRAINTS) {\n // shuffle array to randomize node processing order\n if (this.totalIterations % 10 == 0) {\n this.shuffle(this.nodesInRelativeHorizontal);\n this.shuffle(this.nodesInRelativeVertical);\n }\n\n this.nodesInRelativeHorizontal.forEach(function (nodeId) {\n if (!self.fixedNodesOnHorizontal.has(nodeId)) {\n var displacement = 0;\n if (self.dummyToNodeForVerticalAlignment.has(nodeId)) {\n displacement = self.idToNodeMap.get(self.dummyToNodeForVerticalAlignment.get(nodeId)[0]).displacementX;\n } else {\n displacement = self.idToNodeMap.get(nodeId).displacementX;\n }\n self.nodeToRelativeConstraintMapHorizontal.get(nodeId).forEach(function (constraint) {\n if (constraint.right) {\n var diff = self.nodeToTempPositionMapHorizontal.get(constraint.right) - self.nodeToTempPositionMapHorizontal.get(nodeId) - displacement;\n if (diff < constraint.gap) {\n displacement -= constraint.gap - diff;\n }\n } else {\n var diff = self.nodeToTempPositionMapHorizontal.get(nodeId) - self.nodeToTempPositionMapHorizontal.get(constraint.left) + displacement;\n if (diff < constraint.gap) {\n displacement += constraint.gap - diff;\n }\n }\n });\n self.nodeToTempPositionMapHorizontal.set(nodeId, self.nodeToTempPositionMapHorizontal.get(nodeId) + displacement);\n if (self.dummyToNodeForVerticalAlignment.has(nodeId)) {\n self.dummyToNodeForVerticalAlignment.get(nodeId).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = displacement;\n });\n } else {\n self.idToNodeMap.get(nodeId).displacementX = displacement;\n }\n }\n });\n\n this.nodesInRelativeVertical.forEach(function (nodeId) {\n if (!self.fixedNodesOnHorizontal.has(nodeId)) {\n var displacement = 0;\n if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) {\n displacement = self.idToNodeMap.get(self.dummyToNodeForHorizontalAlignment.get(nodeId)[0]).displacementY;\n } else {\n displacement = self.idToNodeMap.get(nodeId).displacementY;\n }\n self.nodeToRelativeConstraintMapVertical.get(nodeId).forEach(function (constraint) {\n if (constraint.bottom) {\n var diff = self.nodeToTempPositionMapVertical.get(constraint.bottom) - self.nodeToTempPositionMapVertical.get(nodeId) - displacement;\n if (diff < constraint.gap) {\n displacement -= constraint.gap - diff;\n }\n } else {\n var diff = self.nodeToTempPositionMapVertical.get(nodeId) - self.nodeToTempPositionMapVertical.get(constraint.top) + displacement;\n if (diff < constraint.gap) {\n displacement += constraint.gap - diff;\n }\n }\n });\n self.nodeToTempPositionMapVertical.set(nodeId, self.nodeToTempPositionMapVertical.get(nodeId) + displacement);\n if (self.dummyToNodeForHorizontalAlignment.has(nodeId)) {\n self.dummyToNodeForHorizontalAlignment.get(nodeId).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = displacement;\n });\n } else {\n self.idToNodeMap.get(nodeId).displacementY = displacement;\n }\n }\n });\n } else {\n for (var i = 0; i < this.componentsOnHorizontal.length; i++) {\n var component = this.componentsOnHorizontal[i];\n if (this.fixedComponentsOnHorizontal[i]) {\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = 0;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementX = 0;\n }\n }\n } else {\n var sum = 0;\n var count = 0;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n var actualNodes = this.dummyToNodeForVerticalAlignment.get(component[j]);\n sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementX;\n count += actualNodes.length;\n } else {\n sum += this.idToNodeMap.get(component[j]).displacementX;\n count++;\n }\n }\n var averageDisplacement = sum / count;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForVerticalAlignment.has(component[j])) {\n this.dummyToNodeForVerticalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementX = averageDisplacement;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementX = averageDisplacement;\n }\n }\n }\n }\n\n for (var i = 0; i < this.componentsOnVertical.length; i++) {\n var component = this.componentsOnVertical[i];\n if (this.fixedComponentsOnVertical[i]) {\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = 0;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementY = 0;\n }\n }\n } else {\n var sum = 0;\n var count = 0;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n var actualNodes = this.dummyToNodeForHorizontalAlignment.get(component[j]);\n sum += actualNodes.length * this.idToNodeMap.get(actualNodes[0]).displacementY;\n count += actualNodes.length;\n } else {\n sum += this.idToNodeMap.get(component[j]).displacementY;\n count++;\n }\n }\n var averageDisplacement = sum / count;\n for (var j = 0; j < component.length; j++) {\n if (this.dummyToNodeForHorizontalAlignment.has(component[j])) {\n this.dummyToNodeForHorizontalAlignment.get(component[j]).forEach(function (nodeId) {\n self.idToNodeMap.get(nodeId).displacementY = averageDisplacement;\n });\n } else {\n this.idToNodeMap.get(component[j]).displacementY = averageDisplacement;\n }\n }\n }\n }\n }\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n compoundNode.setCenter(tiledZeroDegreePack[id].centerX, tiledZeroDegreePack[id].centerY);\n\n // compound left and top margings for labels\n // when node labels are included, these values may be set to different values below and are used in tilingPostLayout,\n // otherwise they stay as zero\n compoundNode.labelMarginLeft = 0;\n compoundNode.labelMarginTop = 0;\n\n // Update compound bounds considering its label properties and set label margins for left and top\n if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = compoundNode.rect.width;\n var height = compoundNode.rect.height;\n\n if (compoundNode.labelWidth) {\n if (compoundNode.labelPosHorizontal == \"left\") {\n compoundNode.rect.x -= compoundNode.labelWidth;\n compoundNode.setWidth(width + compoundNode.labelWidth);\n compoundNode.labelMarginLeft = compoundNode.labelWidth;\n } else if (compoundNode.labelPosHorizontal == \"center\" && compoundNode.labelWidth > width) {\n compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2;\n compoundNode.setWidth(compoundNode.labelWidth);\n compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2;\n } else if (compoundNode.labelPosHorizontal == \"right\") {\n compoundNode.setWidth(width + compoundNode.labelWidth);\n }\n }\n\n if (compoundNode.labelHeight) {\n if (compoundNode.labelPosVertical == \"top\") {\n compoundNode.rect.y -= compoundNode.labelHeight;\n compoundNode.setHeight(height + compoundNode.labelHeight);\n compoundNode.labelMarginTop = compoundNode.labelHeight;\n } else if (compoundNode.labelPosVertical == \"center\" && compoundNode.labelHeight > height) {\n compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2;\n compoundNode.setHeight(compoundNode.labelHeight);\n compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2;\n } else if (compoundNode.labelPosVertical == \"bottom\") {\n compoundNode.setHeight(height + compoundNode.labelHeight);\n }\n }\n }\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n var labelMarginLeft = lCompoundNode.labelMarginLeft;\n var labelMarginTop = lCompoundNode.labelMarginTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n var labelMarginLeft = compoundNode.labelMarginLeft;\n var labelMarginTop = compoundNode.labelMarginTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin, labelMarginLeft, labelMarginTop);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin, compoundLabelMarginLeft, compoundLabelMarginTop) {\n x += compoundHorizontalMargin + compoundLabelMarginLeft;\n y += compoundVerticalMargin + compoundLabelMarginTop;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n compoundNode.setCenter(self.tiledMemberPack[id].centerX, self.tiledMemberPack[id].centerY);\n\n // compound left and top margings for labels\n // when node labels are included, these values may be set to different values below and are used in tilingPostLayout,\n // otherwise they stay as zero\n compoundNode.labelMarginLeft = 0;\n compoundNode.labelMarginTop = 0;\n\n // Update compound bounds considering its label properties and set label margins for left and top\n if (CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = compoundNode.rect.width;\n var height = compoundNode.rect.height;\n\n if (compoundNode.labelWidth) {\n if (compoundNode.labelPosHorizontal == \"left\") {\n compoundNode.rect.x -= compoundNode.labelWidth;\n compoundNode.setWidth(width + compoundNode.labelWidth);\n compoundNode.labelMarginLeft = compoundNode.labelWidth;\n } else if (compoundNode.labelPosHorizontal == \"center\" && compoundNode.labelWidth > width) {\n compoundNode.rect.x -= (compoundNode.labelWidth - width) / 2;\n compoundNode.setWidth(compoundNode.labelWidth);\n compoundNode.labelMarginLeft = (compoundNode.labelWidth - width) / 2;\n } else if (compoundNode.labelPosHorizontal == \"right\") {\n compoundNode.setWidth(width + compoundNode.labelWidth);\n }\n }\n\n if (compoundNode.labelHeight) {\n if (compoundNode.labelPosVertical == \"top\") {\n compoundNode.rect.y -= compoundNode.labelHeight;\n compoundNode.setHeight(height + compoundNode.labelHeight);\n compoundNode.labelMarginTop = compoundNode.labelHeight;\n } else if (compoundNode.labelPosVertical == \"center\" && compoundNode.labelHeight > height) {\n compoundNode.rect.y -= (compoundNode.labelHeight - height) / 2;\n compoundNode.setHeight(compoundNode.labelHeight);\n compoundNode.labelMarginTop = (compoundNode.labelHeight - height) / 2;\n } else if (compoundNode.labelPosVertical == \"bottom\") {\n compoundNode.setHeight(height + compoundNode.labelHeight);\n }\n }\n }\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var horizontalOrg = this.tileNodesByFavoringDim(nodes, minWidth, true);\n var verticalOrg = this.tileNodesByFavoringDim(nodes, minWidth, false);\n\n var horizontalRatio = this.getOrgRatio(horizontalOrg);\n var verticalRatio = this.getOrgRatio(verticalOrg);\n var bestOrg;\n\n // the best ratio is the one that is closer to 1 since the ratios are already normalized\n // and the best organization is the one that has the best ratio\n if (verticalRatio < horizontalRatio) {\n bestOrg = verticalOrg;\n } else {\n bestOrg = horizontalOrg;\n }\n\n return bestOrg;\n};\n\n// get the width/height ratio of the organization that is normalized so that it will not be less than 1\nCoSELayout.prototype.getOrgRatio = function (organization) {\n // get dimensions and calculate the initial ratio\n var width = organization.width;\n var height = organization.height;\n var ratio = width / height;\n\n // if the initial ratio is less then 1 then inverse it\n if (ratio < 1) {\n ratio = 1 / ratio;\n }\n\n // return the normalized ratio\n return ratio;\n};\n\n/*\n * Calculates the ideal width for the rows. This method assumes that\n * each node has the same sizes and calculates the ideal row width that\n * approximates a square shaped complex accordingly. However, since nodes would\n * have different sizes some rows would have different sizes and the resulting\n * shape would not be an exact square.\n */\nCoSELayout.prototype.calcIdealRowWidth = function (members, favorHorizontalDim) {\n // To approximate a square shaped complex we need to make complex width equal to complex height.\n // To achieve this we need to solve the following equation system for hc:\n // (x + bx) * hc - bx = (y + by) * vc - by, hc * vc = n\n // where x is the avarage width of the nodes, y is the avarage height of nodes\n // bx and by are the buffer sizes in horizontal and vertical dimensions accordingly,\n // hc and vc are the number of rows in horizontal and vertical dimensions\n // n is number of members.\n\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n\n // number of members\n var membersSize = members.length;\n\n // sum of the width of all members\n var totalWidth = 0;\n\n // sum of the height of all members\n var totalHeight = 0;\n\n var maxWidth = 0;\n\n // traverse all members to calculate total width and total height and get the maximum members width\n members.forEach(function (node) {\n totalWidth += node.getWidth();\n totalHeight += node.getHeight();\n\n if (node.getWidth() > maxWidth) {\n maxWidth = node.getWidth();\n }\n });\n\n // average width of the members\n var averageWidth = totalWidth / membersSize;\n\n // average height of the members\n var averageHeight = totalHeight / membersSize;\n\n // solving the initial equation system for the hc yields the following second degree equation:\n // hc^2 * (x+bx) + hc * (by - bx) - n * (y + by) = 0\n\n // the delta value to solve the equation above for hc\n var delta = Math.pow(verticalPadding - horizontalPadding, 2) + 4 * (averageWidth + horizontalPadding) * (averageHeight + verticalPadding) * membersSize;\n\n // solve the equation using delta value to calculate the horizontal count\n // that represents the number of nodes in an ideal row\n var horizontalCountDouble = (horizontalPadding - verticalPadding + Math.sqrt(delta)) / (2 * (averageWidth + horizontalPadding));\n // round the calculated horizontal count up or down according to the favored dimension\n var horizontalCount;\n\n if (favorHorizontalDim) {\n horizontalCount = Math.ceil(horizontalCountDouble);\n // if horizontalCount count is not a float value then both of rounding to floor and ceil\n // will yield the same values. Instead of repeating the same calculation try going up\n // while favoring horizontal dimension in such cases\n if (horizontalCount == horizontalCountDouble) {\n horizontalCount++;\n }\n } else {\n horizontalCount = Math.floor(horizontalCountDouble);\n }\n\n // ideal width to be calculated\n var idealWidth = horizontalCount * (averageWidth + horizontalPadding) - horizontalPadding;\n\n // if max width is bigger than calculated ideal width reset ideal width to it\n if (maxWidth > idealWidth) {\n idealWidth = maxWidth;\n }\n\n // add the left-right margins to the ideal row width\n idealWidth += horizontalPadding * 2;\n\n // return the ideal row width1\n return idealWidth;\n};\n\nCoSELayout.prototype.tileNodesByFavoringDim = function (nodes, minWidth, favorHorizontalDim) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var tilingCompareBy = CoSEConstants.TILING_COMPARE_BY;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding,\n centerX: 0,\n centerY: 0\n };\n\n if (tilingCompareBy) {\n organization.idealRowWidth = this.calcIdealRowWidth(nodes, favorHorizontalDim);\n }\n\n var getNodeArea = function getNodeArea(n) {\n return n.rect.width * n.rect.height;\n };\n\n var areaCompareFcn = function areaCompareFcn(n1, n2) {\n return getNodeArea(n2) - getNodeArea(n1);\n };\n\n // Sort the nodes in descending order of their areas\n nodes.sort(function (n1, n2) {\n var cmpBy = areaCompareFcn;\n if (organization.idealRowWidth) {\n cmpBy = tilingCompareBy;\n return cmpBy(n1.id, n2.id);\n }\n return cmpBy(n1, n2);\n });\n\n // Create the organization -> calculate compound center\n var sumCenterX = 0;\n var sumCenterY = 0;\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n sumCenterX += lNode.getCenterX();\n sumCenterY += lNode.getCenterY();\n }\n\n organization.centerX = sumCenterX / nodes.length;\n organization.centerY = sumCenterY / nodes.length;\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n var rowIndex = organization.rows.length - 1;\n if (!organization.idealRowWidth) {\n rowIndex = this.getShortestRowIndex(organization);\n }\n this.insertNodeToRow(organization, lNode, rowIndex, minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n // if there is an ideal row width specified use it instead of checking the aspect ratio\n if (organization.idealRowWidth) {\n var lastRowIndex = organization.rows.length - 1;\n var lastRowWidth = organization.rowWidth[lastRowIndex];\n\n // check and return if ideal row width will be exceed if the node is added to the row\n return lastRowWidth + extraWidth + organization.horizontalPadding <= organization.idealRowWidth;\n }\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n if (CoSEConstants.PURE_INCREMENTAL) {\n var otherEnd = node.getEdges()[0].getOtherEnd(node);\n var relativePosition = new DimensionD(node.getCenterX() - otherEnd.getCenterX(), node.getCenterY() - otherEnd.getCenterY());\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner(), relativePosition]);\n } else {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n }\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n\n if (CoSEConstants.PURE_INCREMENTAL) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeData[3].getWidth(), nodeToConnect.getCenterY() + nodeData[3].getHeight());\n } else {\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n\n/***/ 991:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar FDLayoutNode = __webpack_require__(551).FDLayoutNode;\nvar IMath = __webpack_require__(551).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.calculateDisplacement = function () {\n var layout = this.graphManager.getLayout();\n // this check is for compound nodes that contain fixed nodes\n if (this.getChild() != null && this.fixedNodeWeight) {\n this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.fixedNodeWeight;\n this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.fixedNodeWeight;\n } else {\n this.displacementX += layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY += layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n }\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // non-empty compound node, propogate movement to children as well\n if (this.child && this.child.getNodes().length > 0) {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n\n // a simple node or an empty compound node, move it\n if (this.child == null || this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n }\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n\n/***/ 902:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar CoSEConstants = __webpack_require__(806);\nvar LinkedList = __webpack_require__(551).LinkedList;\nvar Matrix = __webpack_require__(551).Matrix;\nvar SVD = __webpack_require__(551).SVD;\n\nfunction ConstraintHandler() {}\n\nConstraintHandler.handleConstraints = function (layout) {\n // let layout = this.graphManager.getLayout();\n\n // get constraints from layout\n var constraints = {};\n constraints.fixedNodeConstraint = layout.constraints.fixedNodeConstraint;\n constraints.alignmentConstraint = layout.constraints.alignmentConstraint;\n constraints.relativePlacementConstraint = layout.constraints.relativePlacementConstraint;\n\n var idToNodeMap = new Map();\n var nodeIndexes = new Map();\n var xCoords = [];\n var yCoords = [];\n\n var allNodes = layout.getAllNodes();\n var index = 0;\n // fill index map and coordinates\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n if (node.getChild() == null) {\n nodeIndexes.set(node.id, index++);\n xCoords.push(node.getCenterX());\n yCoords.push(node.getCenterY());\n idToNodeMap.set(node.id, node);\n }\n }\n\n // if there exists relative placement constraint without gap value, set it to default \n if (constraints.relativePlacementConstraint) {\n constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (!constraint.gap && constraint.gap != 0) {\n if (constraint.left) {\n constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.left).getWidth() / 2 + idToNodeMap.get(constraint.right).getWidth() / 2;\n } else {\n constraint.gap = CoSEConstants.DEFAULT_EDGE_LENGTH + idToNodeMap.get(constraint.top).getHeight() / 2 + idToNodeMap.get(constraint.bottom).getHeight() / 2;\n }\n }\n });\n }\n\n /* auxiliary functions */\n\n // calculate difference between two position objects\n var calculatePositionDiff = function calculatePositionDiff(pos1, pos2) {\n return { x: pos1.x - pos2.x, y: pos1.y - pos2.y };\n };\n\n // calculate average position of the nodes\n var calculateAvgPosition = function calculateAvgPosition(nodeIdSet) {\n var xPosSum = 0;\n var yPosSum = 0;\n nodeIdSet.forEach(function (nodeId) {\n xPosSum += xCoords[nodeIndexes.get(nodeId)];\n yPosSum += yCoords[nodeIndexes.get(nodeId)];\n });\n\n return { x: xPosSum / nodeIdSet.size, y: yPosSum / nodeIdSet.size };\n };\n\n // find an appropriate positioning for the nodes in a given graph according to relative placement constraints\n // this function also takes the fixed nodes and alignment constraints into account\n // graph: dag to be evaluated, direction: \"horizontal\" or \"vertical\", \n // fixedNodes: set of fixed nodes to consider during evaluation, dummyPositions: appropriate coordinates of the dummy nodes \n var findAppropriatePositionForRelativePlacement = function findAppropriatePositionForRelativePlacement(graph, direction, fixedNodes, dummyPositions, componentSources) {\n\n // find union of two sets\n function setUnion(setA, setB) {\n var union = new Set(setA);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = setB[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var elem = _step.value;\n\n union.add(elem);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return union;\n }\n\n // find indegree count for each node\n var inDegrees = new Map();\n\n graph.forEach(function (value, key) {\n inDegrees.set(key, 0);\n });\n graph.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n inDegrees.set(adjacent.id, inDegrees.get(adjacent.id) + 1);\n });\n });\n\n var positionMap = new Map(); // keeps the position for each node\n var pastMap = new Map(); // keeps the predecessors(past) of a node\n var queue = new LinkedList();\n inDegrees.forEach(function (value, key) {\n if (value == 0) {\n queue.push(key);\n if (!fixedNodes) {\n if (direction == \"horizontal\") {\n positionMap.set(key, nodeIndexes.has(key) ? xCoords[nodeIndexes.get(key)] : dummyPositions.get(key));\n } else {\n positionMap.set(key, nodeIndexes.has(key) ? yCoords[nodeIndexes.get(key)] : dummyPositions.get(key));\n }\n }\n } else {\n positionMap.set(key, Number.NEGATIVE_INFINITY);\n }\n if (fixedNodes) {\n pastMap.set(key, new Set([key]));\n }\n });\n\n // align sources of each component in enforcement phase\n if (fixedNodes) {\n componentSources.forEach(function (component) {\n var fixedIds = [];\n component.forEach(function (nodeId) {\n if (fixedNodes.has(nodeId)) {\n fixedIds.push(nodeId);\n }\n });\n if (fixedIds.length > 0) {\n var position = 0;\n fixedIds.forEach(function (fixedId) {\n if (direction == \"horizontal\") {\n positionMap.set(fixedId, nodeIndexes.has(fixedId) ? xCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId));\n position += positionMap.get(fixedId);\n } else {\n positionMap.set(fixedId, nodeIndexes.has(fixedId) ? yCoords[nodeIndexes.get(fixedId)] : dummyPositions.get(fixedId));\n position += positionMap.get(fixedId);\n }\n });\n position = position / fixedIds.length;\n component.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) {\n positionMap.set(nodeId, position);\n }\n });\n } else {\n var _position = 0;\n component.forEach(function (nodeId) {\n if (direction == \"horizontal\") {\n _position += nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n } else {\n _position += nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n }\n });\n _position = _position / component.length;\n component.forEach(function (nodeId) {\n positionMap.set(nodeId, _position);\n });\n }\n });\n }\n\n // calculate positions of the nodes\n\n var _loop = function _loop() {\n var currentNode = queue.shift();\n var neighbors = graph.get(currentNode);\n neighbors.forEach(function (neighbor) {\n if (positionMap.get(neighbor.id) < positionMap.get(currentNode) + neighbor.gap) {\n if (fixedNodes && fixedNodes.has(neighbor.id)) {\n var fixedPosition = void 0;\n if (direction == \"horizontal\") {\n fixedPosition = nodeIndexes.has(neighbor.id) ? xCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id);\n } else {\n fixedPosition = nodeIndexes.has(neighbor.id) ? yCoords[nodeIndexes.get(neighbor.id)] : dummyPositions.get(neighbor.id);\n }\n positionMap.set(neighbor.id, fixedPosition); // TODO: may do unnecessary work\n if (fixedPosition < positionMap.get(currentNode) + neighbor.gap) {\n var diff = positionMap.get(currentNode) + neighbor.gap - fixedPosition;\n pastMap.get(currentNode).forEach(function (nodeId) {\n positionMap.set(nodeId, positionMap.get(nodeId) - diff);\n });\n }\n } else {\n positionMap.set(neighbor.id, positionMap.get(currentNode) + neighbor.gap);\n }\n }\n inDegrees.set(neighbor.id, inDegrees.get(neighbor.id) - 1);\n if (inDegrees.get(neighbor.id) == 0) {\n queue.push(neighbor.id);\n }\n if (fixedNodes) {\n pastMap.set(neighbor.id, setUnion(pastMap.get(currentNode), pastMap.get(neighbor.id)));\n }\n });\n };\n\n while (queue.length != 0) {\n _loop();\n }\n\n // readjust position of the nodes after enforcement\n if (fixedNodes) {\n // find indegree count for each node\n var sinkNodes = new Set();\n\n graph.forEach(function (value, key) {\n if (value.length == 0) {\n sinkNodes.add(key);\n }\n });\n\n var _components = [];\n pastMap.forEach(function (value, key) {\n if (sinkNodes.has(key)) {\n var isFixedComponent = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var nodeId = _step2.value;\n\n if (fixedNodes.has(nodeId)) {\n isFixedComponent = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (!isFixedComponent) {\n var isExist = false;\n var existAt = void 0;\n _components.forEach(function (component, index) {\n if (component.has([].concat(_toConsumableArray(value))[0])) {\n isExist = true;\n existAt = index;\n }\n });\n if (!isExist) {\n _components.push(new Set(value));\n } else {\n value.forEach(function (ele) {\n _components[existAt].add(ele);\n });\n }\n }\n }\n });\n\n _components.forEach(function (component, index) {\n var minBefore = Number.POSITIVE_INFINITY;\n var minAfter = Number.POSITIVE_INFINITY;\n var maxBefore = Number.NEGATIVE_INFINITY;\n var maxAfter = Number.NEGATIVE_INFINITY;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = component[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var nodeId = _step3.value;\n\n var posBefore = void 0;\n if (direction == \"horizontal\") {\n posBefore = nodeIndexes.has(nodeId) ? xCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n } else {\n posBefore = nodeIndexes.has(nodeId) ? yCoords[nodeIndexes.get(nodeId)] : dummyPositions.get(nodeId);\n }\n var posAfter = positionMap.get(nodeId);\n if (posBefore < minBefore) {\n minBefore = posBefore;\n }\n if (posBefore > maxBefore) {\n maxBefore = posBefore;\n }\n if (posAfter < minAfter) {\n minAfter = posAfter;\n }\n if (posAfter > maxAfter) {\n maxAfter = posAfter;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var diff = (minBefore + maxBefore) / 2 - (minAfter + maxAfter) / 2;\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = component[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _nodeId = _step4.value;\n\n positionMap.set(_nodeId, positionMap.get(_nodeId) + diff);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n });\n }\n\n return positionMap;\n };\n\n // find transformation based on rel. placement constraints if there are both alignment and rel. placement constraints\n // or if there are only rel. placement contraints where the largest component isn't sufficiently large\n var applyReflectionForRelativePlacement = function applyReflectionForRelativePlacement(relativePlacementConstraints) {\n // variables to count votes\n var reflectOnY = 0,\n notReflectOnY = 0;\n var reflectOnX = 0,\n notReflectOnX = 0;\n\n relativePlacementConstraints.forEach(function (constraint) {\n if (constraint.left) {\n xCoords[nodeIndexes.get(constraint.left)] - xCoords[nodeIndexes.get(constraint.right)] >= 0 ? reflectOnY++ : notReflectOnY++;\n } else {\n yCoords[nodeIndexes.get(constraint.top)] - yCoords[nodeIndexes.get(constraint.bottom)] >= 0 ? reflectOnX++ : notReflectOnX++;\n }\n });\n\n if (reflectOnY > notReflectOnY && reflectOnX > notReflectOnX) {\n for (var _i = 0; _i < nodeIndexes.size; _i++) {\n xCoords[_i] = -1 * xCoords[_i];\n yCoords[_i] = -1 * yCoords[_i];\n }\n } else if (reflectOnY > notReflectOnY) {\n for (var _i2 = 0; _i2 < nodeIndexes.size; _i2++) {\n xCoords[_i2] = -1 * xCoords[_i2];\n }\n } else if (reflectOnX > notReflectOnX) {\n for (var _i3 = 0; _i3 < nodeIndexes.size; _i3++) {\n yCoords[_i3] = -1 * yCoords[_i3];\n }\n }\n };\n\n // find weakly connected components in undirected graph\n var findComponents = function findComponents(graph) {\n // find weakly connected components in dag\n var components = [];\n var queue = new LinkedList();\n var visited = new Set();\n var count = 0;\n\n graph.forEach(function (value, key) {\n if (!visited.has(key)) {\n components[count] = [];\n var _currentNode = key;\n queue.push(_currentNode);\n visited.add(_currentNode);\n components[count].push(_currentNode);\n\n while (queue.length != 0) {\n _currentNode = queue.shift();\n var neighbors = graph.get(_currentNode);\n neighbors.forEach(function (neighbor) {\n if (!visited.has(neighbor.id)) {\n queue.push(neighbor.id);\n visited.add(neighbor.id);\n components[count].push(neighbor.id);\n }\n });\n }\n count++;\n }\n });\n return components;\n };\n\n // return undirected version of given dag\n var dagToUndirected = function dagToUndirected(dag) {\n var undirected = new Map();\n\n dag.forEach(function (value, key) {\n undirected.set(key, []);\n });\n\n dag.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n undirected.get(key).push(adjacent);\n undirected.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction });\n });\n });\n\n return undirected;\n };\n\n // return reversed (directions inverted) version of given dag\n var dagToReversed = function dagToReversed(dag) {\n var reversed = new Map();\n\n dag.forEach(function (value, key) {\n reversed.set(key, []);\n });\n\n dag.forEach(function (value, key) {\n value.forEach(function (adjacent) {\n reversed.get(adjacent.id).push({ id: key, gap: adjacent.gap, direction: adjacent.direction });\n });\n });\n\n return reversed;\n };\n\n /**** apply transformation to the initial draft layout to better align with constrained nodes ****/\n // solve the Orthogonal Procrustean Problem to rotate and/or reflect initial draft layout\n // here we follow the solution in Chapter 20.2 of Borg, I. & Groenen, P. (2005) Modern Multidimensional Scaling: Theory and Applications \n\n /* construct source and target configurations */\n\n var targetMatrix = []; // A - target configuration\n var sourceMatrix = []; // B - source configuration \n var standardTransformation = false; // false for no transformation, true for standart (Procrustes) transformation (rotation and/or reflection)\n var reflectionType = false; // false/true for reflection check, 'reflectOnX', 'reflectOnY' or 'reflectOnBoth' for reflection type if necessary\n var fixedNodes = new Set();\n var dag = new Map(); // adjacency list to keep directed acyclic graph (dag) that consists of relative placement constraints\n var dagUndirected = new Map(); // undirected version of the dag\n var components = []; // weakly connected components\n\n // fill fixedNodes collection to use later\n if (constraints.fixedNodeConstraint) {\n constraints.fixedNodeConstraint.forEach(function (nodeData) {\n fixedNodes.add(nodeData.nodeId);\n });\n }\n\n // construct dag from relative placement constraints \n if (constraints.relativePlacementConstraint) {\n // construct both directed and undirected version of the dag\n constraints.relativePlacementConstraint.forEach(function (constraint) {\n if (constraint.left) {\n if (dag.has(constraint.left)) {\n dag.get(constraint.left).push({ id: constraint.right, gap: constraint.gap, direction: \"horizontal\" });\n } else {\n dag.set(constraint.left, [{ id: constraint.right, gap: constraint.gap, direction: \"horizontal\" }]);\n }\n if (!dag.has(constraint.right)) {\n dag.set(constraint.right, []);\n }\n } else {\n if (dag.has(constraint.top)) {\n dag.get(constraint.top).push({ id: constraint.bottom, gap: constraint.gap, direction: \"vertical\" });\n } else {\n dag.set(constraint.top, [{ id: constraint.bottom, gap: constraint.gap, direction: \"vertical\" }]);\n }\n if (!dag.has(constraint.bottom)) {\n dag.set(constraint.bottom, []);\n }\n }\n });\n\n dagUndirected = dagToUndirected(dag);\n components = findComponents(dagUndirected);\n }\n\n if (CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING) {\n // first check fixed node constraint\n if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 1) {\n constraints.fixedNodeConstraint.forEach(function (nodeData, i) {\n targetMatrix[i] = [nodeData.position.x, nodeData.position.y];\n sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeData.nodeId)], yCoords[nodeIndexes.get(nodeData.nodeId)]];\n });\n standardTransformation = true;\n } else if (constraints.alignmentConstraint) {\n (function () {\n // then check alignment constraint\n var count = 0;\n if (constraints.alignmentConstraint.vertical) {\n var verticalAlign = constraints.alignmentConstraint.vertical;\n\n var _loop2 = function _loop2(_i4) {\n var alignmentSet = new Set();\n verticalAlign[_i4].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var xPos = void 0;\n if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x;\n\n verticalAlign[_i4].forEach(function (nodeId) {\n targetMatrix[count] = [xPos, yCoords[nodeIndexes.get(nodeId)]];\n sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n count++;\n });\n };\n\n for (var _i4 = 0; _i4 < verticalAlign.length; _i4++) {\n _loop2(_i4);\n }\n standardTransformation = true;\n }\n if (constraints.alignmentConstraint.horizontal) {\n var horizontalAlign = constraints.alignmentConstraint.horizontal;\n\n var _loop3 = function _loop3(_i5) {\n var alignmentSet = new Set();\n horizontalAlign[_i5].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var yPos = void 0;\n if (intersection.size > 0) yPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y;\n\n horizontalAlign[_i5].forEach(function (nodeId) {\n targetMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yPos];\n sourceMatrix[count] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n count++;\n });\n };\n\n for (var _i5 = 0; _i5 < horizontalAlign.length; _i5++) {\n _loop3(_i5);\n }\n standardTransformation = true;\n }\n if (constraints.relativePlacementConstraint) {\n reflectionType = true;\n }\n })();\n } else if (constraints.relativePlacementConstraint) {\n // finally check relative placement constraint\n // find largest component in dag\n var largestComponentSize = 0;\n var largestComponentIndex = 0;\n for (var _i6 = 0; _i6 < components.length; _i6++) {\n if (components[_i6].length > largestComponentSize) {\n largestComponentSize = components[_i6].length;\n largestComponentIndex = _i6;\n }\n }\n // if largest component isn't dominant, then take the votes for reflection\n if (largestComponentSize < dagUndirected.size / 2) {\n applyReflectionForRelativePlacement(constraints.relativePlacementConstraint);\n standardTransformation = false;\n reflectionType = false;\n } else {\n // use largest component for transformation\n // construct horizontal and vertical subgraphs in the largest component\n var subGraphOnHorizontal = new Map();\n var subGraphOnVertical = new Map();\n var constraintsInlargestComponent = [];\n\n components[largestComponentIndex].forEach(function (nodeId) {\n dag.get(nodeId).forEach(function (adjacent) {\n if (adjacent.direction == \"horizontal\") {\n if (subGraphOnHorizontal.has(nodeId)) {\n subGraphOnHorizontal.get(nodeId).push(adjacent);\n } else {\n subGraphOnHorizontal.set(nodeId, [adjacent]);\n }\n if (!subGraphOnHorizontal.has(adjacent.id)) {\n subGraphOnHorizontal.set(adjacent.id, []);\n }\n constraintsInlargestComponent.push({ left: nodeId, right: adjacent.id });\n } else {\n if (subGraphOnVertical.has(nodeId)) {\n subGraphOnVertical.get(nodeId).push(adjacent);\n } else {\n subGraphOnVertical.set(nodeId, [adjacent]);\n }\n if (!subGraphOnVertical.has(adjacent.id)) {\n subGraphOnVertical.set(adjacent.id, []);\n }\n constraintsInlargestComponent.push({ top: nodeId, bottom: adjacent.id });\n }\n });\n });\n\n applyReflectionForRelativePlacement(constraintsInlargestComponent);\n reflectionType = false;\n\n // calculate appropriate positioning for subgraphs\n var positionMapHorizontal = findAppropriatePositionForRelativePlacement(subGraphOnHorizontal, \"horizontal\");\n var positionMapVertical = findAppropriatePositionForRelativePlacement(subGraphOnVertical, \"vertical\");\n\n // construct source and target configuration\n components[largestComponentIndex].forEach(function (nodeId, i) {\n sourceMatrix[i] = [xCoords[nodeIndexes.get(nodeId)], yCoords[nodeIndexes.get(nodeId)]];\n targetMatrix[i] = [];\n if (positionMapHorizontal.has(nodeId)) {\n targetMatrix[i][0] = positionMapHorizontal.get(nodeId);\n } else {\n targetMatrix[i][0] = xCoords[nodeIndexes.get(nodeId)];\n }\n if (positionMapVertical.has(nodeId)) {\n targetMatrix[i][1] = positionMapVertical.get(nodeId);\n } else {\n targetMatrix[i][1] = yCoords[nodeIndexes.get(nodeId)];\n }\n });\n\n standardTransformation = true;\n }\n }\n\n // if transformation is required, then calculate and apply transformation matrix\n if (standardTransformation) {\n /* calculate transformation matrix */\n var transformationMatrix = void 0;\n var targetMatrixTranspose = Matrix.transpose(targetMatrix); // A'\n var sourceMatrixTranspose = Matrix.transpose(sourceMatrix); // B'\n\n // centralize transpose matrices\n for (var _i7 = 0; _i7 < targetMatrixTranspose.length; _i7++) {\n targetMatrixTranspose[_i7] = Matrix.multGamma(targetMatrixTranspose[_i7]);\n sourceMatrixTranspose[_i7] = Matrix.multGamma(sourceMatrixTranspose[_i7]);\n }\n\n // do actual calculation for transformation matrix\n var tempMatrix = Matrix.multMat(targetMatrixTranspose, Matrix.transpose(sourceMatrixTranspose)); // tempMatrix = A'B\n var SVDResult = SVD.svd(tempMatrix); // SVD(A'B) = USV', svd function returns U, S and V \n transformationMatrix = Matrix.multMat(SVDResult.V, Matrix.transpose(SVDResult.U)); // transformationMatrix = T = VU'\n\n /* apply found transformation matrix to obtain final draft layout */\n for (var _i8 = 0; _i8 < nodeIndexes.size; _i8++) {\n var temp1 = [xCoords[_i8], yCoords[_i8]];\n var temp2 = [transformationMatrix[0][0], transformationMatrix[1][0]];\n var temp3 = [transformationMatrix[0][1], transformationMatrix[1][1]];\n xCoords[_i8] = Matrix.dotProduct(temp1, temp2);\n yCoords[_i8] = Matrix.dotProduct(temp1, temp3);\n }\n\n // applied only both alignment and rel. placement constraints exist\n if (reflectionType) {\n applyReflectionForRelativePlacement(constraints.relativePlacementConstraint);\n }\n }\n }\n\n if (CoSEConstants.ENFORCE_CONSTRAINTS) {\n /**** enforce constraints on the transformed draft layout ****/\n\n /* first enforce fixed node constraint */\n\n if (constraints.fixedNodeConstraint && constraints.fixedNodeConstraint.length > 0) {\n var translationAmount = { x: 0, y: 0 };\n constraints.fixedNodeConstraint.forEach(function (nodeData, i) {\n var posInTheory = { x: xCoords[nodeIndexes.get(nodeData.nodeId)], y: yCoords[nodeIndexes.get(nodeData.nodeId)] };\n var posDesired = nodeData.position;\n var posDiff = calculatePositionDiff(posDesired, posInTheory);\n translationAmount.x += posDiff.x;\n translationAmount.y += posDiff.y;\n });\n translationAmount.x /= constraints.fixedNodeConstraint.length;\n translationAmount.y /= constraints.fixedNodeConstraint.length;\n\n xCoords.forEach(function (value, i) {\n xCoords[i] += translationAmount.x;\n });\n\n yCoords.forEach(function (value, i) {\n yCoords[i] += translationAmount.y;\n });\n\n constraints.fixedNodeConstraint.forEach(function (nodeData) {\n xCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.x;\n yCoords[nodeIndexes.get(nodeData.nodeId)] = nodeData.position.y;\n });\n }\n\n /* then enforce alignment constraint */\n\n if (constraints.alignmentConstraint) {\n if (constraints.alignmentConstraint.vertical) {\n var xAlign = constraints.alignmentConstraint.vertical;\n\n var _loop4 = function _loop4(_i9) {\n var alignmentSet = new Set();\n xAlign[_i9].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var xPos = void 0;\n if (intersection.size > 0) xPos = xCoords[nodeIndexes.get(intersection.values().next().value)];else xPos = calculateAvgPosition(alignmentSet).x;\n\n alignmentSet.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) xCoords[nodeIndexes.get(nodeId)] = xPos;\n });\n };\n\n for (var _i9 = 0; _i9 < xAlign.length; _i9++) {\n _loop4(_i9);\n }\n }\n if (constraints.alignmentConstraint.horizontal) {\n var yAlign = constraints.alignmentConstraint.horizontal;\n\n var _loop5 = function _loop5(_i10) {\n var alignmentSet = new Set();\n yAlign[_i10].forEach(function (nodeId) {\n alignmentSet.add(nodeId);\n });\n var intersection = new Set([].concat(_toConsumableArray(alignmentSet)).filter(function (x) {\n return fixedNodes.has(x);\n }));\n var yPos = void 0;\n if (intersection.size > 0) yPos = yCoords[nodeIndexes.get(intersection.values().next().value)];else yPos = calculateAvgPosition(alignmentSet).y;\n\n alignmentSet.forEach(function (nodeId) {\n if (!fixedNodes.has(nodeId)) yCoords[nodeIndexes.get(nodeId)] = yPos;\n });\n };\n\n for (var _i10 = 0; _i10 < yAlign.length; _i10++) {\n _loop5(_i10);\n }\n }\n }\n\n /* finally enforce relative placement constraint */\n\n if (constraints.relativePlacementConstraint) {\n (function () {\n var nodeToDummyForVerticalAlignment = new Map();\n var nodeToDummyForHorizontalAlignment = new Map();\n var dummyToNodeForVerticalAlignment = new Map();\n var dummyToNodeForHorizontalAlignment = new Map();\n var dummyPositionsForVerticalAlignment = new Map();\n var dummyPositionsForHorizontalAlignment = new Map();\n var fixedNodesOnHorizontal = new Set();\n var fixedNodesOnVertical = new Set();\n\n // fill maps and sets \n fixedNodes.forEach(function (nodeId) {\n fixedNodesOnHorizontal.add(nodeId);\n fixedNodesOnVertical.add(nodeId);\n });\n\n if (constraints.alignmentConstraint) {\n if (constraints.alignmentConstraint.vertical) {\n var verticalAlignment = constraints.alignmentConstraint.vertical;\n\n var _loop6 = function _loop6(_i11) {\n dummyToNodeForVerticalAlignment.set(\"dummy\" + _i11, []);\n verticalAlignment[_i11].forEach(function (nodeId) {\n nodeToDummyForVerticalAlignment.set(nodeId, \"dummy\" + _i11);\n dummyToNodeForVerticalAlignment.get(\"dummy\" + _i11).push(nodeId);\n if (fixedNodes.has(nodeId)) {\n fixedNodesOnHorizontal.add(\"dummy\" + _i11);\n }\n });\n dummyPositionsForVerticalAlignment.set(\"dummy\" + _i11, xCoords[nodeIndexes.get(verticalAlignment[_i11][0])]);\n };\n\n for (var _i11 = 0; _i11 < verticalAlignment.length; _i11++) {\n _loop6(_i11);\n }\n }\n if (constraints.alignmentConstraint.horizontal) {\n var horizontalAlignment = constraints.alignmentConstraint.horizontal;\n\n var _loop7 = function _loop7(_i12) {\n dummyToNodeForHorizontalAlignment.set(\"dummy\" + _i12, []);\n horizontalAlignment[_i12].forEach(function (nodeId) {\n nodeToDummyForHorizontalAlignment.set(nodeId, \"dummy\" + _i12);\n dummyToNodeForHorizontalAlignment.get(\"dummy\" + _i12).push(nodeId);\n if (fixedNodes.has(nodeId)) {\n fixedNodesOnVertical.add(\"dummy\" + _i12);\n }\n });\n dummyPositionsForHorizontalAlignment.set(\"dummy\" + _i12, yCoords[nodeIndexes.get(horizontalAlignment[_i12][0])]);\n };\n\n for (var _i12 = 0; _i12 < horizontalAlignment.length; _i12++) {\n _loop7(_i12);\n }\n }\n }\n\n // construct horizontal and vertical dags (subgraphs) from overall dag\n var dagOnHorizontal = new Map();\n var dagOnVertical = new Map();\n\n var _loop8 = function _loop8(nodeId) {\n dag.get(nodeId).forEach(function (adjacent) {\n var sourceId = void 0;\n var targetNode = void 0;\n if (adjacent[\"direction\"] == \"horizontal\") {\n sourceId = nodeToDummyForVerticalAlignment.get(nodeId) ? nodeToDummyForVerticalAlignment.get(nodeId) : nodeId;\n if (nodeToDummyForVerticalAlignment.get(adjacent.id)) {\n targetNode = { id: nodeToDummyForVerticalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction };\n } else {\n targetNode = adjacent;\n }\n if (dagOnHorizontal.has(sourceId)) {\n dagOnHorizontal.get(sourceId).push(targetNode);\n } else {\n dagOnHorizontal.set(sourceId, [targetNode]);\n }\n if (!dagOnHorizontal.has(targetNode.id)) {\n dagOnHorizontal.set(targetNode.id, []);\n }\n } else {\n sourceId = nodeToDummyForHorizontalAlignment.get(nodeId) ? nodeToDummyForHorizontalAlignment.get(nodeId) : nodeId;\n if (nodeToDummyForHorizontalAlignment.get(adjacent.id)) {\n targetNode = { id: nodeToDummyForHorizontalAlignment.get(adjacent.id), gap: adjacent.gap, direction: adjacent.direction };\n } else {\n targetNode = adjacent;\n }\n if (dagOnVertical.has(sourceId)) {\n dagOnVertical.get(sourceId).push(targetNode);\n } else {\n dagOnVertical.set(sourceId, [targetNode]);\n }\n if (!dagOnVertical.has(targetNode.id)) {\n dagOnVertical.set(targetNode.id, []);\n }\n }\n });\n };\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = dag.keys()[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var nodeId = _step5.value;\n\n _loop8(nodeId);\n }\n\n // find source nodes of each component in horizontal and vertical dags\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n var undirectedOnHorizontal = dagToUndirected(dagOnHorizontal);\n var undirectedOnVertical = dagToUndirected(dagOnVertical);\n var componentsOnHorizontal = findComponents(undirectedOnHorizontal);\n var componentsOnVertical = findComponents(undirectedOnVertical);\n var reversedDagOnHorizontal = dagToReversed(dagOnHorizontal);\n var reversedDagOnVertical = dagToReversed(dagOnVertical);\n var componentSourcesOnHorizontal = [];\n var componentSourcesOnVertical = [];\n\n componentsOnHorizontal.forEach(function (component, index) {\n componentSourcesOnHorizontal[index] = [];\n component.forEach(function (nodeId) {\n if (reversedDagOnHorizontal.get(nodeId).length == 0) {\n componentSourcesOnHorizontal[index].push(nodeId);\n }\n });\n });\n\n componentsOnVertical.forEach(function (component, index) {\n componentSourcesOnVertical[index] = [];\n component.forEach(function (nodeId) {\n if (reversedDagOnVertical.get(nodeId).length == 0) {\n componentSourcesOnVertical[index].push(nodeId);\n }\n });\n });\n\n // calculate appropriate positioning for subgraphs\n var positionMapHorizontal = findAppropriatePositionForRelativePlacement(dagOnHorizontal, \"horizontal\", fixedNodesOnHorizontal, dummyPositionsForVerticalAlignment, componentSourcesOnHorizontal);\n var positionMapVertical = findAppropriatePositionForRelativePlacement(dagOnVertical, \"vertical\", fixedNodesOnVertical, dummyPositionsForHorizontalAlignment, componentSourcesOnVertical);\n\n // update positions of the nodes based on relative placement constraints\n\n var _loop9 = function _loop9(key) {\n if (dummyToNodeForVerticalAlignment.get(key)) {\n dummyToNodeForVerticalAlignment.get(key).forEach(function (nodeId) {\n xCoords[nodeIndexes.get(nodeId)] = positionMapHorizontal.get(key);\n });\n } else {\n xCoords[nodeIndexes.get(key)] = positionMapHorizontal.get(key);\n }\n };\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = positionMapHorizontal.keys()[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var key = _step6.value;\n\n _loop9(key);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n var _loop10 = function _loop10(key) {\n if (dummyToNodeForHorizontalAlignment.get(key)) {\n dummyToNodeForHorizontalAlignment.get(key).forEach(function (nodeId) {\n yCoords[nodeIndexes.get(nodeId)] = positionMapVertical.get(key);\n });\n } else {\n yCoords[nodeIndexes.get(key)] = positionMapVertical.get(key);\n }\n };\n\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = positionMapVertical.keys()[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var key = _step7.value;\n\n _loop10(key);\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n })();\n }\n }\n\n // assign new coordinates to nodes after constraint handling\n for (var _i13 = 0; _i13 < allNodes.length; _i13++) {\n var _node = allNodes[_i13];\n if (_node.getChild() == null) {\n _node.setCenter(xCoords[nodeIndexes.get(_node.id)], yCoords[nodeIndexes.get(_node.id)]);\n }\n }\n};\n\nmodule.exports = ConstraintHandler;\n\n/***/ }),\n\n/***/ 551:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__551__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(45);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"cose-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"cose-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeFcose\"] = factory(require(\"cose-base\"));\n\telse\n\t\troot[\"cytoscapeFcose\"] = factory(root[\"coseBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__140__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 658:\n/***/ ((module) => {\n\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n\n/***/ 548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n/*\n * Auxiliary functions\n */\n\nvar LinkedList = __webpack_require__(140).layoutBase.LinkedList;\n\nvar auxiliary = {};\n\n// get the top most nodes\nauxiliary.getTopMostNodes = function (nodes) {\n var nodesMap = {};\n for (var i = 0; i < nodes.length; i++) {\n nodesMap[nodes[i].id()] = true;\n }\n var roots = nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var parent = ele.parent()[0];\n while (parent != null) {\n if (nodesMap[parent.id()]) {\n return false;\n }\n parent = parent.parent()[0];\n }\n return true;\n });\n\n return roots;\n};\n\n// find disconnected components and create dummy nodes that connect them\nauxiliary.connectComponents = function (cy, eles, topMostNodes, dummyNodes) {\n var queue = new LinkedList();\n var visited = new Set();\n var visitedTopMostNodes = [];\n var currentNeighbor = void 0;\n var minDegreeNode = void 0;\n var minDegree = void 0;\n\n var isConnected = false;\n var count = 1;\n var nodesConnectedToDummy = [];\n var components = [];\n\n var _loop = function _loop() {\n var cmpt = cy.collection();\n components.push(cmpt);\n\n var currentNode = topMostNodes[0];\n var childrenOfCurrentNode = cy.collection();\n childrenOfCurrentNode.merge(currentNode).merge(currentNode.descendants().intersection(eles));\n visitedTopMostNodes.push(currentNode);\n\n childrenOfCurrentNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n cmpt.merge(node);\n });\n\n var _loop2 = function _loop2() {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n var neighborNodes = cy.collection();\n currentNode.neighborhood().nodes().forEach(function (node) {\n if (eles.intersection(currentNode.edgesWith(node)).length > 0) {\n neighborNodes.merge(node);\n }\n });\n\n for (var i = 0; i < neighborNodes.length; i++) {\n var neighborNode = neighborNodes[i];\n currentNeighbor = topMostNodes.intersection(neighborNode.union(neighborNode.ancestors()));\n if (currentNeighbor != null && !visited.has(currentNeighbor[0])) {\n var childrenOfNeighbor = currentNeighbor.union(currentNeighbor.descendants());\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n cmpt.merge(node);\n if (topMostNodes.has(node)) {\n visitedTopMostNodes.push(node);\n }\n });\n }\n }\n };\n\n while (queue.length != 0) {\n _loop2();\n }\n\n cmpt.forEach(function (node) {\n eles.intersection(node.connectedEdges()).forEach(function (e) {\n // connectedEdges() usually cached\n if (cmpt.has(e.source()) && cmpt.has(e.target())) {\n // has() is cheap\n cmpt.merge(e);\n }\n });\n });\n\n if (visitedTopMostNodes.length == topMostNodes.length) {\n isConnected = true;\n }\n\n if (!isConnected || isConnected && count > 1) {\n minDegreeNode = visitedTopMostNodes[0];\n minDegree = minDegreeNode.connectedEdges().length;\n visitedTopMostNodes.forEach(function (node) {\n if (node.connectedEdges().length < minDegree) {\n minDegree = node.connectedEdges().length;\n minDegreeNode = node;\n }\n });\n nodesConnectedToDummy.push(minDegreeNode.id());\n // TO DO: Check efficiency of this part\n var temp = cy.collection();\n temp.merge(visitedTopMostNodes[0]);\n visitedTopMostNodes.forEach(function (node) {\n temp.merge(node);\n });\n visitedTopMostNodes = [];\n topMostNodes = topMostNodes.difference(temp);\n count++;\n }\n };\n\n do {\n _loop();\n } while (!isConnected);\n\n if (dummyNodes) {\n if (nodesConnectedToDummy.length > 0) {\n dummyNodes.set('dummy' + (dummyNodes.size + 1), nodesConnectedToDummy);\n }\n }\n return components;\n};\n\n// relocates componentResult to originalCenter if there is no fixedNodeConstraint\nauxiliary.relocateComponent = function (originalCenter, componentResult, options) {\n if (!options.fixedNodeConstraint) {\n var minXCoord = Number.POSITIVE_INFINITY;\n var maxXCoord = Number.NEGATIVE_INFINITY;\n var minYCoord = Number.POSITIVE_INFINITY;\n var maxYCoord = Number.NEGATIVE_INFINITY;\n if (options.quality == \"draft\") {\n // calculate current bounding box\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = componentResult.nodeIndexes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var value = _ref2[1];\n\n var cyNode = options.cy.getElementById(key);\n if (cyNode) {\n var nodeBB = cyNode.boundingBox();\n var leftX = componentResult.xCoords[value] - nodeBB.w / 2;\n var rightX = componentResult.xCoords[value] + nodeBB.w / 2;\n var topY = componentResult.yCoords[value] - nodeBB.h / 2;\n var bottomY = componentResult.yCoords[value] + nodeBB.h / 2;\n\n if (leftX < minXCoord) minXCoord = leftX;\n if (rightX > maxXCoord) maxXCoord = rightX;\n if (topY < minYCoord) minYCoord = topY;\n if (bottomY > maxYCoord) maxYCoord = bottomY;\n }\n }\n // find difference between current and original center\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2;\n var diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2;\n // move component to original center\n componentResult.xCoords = componentResult.xCoords.map(function (x) {\n return x + diffOnX;\n });\n componentResult.yCoords = componentResult.yCoords.map(function (y) {\n return y + diffOnY;\n });\n } else {\n // calculate current bounding box\n Object.keys(componentResult).forEach(function (item) {\n var node = componentResult[item];\n var leftX = node.getRect().x;\n var rightX = node.getRect().x + node.getRect().width;\n var topY = node.getRect().y;\n var bottomY = node.getRect().y + node.getRect().height;\n\n if (leftX < minXCoord) minXCoord = leftX;\n if (rightX > maxXCoord) maxXCoord = rightX;\n if (topY < minYCoord) minYCoord = topY;\n if (bottomY > maxYCoord) maxYCoord = bottomY;\n });\n // find difference between current and original center\n var _diffOnX = originalCenter.x - (maxXCoord + minXCoord) / 2;\n var _diffOnY = originalCenter.y - (maxYCoord + minYCoord) / 2;\n // move component to original center\n Object.keys(componentResult).forEach(function (item) {\n var node = componentResult[item];\n node.setCenter(node.getCenterX() + _diffOnX, node.getCenterY() + _diffOnY);\n });\n }\n }\n};\n\nauxiliary.calcBoundingBox = function (parentNode, xCoords, yCoords, nodeIndexes) {\n // calculate bounds\n var left = Number.MAX_SAFE_INTEGER;\n var right = Number.MIN_SAFE_INTEGER;\n var top = Number.MAX_SAFE_INTEGER;\n var bottom = Number.MIN_SAFE_INTEGER;\n var nodeLeft = void 0;\n var nodeRight = void 0;\n var nodeTop = void 0;\n var nodeBottom = void 0;\n\n var nodes = parentNode.descendants().not(\":parent\");\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var node = nodes[i];\n\n nodeLeft = xCoords[nodeIndexes.get(node.id())] - node.width() / 2;\n nodeRight = xCoords[nodeIndexes.get(node.id())] + node.width() / 2;\n nodeTop = yCoords[nodeIndexes.get(node.id())] - node.height() / 2;\n nodeBottom = yCoords[nodeIndexes.get(node.id())] + node.height() / 2;\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingBox = {};\n boundingBox.topLeftX = left;\n boundingBox.topLeftY = top;\n boundingBox.width = right - left;\n boundingBox.height = bottom - top;\n return boundingBox;\n};\n\n// This function finds and returns parent nodes whose all children are hidden\nauxiliary.calcParentsWithoutChildren = function (cy, eles) {\n var parentsWithoutChildren = cy.collection();\n eles.nodes(':parent').forEach(function (parent) {\n var check = false;\n parent.children().forEach(function (child) {\n if (child.css('display') != 'none') {\n check = true;\n }\n });\n if (!check) {\n parentsWithoutChildren.merge(parent);\n }\n });\n\n return parentsWithoutChildren;\n};\n\nmodule.exports = auxiliary;\n\n/***/ }),\n\n/***/ 816:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\n/**\n The implementation of the postprocessing part that applies CoSE layout over the spectral layout\n*/\n\nvar aux = __webpack_require__(548);\nvar CoSELayout = __webpack_require__(140).CoSELayout;\nvar CoSENode = __webpack_require__(140).CoSENode;\nvar PointD = __webpack_require__(140).layoutBase.PointD;\nvar DimensionD = __webpack_require__(140).layoutBase.DimensionD;\nvar LayoutConstants = __webpack_require__(140).layoutBase.LayoutConstants;\nvar FDLayoutConstants = __webpack_require__(140).layoutBase.FDLayoutConstants;\nvar CoSEConstants = __webpack_require__(140).CoSEConstants;\n\n// main function that cose layout is processed\nvar coseLayout = function coseLayout(options, spectralResult) {\n\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n\n var nodeIndexes = void 0;\n var xCoords = void 0;\n var yCoords = void 0;\n var idToLNode = {};\n\n if (options.randomize) {\n nodeIndexes = spectralResult[\"nodeIndexes\"];\n xCoords = spectralResult[\"xCoords\"];\n yCoords = spectralResult[\"yCoords\"];\n }\n\n var isFn = function isFn(fn) {\n return typeof fn === 'function';\n };\n\n var optFn = function optFn(opt, ele) {\n if (isFn(opt)) {\n return opt(ele);\n } else {\n return opt;\n }\n };\n\n /**** Postprocessing functions ****/\n\n var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles);\n\n // transfer cytoscape nodes to cose nodes\n var processChildrenList = function processChildrenList(parent, children, layout, options) {\n var size = children.length;\n for (var i = 0; i < size; i++) {\n var theChild = children[i];\n var children_of_children = null;\n if (theChild.intersection(parentsWithoutChildren).length == 0) {\n children_of_children = theChild.children();\n }\n var theNode = void 0;\n\n var dimensions = theChild.layoutDimensions({\n nodeDimensionsIncludeLabels: options.nodeDimensionsIncludeLabels\n });\n\n if (theChild.outerWidth() != null && theChild.outerHeight() != null) {\n if (options.randomize) {\n if (!theChild.isParent()) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(xCoords[nodeIndexes.get(theChild.id())] - dimensions.w / 2, yCoords[nodeIndexes.get(theChild.id())] - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n } else {\n var parentInfo = aux.calcBoundingBox(theChild, xCoords, yCoords, nodeIndexes);\n if (theChild.intersection(parentsWithoutChildren).length == 0) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parentInfo.width, parentInfo.height)));\n } else {\n // for the parentsWithoutChildren\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(parentInfo.topLeftX, parentInfo.topLeftY), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n }\n }\n } else {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n }\n } else {\n theNode = parent.add(new CoSENode(this.graphManager));\n }\n // Attach id to the layout node and repulsion value\n theNode.id = theChild.data(\"id\");\n theNode.nodeRepulsion = optFn(options.nodeRepulsion, theChild);\n // Attach the paddings of cy node to layout node\n theNode.paddingLeft = parseInt(theChild.css('padding'));\n theNode.paddingTop = parseInt(theChild.css('padding'));\n theNode.paddingRight = parseInt(theChild.css('padding'));\n theNode.paddingBottom = parseInt(theChild.css('padding'));\n\n //Attach the label properties to both compound and simple nodes if labels will be included in node dimensions\n //These properties will be used while updating bounds of compounds during iterations or tiling\n //and will be used for simple nodes while transferring final positions to cytoscape\n if (options.nodeDimensionsIncludeLabels) {\n theNode.labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).w;\n theNode.labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false, includeOverlays: false }).h;\n theNode.labelPosVertical = theChild.css(\"text-valign\");\n theNode.labelPosHorizontal = theChild.css(\"text-halign\");\n }\n\n // Map the layout node\n idToLNode[theChild.data(\"id\")] = theNode;\n\n if (isNaN(theNode.rect.x)) {\n theNode.rect.x = 0;\n }\n\n if (isNaN(theNode.rect.y)) {\n theNode.rect.y = 0;\n }\n\n if (children_of_children != null && children_of_children.length > 0) {\n var theNewGraph = void 0;\n theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode);\n processChildrenList(theNewGraph, children_of_children, layout, options);\n }\n }\n };\n\n // transfer cytoscape edges to cose edges\n var processEdges = function processEdges(layout, gm, edges) {\n var idealLengthTotal = 0;\n var edgeCount = 0;\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var sourceNode = idToLNode[edge.data(\"source\")];\n var targetNode = idToLNode[edge.data(\"target\")];\n if (sourceNode && targetNode && sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) {\n var e1 = gm.add(layout.newEdge(), sourceNode, targetNode);\n e1.id = edge.id();\n e1.idealLength = optFn(options.idealEdgeLength, edge);\n e1.edgeElasticity = optFn(options.edgeElasticity, edge);\n idealLengthTotal += e1.idealLength;\n edgeCount++;\n }\n }\n // we need to update the ideal edge length constant with the avg. ideal length value after processing edges\n // in case there is no edge, use other options\n if (options.idealEdgeLength != null) {\n if (edgeCount > 0) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = idealLengthTotal / edgeCount;else if (!isFn(options.idealEdgeLength)) // in case there is no edge, but option gives a value to use\n CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;else // in case there is no edge and we cannot get a value from option (because it's a function)\n CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\n // we need to update these constant values based on the ideal edge length constant\n CoSEConstants.MIN_REPULSION_DIST = FDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\n CoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n }\n };\n\n // transfer cytoscape constraints to cose layout\n var processConstraints = function processConstraints(layout, options) {\n // get nodes to be fixed\n if (options.fixedNodeConstraint) {\n layout.constraints[\"fixedNodeConstraint\"] = options.fixedNodeConstraint;\n }\n // get nodes to be aligned\n if (options.alignmentConstraint) {\n layout.constraints[\"alignmentConstraint\"] = options.alignmentConstraint;\n }\n // get nodes to be relatively placed\n if (options.relativePlacementConstraint) {\n layout.constraints[\"relativePlacementConstraint\"] = options.relativePlacementConstraint;\n }\n };\n\n /**** Apply postprocessing ****/\n if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor;\n if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity;\n if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter;\n if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange;\n if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound;\n if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound;\n if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental;\n\n if (options.tilingCompareBy != null) CoSEConstants.TILING_COMPARE_BY = options.tilingCompareBy;\n\n if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 0;\n\n CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels;\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize;\n CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate;\n CoSEConstants.TILE = options.tile;\n CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical;\n CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal;\n\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = true;\n CoSEConstants.PURE_INCREMENTAL = !options.randomize;\n LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = options.uniformNodeDimensions;\n\n // This part is for debug/demo purpose\n if (options.step == \"transformed\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;\n CoSEConstants.ENFORCE_CONSTRAINTS = false;\n CoSEConstants.APPLY_LAYOUT = false;\n }\n if (options.step == \"enforced\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = true;\n CoSEConstants.APPLY_LAYOUT = false;\n }\n if (options.step == \"cose\") {\n CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = false;\n CoSEConstants.APPLY_LAYOUT = true;\n }\n if (options.step == \"all\") {\n if (options.randomize) CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = true;else CoSEConstants.TRANSFORM_ON_CONSTRAINT_HANDLING = false;\n CoSEConstants.ENFORCE_CONSTRAINTS = true;\n CoSEConstants.APPLY_LAYOUT = true;\n }\n\n if (options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint) {\n CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false;\n } else {\n CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = true;\n }\n\n var coseLayout = new CoSELayout();\n var gm = coseLayout.newGraphManager();\n\n processChildrenList(gm.addRoot(), aux.getTopMostNodes(nodes), coseLayout, options);\n processEdges(coseLayout, gm, edges);\n processConstraints(coseLayout, options);\n\n coseLayout.runLayout();\n\n return idToLNode;\n};\n\nmodule.exports = { coseLayout: coseLayout };\n\n/***/ }),\n\n/***/ 212:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n The implementation of the fcose layout algorithm\n*/\n\nvar assign = __webpack_require__(658);\nvar aux = __webpack_require__(548);\n\nvar _require = __webpack_require__(657),\n spectralLayout = _require.spectralLayout;\n\nvar _require2 = __webpack_require__(816),\n coseLayout = _require2.coseLayout;\n\nvar defaults = Object.freeze({\n\n // 'draft', 'default' or 'proof' \n // - 'draft' only applies spectral layout \n // - 'default' improves the quality with subsequent CoSE layout (fast cooling rate)\n // - 'proof' improves the quality with subsequent CoSE layout (slow cooling rate) \n quality: \"default\",\n // Use random node positions at beginning of layout\n // if this is set to false, then quality option must be \"proof\"\n randomize: true,\n // Whether or not to animate the layout\n animate: true,\n // Duration of animation in ms, if enabled\n animationDuration: 1000,\n // Easing of animation, if enabled\n animationEasing: undefined,\n // Fit the viewport to the repositioned nodes\n fit: true,\n // Padding around layout\n padding: 30,\n // Whether to include labels in node dimensions. Valid in \"proof\" quality\n nodeDimensionsIncludeLabels: false,\n // Whether or not simple nodes (non-compound nodes) are of uniform dimensions\n uniformNodeDimensions: false,\n // Whether to pack disconnected components - valid only if randomize: true\n packComponents: true,\n // Layout step - all, transformed, enforced, cose - for debug purpose only\n step: \"all\",\n\n /* spectral layout options */\n\n // False for random, true for greedy\n samplingType: true,\n // Sample size to construct distance matrix\n sampleSize: 25,\n // Separation amount between nodes\n nodeSeparation: 75,\n // Power iteration tolerance\n piTol: 0.0000001,\n\n /* CoSE layout options */\n\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: function nodeRepulsion(node) {\n return 4500;\n },\n // Ideal edge (non nested) length\n idealEdgeLength: function idealEdgeLength(edge) {\n return 50;\n },\n // Divisor to compute edge forces\n edgeElasticity: function edgeElasticity(edge) {\n return 0.45;\n },\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 0.1,\n // Gravity force (constant)\n gravity: 0.25,\n // Maximum number of iterations to perform\n numIter: 2500,\n // For enabling tiling\n tile: true,\n // The function that specifies the criteria for comparing nodes while sorting them during tiling operation.\n // Takes the node id as a parameter and the default tiling operation is perfomed when this option is not set.\n tilingCompareBy: undefined,\n // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingVertical: 10,\n // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingHorizontal: 10,\n // Gravity range (constant) for compounds\n gravityRangeCompound: 1.5,\n // Gravity force (constant) for compounds\n gravityCompound: 1.0,\n // Gravity range (constant)\n gravityRange: 3.8,\n // Initial cooling factor for incremental layout \n initialEnergyOnIncremental: 0.3,\n\n /* constraint options */\n\n // Fix required nodes to predefined positions\n // [{nodeId: 'n1', position: {x: 100, y: 200}, {...}]\n fixedNodeConstraint: undefined,\n // Align required nodes in vertical/horizontal direction\n // {vertical: [['n1', 'n2')], ['n3', 'n4']], horizontal: ['n2', 'n4']}\n alignmentConstraint: undefined,\n // Place two nodes relatively in vertical/horizontal direction \n // [{top: 'n1', bottom: 'n2', gap: 100}, {left: 'n3', right: 'n4', gap: 75}]\n relativePlacementConstraint: undefined,\n\n /* layout event callbacks */\n ready: function ready() {}, // on layoutready\n stop: function stop() {} // on layoutstop\n});\n\nvar Layout = function () {\n function Layout(options) {\n _classCallCheck(this, Layout);\n\n this.options = assign({}, defaults, options);\n }\n\n _createClass(Layout, [{\n key: 'run',\n value: function run() {\n var layout = this;\n var options = this.options;\n var cy = options.cy;\n var eles = options.eles;\n\n var spectralResult = [];\n var xCoords = void 0;\n var yCoords = void 0;\n var coseResult = [];\n var components = void 0;\n var componentCenters = [];\n\n // basic validity check for constraint inputs \n if (options.fixedNodeConstraint && (!Array.isArray(options.fixedNodeConstraint) || options.fixedNodeConstraint.length == 0)) {\n options.fixedNodeConstraint = undefined;\n }\n\n if (options.alignmentConstraint) {\n if (options.alignmentConstraint.vertical && (!Array.isArray(options.alignmentConstraint.vertical) || options.alignmentConstraint.vertical.length == 0)) {\n options.alignmentConstraint.vertical = undefined;\n }\n if (options.alignmentConstraint.horizontal && (!Array.isArray(options.alignmentConstraint.horizontal) || options.alignmentConstraint.horizontal.length == 0)) {\n options.alignmentConstraint.horizontal = undefined;\n }\n }\n\n if (options.relativePlacementConstraint && (!Array.isArray(options.relativePlacementConstraint) || options.relativePlacementConstraint.length == 0)) {\n options.relativePlacementConstraint = undefined;\n }\n\n // if any constraint exists, set some options\n var constraintExist = options.fixedNodeConstraint || options.alignmentConstraint || options.relativePlacementConstraint;\n if (constraintExist) {\n // constraints work with these options\n options.tile = false;\n options.packComponents = false;\n }\n\n // decide component packing is enabled or not\n var layUtil = void 0;\n var packingEnabled = false;\n if (cy.layoutUtilities && options.packComponents) {\n layUtil = cy.layoutUtilities(\"get\");\n if (!layUtil) layUtil = cy.layoutUtilities();\n packingEnabled = true;\n }\n\n if (eles.nodes().length > 0) {\n // if packing is not enabled, perform layout on the whole graph\n if (!packingEnabled) {\n // store component center\n var boundingBox = options.eles.boundingBox();\n componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 });\n // apply spectral layout\n if (options.randomize) {\n var result = spectralLayout(options);\n spectralResult.push(result);\n }\n // apply cose layout as postprocessing\n if (options.quality == \"default\" || options.quality == \"proof\") {\n coseResult.push(coseLayout(options, spectralResult[0]));\n aux.relocateComponent(componentCenters[0], coseResult[0], options); // relocate center to original position\n } else {\n aux.relocateComponent(componentCenters[0], spectralResult[0], options); // relocate center to original position\n }\n } else {\n // packing is enabled\n var topMostNodes = aux.getTopMostNodes(options.eles.nodes());\n components = aux.connectComponents(cy, options.eles, topMostNodes);\n // store component centers\n components.forEach(function (component) {\n var boundingBox = component.boundingBox();\n componentCenters.push({ x: boundingBox.x1 + boundingBox.w / 2, y: boundingBox.y1 + boundingBox.h / 2 });\n });\n\n //send each component to spectral layout if randomized\n if (options.randomize) {\n components.forEach(function (component) {\n options.eles = component;\n spectralResult.push(spectralLayout(options));\n });\n }\n\n if (options.quality == \"default\" || options.quality == \"proof\") {\n var toBeTiledNodes = cy.collection();\n if (options.tile) {\n // behave nodes to be tiled as one component\n var nodeIndexes = new Map();\n var _xCoords = [];\n var _yCoords = [];\n var count = 0;\n var tempSpectralResult = { nodeIndexes: nodeIndexes, xCoords: _xCoords, yCoords: _yCoords };\n var indexesToBeDeleted = [];\n components.forEach(function (component, index) {\n if (component.edges().length == 0) {\n component.nodes().forEach(function (node, i) {\n toBeTiledNodes.merge(component.nodes()[i]);\n if (!node.isParent()) {\n tempSpectralResult.nodeIndexes.set(component.nodes()[i].id(), count++);\n tempSpectralResult.xCoords.push(component.nodes()[0].position().x);\n tempSpectralResult.yCoords.push(component.nodes()[0].position().y);\n }\n });\n indexesToBeDeleted.push(index);\n }\n });\n if (toBeTiledNodes.length > 1) {\n var _boundingBox = toBeTiledNodes.boundingBox();\n componentCenters.push({ x: _boundingBox.x1 + _boundingBox.w / 2, y: _boundingBox.y1 + _boundingBox.h / 2 });\n components.push(toBeTiledNodes);\n spectralResult.push(tempSpectralResult);\n for (var i = indexesToBeDeleted.length - 1; i >= 0; i--) {\n components.splice(indexesToBeDeleted[i], 1);\n spectralResult.splice(indexesToBeDeleted[i], 1);\n componentCenters.splice(indexesToBeDeleted[i], 1);\n };\n }\n }\n components.forEach(function (component, index) {\n // send each component to cose layout\n options.eles = component;\n coseResult.push(coseLayout(options, spectralResult[index]));\n aux.relocateComponent(componentCenters[index], coseResult[index], options); // relocate center to original position\n });\n } else {\n components.forEach(function (component, index) {\n aux.relocateComponent(componentCenters[index], spectralResult[index], options); // relocate center to original position\n });\n }\n\n // packing\n var componentsEvaluated = new Set();\n if (components.length > 1) {\n var subgraphs = [];\n var hiddenEles = eles.filter(function (ele) {\n return ele.css('display') == 'none';\n });\n components.forEach(function (component, index) {\n var nodeIndexes = void 0;\n if (options.quality == \"draft\") {\n nodeIndexes = spectralResult[index].nodeIndexes;\n }\n\n if (component.nodes().not(hiddenEles).length > 0) {\n var subgraph = {};\n subgraph.edges = [];\n subgraph.nodes = [];\n var nodeIndex = void 0;\n component.nodes().not(hiddenEles).forEach(function (node) {\n if (options.quality == \"draft\") {\n if (!node.isParent()) {\n nodeIndex = nodeIndexes.get(node.id());\n subgraph.nodes.push({ x: spectralResult[index].xCoords[nodeIndex] - node.boundingbox().w / 2, y: spectralResult[index].yCoords[nodeIndex] - node.boundingbox().h / 2, width: node.boundingbox().w, height: node.boundingbox().h });\n } else {\n var parentInfo = aux.calcBoundingBox(node, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n subgraph.nodes.push({ x: parentInfo.topLeftX, y: parentInfo.topLeftY, width: parentInfo.width, height: parentInfo.height });\n }\n } else {\n if (coseResult[index][node.id()]) {\n subgraph.nodes.push({ x: coseResult[index][node.id()].getLeft(), y: coseResult[index][node.id()].getTop(), width: coseResult[index][node.id()].getWidth(), height: coseResult[index][node.id()].getHeight() });\n }\n }\n });\n component.edges().forEach(function (edge) {\n var source = edge.source();\n var target = edge.target();\n if (source.css(\"display\") != \"none\" && target.css(\"display\") != \"none\") {\n if (options.quality == \"draft\") {\n var sourceNodeIndex = nodeIndexes.get(source.id());\n var targetNodeIndex = nodeIndexes.get(target.id());\n var sourceCenter = [];\n var targetCenter = [];\n if (source.isParent()) {\n var parentInfo = aux.calcBoundingBox(source, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n sourceCenter.push(parentInfo.topLeftX + parentInfo.width / 2);\n sourceCenter.push(parentInfo.topLeftY + parentInfo.height / 2);\n } else {\n sourceCenter.push(spectralResult[index].xCoords[sourceNodeIndex]);\n sourceCenter.push(spectralResult[index].yCoords[sourceNodeIndex]);\n }\n if (target.isParent()) {\n var _parentInfo = aux.calcBoundingBox(target, spectralResult[index].xCoords, spectralResult[index].yCoords, nodeIndexes);\n targetCenter.push(_parentInfo.topLeftX + _parentInfo.width / 2);\n targetCenter.push(_parentInfo.topLeftY + _parentInfo.height / 2);\n } else {\n targetCenter.push(spectralResult[index].xCoords[targetNodeIndex]);\n targetCenter.push(spectralResult[index].yCoords[targetNodeIndex]);\n }\n subgraph.edges.push({ startX: sourceCenter[0], startY: sourceCenter[1], endX: targetCenter[0], endY: targetCenter[1] });\n } else {\n if (coseResult[index][source.id()] && coseResult[index][target.id()]) {\n subgraph.edges.push({ startX: coseResult[index][source.id()].getCenterX(), startY: coseResult[index][source.id()].getCenterY(), endX: coseResult[index][target.id()].getCenterX(), endY: coseResult[index][target.id()].getCenterY() });\n }\n }\n }\n });\n if (subgraph.nodes.length > 0) {\n subgraphs.push(subgraph);\n componentsEvaluated.add(index);\n }\n }\n });\n var shiftResult = layUtil.packComponents(subgraphs, options.randomize).shifts;\n if (options.quality == \"draft\") {\n spectralResult.forEach(function (result, index) {\n var newXCoords = result.xCoords.map(function (x) {\n return x + shiftResult[index].dx;\n });\n var newYCoords = result.yCoords.map(function (y) {\n return y + shiftResult[index].dy;\n });\n result.xCoords = newXCoords;\n result.yCoords = newYCoords;\n });\n } else {\n var _count = 0;\n componentsEvaluated.forEach(function (index) {\n Object.keys(coseResult[index]).forEach(function (item) {\n var nodeRectangle = coseResult[index][item];\n nodeRectangle.setCenter(nodeRectangle.getCenterX() + shiftResult[_count].dx, nodeRectangle.getCenterY() + shiftResult[_count].dy);\n });\n _count++;\n });\n }\n }\n }\n }\n\n // get each element's calculated position\n var getPositions = function getPositions(ele, i) {\n if (options.quality == \"default\" || options.quality == \"proof\") {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var pos = void 0;\n var node = void 0;\n var theId = ele.data('id');\n coseResult.forEach(function (result) {\n if (theId in result) {\n pos = { x: result[theId].getRect().getCenterX(), y: result[theId].getRect().getCenterY() };\n node = result[theId];\n }\n });\n if (options.nodeDimensionsIncludeLabels) {\n if (node.labelWidth) {\n if (node.labelPosHorizontal == \"left\") {\n pos.x += node.labelWidth / 2;\n } else if (node.labelPosHorizontal == \"right\") {\n pos.x -= node.labelWidth / 2;\n }\n }\n if (node.labelHeight) {\n if (node.labelPosVertical == \"top\") {\n pos.y += node.labelHeight / 2;\n } else if (node.labelPosVertical == \"bottom\") {\n pos.y -= node.labelHeight / 2;\n }\n }\n }\n if (pos == undefined) pos = { x: ele.position(\"x\"), y: ele.position(\"y\") };\n return {\n x: pos.x,\n y: pos.y\n };\n } else {\n var _pos = void 0;\n spectralResult.forEach(function (result) {\n var index = result.nodeIndexes.get(ele.id());\n if (index != undefined) {\n _pos = { x: result.xCoords[index], y: result.yCoords[index] };\n }\n });\n if (_pos == undefined) _pos = { x: ele.position(\"x\"), y: ele.position(\"y\") };\n return {\n x: _pos.x,\n y: _pos.y\n };\n }\n };\n\n // quality = \"draft\" and randomize = false are contradictive so in that case positions don't change\n if (options.quality == \"default\" || options.quality == \"proof\" || options.randomize) {\n // transfer calculated positions to nodes (positions of only simple nodes are evaluated, compounds are positioned automatically)\n var parentsWithoutChildren = aux.calcParentsWithoutChildren(cy, eles);\n var _hiddenEles = eles.filter(function (ele) {\n return ele.css('display') == 'none';\n });\n options.eles = eles.not(_hiddenEles);\n\n eles.nodes().not(\":parent\").not(_hiddenEles).layoutPositions(layout, options, getPositions);\n\n if (parentsWithoutChildren.length > 0) {\n parentsWithoutChildren.forEach(function (ele) {\n ele.position(getPositions(ele));\n });\n }\n } else {\n console.log(\"If randomize option is set to false, then quality option must be 'default' or 'proof'.\");\n }\n }\n }]);\n\n return Layout;\n}();\n\nmodule.exports = Layout;\n\n/***/ }),\n\n/***/ 657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\n/**\n The implementation of the spectral layout that is the first part of the fcose layout algorithm\n*/\n\nvar aux = __webpack_require__(548);\nvar Matrix = __webpack_require__(140).layoutBase.Matrix;\nvar SVD = __webpack_require__(140).layoutBase.SVD;\n\n// main function that spectral layout is processed\nvar spectralLayout = function spectralLayout(options) {\n\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes();\n var parentNodes = eles.nodes(\":parent\");\n\n var dummyNodes = new Map(); // map to keep dummy nodes and their neighbors\n var nodeIndexes = new Map(); // map to keep indexes to nodes\n var parentChildMap = new Map(); // mapping btw. compound and its representative node \n var allNodesNeighborhood = []; // array to keep neighborhood of all nodes\n var xCoords = [];\n var yCoords = [];\n\n var samplesColumn = []; // sampled vertices\n var minDistancesColumn = [];\n var C = []; // column sampling matrix\n var PHI = []; // intersection of column and row sampling matrices \n var INV = []; // inverse of PHI \n\n var firstSample = void 0; // the first sampled node\n var nodeSize = void 0;\n\n var infinity = 100000000;\n var small = 0.000000001;\n\n var piTol = options.piTol;\n var samplingType = options.samplingType; // false for random, true for greedy\n var nodeSeparation = options.nodeSeparation;\n var sampleSize = void 0;\n\n /**** Spectral-preprocessing functions ****/\n\n /**** Spectral layout functions ****/\n\n // determine which columns to be sampled\n var randomSampleCR = function randomSampleCR() {\n var sample = 0;\n var count = 0;\n var flag = false;\n\n while (count < sampleSize) {\n sample = Math.floor(Math.random() * nodeSize);\n\n flag = false;\n for (var i = 0; i < count; i++) {\n if (samplesColumn[i] == sample) {\n flag = true;\n break;\n }\n }\n\n if (!flag) {\n samplesColumn[count] = sample;\n count++;\n } else {\n continue;\n }\n }\n };\n\n // takes the index of the node(pivot) to initiate BFS as a parameter\n var BFS = function BFS(pivot, index, samplingMethod) {\n var path = []; // the front of the path\n var front = 0; // the back of the path\n var back = 0;\n var current = 0;\n var temp = void 0;\n var distance = [];\n\n var max_dist = 0; // the furthest node to be returned\n var max_ind = 1;\n\n for (var i = 0; i < nodeSize; i++) {\n distance[i] = infinity;\n }\n\n path[back] = pivot;\n distance[pivot] = 0;\n\n while (back >= front) {\n current = path[front++];\n var neighbors = allNodesNeighborhood[current];\n for (var _i = 0; _i < neighbors.length; _i++) {\n temp = nodeIndexes.get(neighbors[_i]);\n if (distance[temp] == infinity) {\n distance[temp] = distance[current] + 1;\n path[++back] = temp;\n }\n }\n C[current][index] = distance[current] * nodeSeparation;\n }\n\n if (samplingMethod) {\n for (var _i2 = 0; _i2 < nodeSize; _i2++) {\n if (C[_i2][index] < minDistancesColumn[_i2]) minDistancesColumn[_i2] = C[_i2][index];\n }\n\n for (var _i3 = 0; _i3 < nodeSize; _i3++) {\n if (minDistancesColumn[_i3] > max_dist) {\n max_dist = minDistancesColumn[_i3];\n max_ind = _i3;\n }\n }\n }\n return max_ind;\n };\n\n // apply BFS to all nodes or selected samples\n var allBFS = function allBFS(samplingMethod) {\n\n var sample = void 0;\n\n if (!samplingMethod) {\n randomSampleCR();\n\n // call BFS\n for (var i = 0; i < sampleSize; i++) {\n BFS(samplesColumn[i], i, samplingMethod, false);\n }\n } else {\n sample = Math.floor(Math.random() * nodeSize);\n firstSample = sample;\n\n for (var _i4 = 0; _i4 < nodeSize; _i4++) {\n minDistancesColumn[_i4] = infinity;\n }\n\n for (var _i5 = 0; _i5 < sampleSize; _i5++) {\n samplesColumn[_i5] = sample;\n sample = BFS(sample, _i5, samplingMethod);\n }\n }\n\n // form the squared distances for C\n for (var _i6 = 0; _i6 < nodeSize; _i6++) {\n for (var j = 0; j < sampleSize; j++) {\n C[_i6][j] *= C[_i6][j];\n }\n }\n\n // form PHI\n for (var _i7 = 0; _i7 < sampleSize; _i7++) {\n PHI[_i7] = [];\n }\n\n for (var _i8 = 0; _i8 < sampleSize; _i8++) {\n for (var _j = 0; _j < sampleSize; _j++) {\n PHI[_i8][_j] = C[samplesColumn[_j]][_i8];\n }\n }\n };\n\n // perform the SVD algorithm and apply a regularization step\n var sample = function sample() {\n\n var SVDResult = SVD.svd(PHI);\n\n var a_q = SVDResult.S;\n var a_u = SVDResult.U;\n var a_v = SVDResult.V;\n\n var max_s = a_q[0] * a_q[0] * a_q[0];\n\n var a_Sig = [];\n\n // regularization\n for (var i = 0; i < sampleSize; i++) {\n a_Sig[i] = [];\n for (var j = 0; j < sampleSize; j++) {\n a_Sig[i][j] = 0;\n if (i == j) {\n a_Sig[i][j] = a_q[i] / (a_q[i] * a_q[i] + max_s / (a_q[i] * a_q[i]));\n }\n }\n }\n\n INV = Matrix.multMat(Matrix.multMat(a_v, a_Sig), Matrix.transpose(a_u));\n };\n\n // calculate final coordinates \n var powerIteration = function powerIteration() {\n // two largest eigenvalues\n var theta1 = void 0;\n var theta2 = void 0;\n\n // initial guesses for eigenvectors\n var Y1 = [];\n var Y2 = [];\n\n var V1 = [];\n var V2 = [];\n\n for (var i = 0; i < nodeSize; i++) {\n Y1[i] = Math.random();\n Y2[i] = Math.random();\n }\n\n Y1 = Matrix.normalize(Y1);\n Y2 = Matrix.normalize(Y2);\n\n var count = 0;\n // to keep track of the improvement ratio in power iteration\n var current = small;\n var previous = small;\n\n var temp = void 0;\n\n while (true) {\n count++;\n\n for (var _i9 = 0; _i9 < nodeSize; _i9++) {\n V1[_i9] = Y1[_i9];\n }\n\n Y1 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V1), C, INV));\n theta1 = Matrix.dotProduct(V1, Y1);\n Y1 = Matrix.normalize(Y1);\n\n current = Matrix.dotProduct(V1, Y1);\n\n temp = Math.abs(current / previous);\n\n if (temp <= 1 + piTol && temp >= 1) {\n break;\n }\n\n previous = current;\n }\n\n for (var _i10 = 0; _i10 < nodeSize; _i10++) {\n V1[_i10] = Y1[_i10];\n }\n\n count = 0;\n previous = small;\n while (true) {\n count++;\n\n for (var _i11 = 0; _i11 < nodeSize; _i11++) {\n V2[_i11] = Y2[_i11];\n }\n\n V2 = Matrix.minusOp(V2, Matrix.multCons(V1, Matrix.dotProduct(V1, V2)));\n Y2 = Matrix.multGamma(Matrix.multL(Matrix.multGamma(V2), C, INV));\n theta2 = Matrix.dotProduct(V2, Y2);\n Y2 = Matrix.normalize(Y2);\n\n current = Matrix.dotProduct(V2, Y2);\n\n temp = Math.abs(current / previous);\n\n if (temp <= 1 + piTol && temp >= 1) {\n break;\n }\n\n previous = current;\n }\n\n for (var _i12 = 0; _i12 < nodeSize; _i12++) {\n V2[_i12] = Y2[_i12];\n }\n\n // theta1 now contains dominant eigenvalue\n // theta2 now contains the second-largest eigenvalue\n // V1 now contains theta1's eigenvector\n // V2 now contains theta2's eigenvector\n\n //populate the two vectors\n xCoords = Matrix.multCons(V1, Math.sqrt(Math.abs(theta1)));\n yCoords = Matrix.multCons(V2, Math.sqrt(Math.abs(theta2)));\n };\n\n /**** Preparation for spectral layout (Preprocessing) ****/\n\n // connect disconnected components (first top level, then inside of each compound node)\n aux.connectComponents(cy, eles, aux.getTopMostNodes(nodes), dummyNodes);\n\n parentNodes.forEach(function (ele) {\n aux.connectComponents(cy, eles, aux.getTopMostNodes(ele.descendants().intersection(eles)), dummyNodes);\n });\n\n // assign indexes to nodes (first real, then dummy nodes)\n var index = 0;\n for (var i = 0; i < nodes.length; i++) {\n if (!nodes[i].isParent()) {\n nodeIndexes.set(nodes[i].id(), index++);\n }\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = dummyNodes.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n nodeIndexes.set(key, index++);\n }\n\n // instantiate the neighborhood matrix\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n for (var _i13 = 0; _i13 < nodeIndexes.size; _i13++) {\n allNodesNeighborhood[_i13] = [];\n }\n\n // form a parent-child map to keep representative node of each compound node \n parentNodes.forEach(function (ele) {\n var children = ele.children().intersection(eles);\n\n // let random = 0;\n while (children.nodes(\":childless\").length == 0) {\n // random = Math.floor(Math.random() * children.nodes().length); // if all children are compound then proceed randomly\n children = children.nodes()[0].children().intersection(eles);\n }\n // select the representative node - we can apply different methods here\n // random = Math.floor(Math.random() * children.nodes(\":childless\").length);\n var index = 0;\n var min = children.nodes(\":childless\")[0].connectedEdges().length;\n children.nodes(\":childless\").forEach(function (ele2, i) {\n if (ele2.connectedEdges().length < min) {\n min = ele2.connectedEdges().length;\n index = i;\n }\n });\n parentChildMap.set(ele.id(), children.nodes(\":childless\")[index].id());\n });\n\n // add neighborhood relations (first real, then dummy nodes)\n nodes.forEach(function (ele) {\n var eleIndex = void 0;\n\n if (ele.isParent()) eleIndex = nodeIndexes.get(parentChildMap.get(ele.id()));else eleIndex = nodeIndexes.get(ele.id());\n\n ele.neighborhood().nodes().forEach(function (node) {\n if (eles.intersection(ele.edgesWith(node)).length > 0) {\n if (node.isParent()) allNodesNeighborhood[eleIndex].push(parentChildMap.get(node.id()));else allNodesNeighborhood[eleIndex].push(node.id());\n }\n });\n });\n\n var _loop = function _loop(_key) {\n var eleIndex = nodeIndexes.get(_key);\n var disconnectedId = void 0;\n dummyNodes.get(_key).forEach(function (id) {\n if (cy.getElementById(id).isParent()) disconnectedId = parentChildMap.get(id);else disconnectedId = id;\n\n allNodesNeighborhood[eleIndex].push(disconnectedId);\n allNodesNeighborhood[nodeIndexes.get(disconnectedId)].push(_key);\n });\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = dummyNodes.keys()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _key = _step2.value;\n\n _loop(_key);\n }\n\n // nodeSize now only considers the size of transformed graph\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n nodeSize = nodeIndexes.size;\n\n var spectralResult = void 0;\n\n // If number of nodes in transformed graph is 1 or 2, either SVD or powerIteration causes problem\n // So skip spectral and layout the graph with cose\n if (nodeSize > 2) {\n // if # of nodes in transformed graph is smaller than sample size,\n // then use # of nodes as sample size\n sampleSize = nodeSize < options.sampleSize ? nodeSize : options.sampleSize;\n\n // instantiates the partial matrices that will be used in spectral layout\n for (var _i14 = 0; _i14 < nodeSize; _i14++) {\n C[_i14] = [];\n }\n for (var _i15 = 0; _i15 < sampleSize; _i15++) {\n INV[_i15] = [];\n }\n\n /**** Apply spectral layout ****/\n\n if (options.quality == \"draft\" || options.step == \"all\") {\n allBFS(samplingType);\n sample();\n powerIteration();\n\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n } else {\n nodeIndexes.forEach(function (value, key) {\n xCoords.push(cy.getElementById(key).position(\"x\"));\n yCoords.push(cy.getElementById(key).position(\"y\"));\n });\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n }\n return spectralResult;\n } else {\n var iterator = nodeIndexes.keys();\n var firstNode = cy.getElementById(iterator.next().value);\n var firstNodePos = firstNode.position();\n var firstNodeWidth = firstNode.outerWidth();\n xCoords.push(firstNodePos.x);\n yCoords.push(firstNodePos.y);\n if (nodeSize == 2) {\n var secondNode = cy.getElementById(iterator.next().value);\n var secondNodeWidth = secondNode.outerWidth();\n xCoords.push(firstNodePos.x + firstNodeWidth / 2 + secondNodeWidth / 2 + options.idealEdgeLength);\n yCoords.push(firstNodePos.y);\n }\n\n spectralResult = { nodeIndexes: nodeIndexes, xCoords: xCoords, yCoords: yCoords };\n return spectralResult;\n }\n};\n\nmodule.exports = { spectralLayout: spectralLayout };\n\n/***/ }),\n\n/***/ 579:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n\nvar impl = __webpack_require__(212);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'fcose', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n\n/***/ 140:\n/***/ ((module) => {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__140__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(579);\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});", "import {\n selectSvgElement\n} from \"./chunk-EXTU4WIE.mjs\";\nimport {\n createText,\n getIconSVG,\n registerIconPacks,\n unknownIcon\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n cleanAndMerge,\n getEdgeId\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n clear,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n sanitizeText,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/architecture/architectureParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/architecture/architectureTypes.ts\nvar ArchitectureDirectionName = {\n L: \"left\",\n R: \"right\",\n T: \"top\",\n B: \"bottom\"\n};\nvar ArchitectureDirectionArrow = {\n L: /* @__PURE__ */ __name((scale) => `${scale},${scale / 2} 0,${scale} 0,0`, \"L\"),\n R: /* @__PURE__ */ __name((scale) => `0,${scale / 2} ${scale},0 ${scale},${scale}`, \"R\"),\n T: /* @__PURE__ */ __name((scale) => `0,0 ${scale},0 ${scale / 2},${scale}`, \"T\"),\n B: /* @__PURE__ */ __name((scale) => `${scale / 2},0 ${scale},${scale} 0,${scale}`, \"B\")\n};\nvar ArchitectureDirectionArrowShift = {\n L: /* @__PURE__ */ __name((orig, arrowSize) => orig - arrowSize + 2, \"L\"),\n R: /* @__PURE__ */ __name((orig, _arrowSize) => orig - 2, \"R\"),\n T: /* @__PURE__ */ __name((orig, arrowSize) => orig - arrowSize + 2, \"T\"),\n B: /* @__PURE__ */ __name((orig, _arrowSize) => orig - 2, \"B\")\n};\nvar getOppositeArchitectureDirection = /* @__PURE__ */ __name(function(x) {\n if (isArchitectureDirectionX(x)) {\n return x === \"L\" ? \"R\" : \"L\";\n } else {\n return x === \"T\" ? \"B\" : \"T\";\n }\n}, \"getOppositeArchitectureDirection\");\nvar isArchitectureDirection = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"L\" || temp === \"R\" || temp === \"T\" || temp === \"B\";\n}, \"isArchitectureDirection\");\nvar isArchitectureDirectionX = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"L\" || temp === \"R\";\n}, \"isArchitectureDirectionX\");\nvar isArchitectureDirectionY = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp === \"T\" || temp === \"B\";\n}, \"isArchitectureDirectionY\");\nvar isArchitectureDirectionXY = /* @__PURE__ */ __name(function(a, b) {\n const aX_bY = isArchitectureDirectionX(a) && isArchitectureDirectionY(b);\n const aY_bX = isArchitectureDirectionY(a) && isArchitectureDirectionX(b);\n return aX_bY || aY_bX;\n}, \"isArchitectureDirectionXY\");\nvar isArchitecturePairXY = /* @__PURE__ */ __name(function(pair) {\n const lhs = pair[0];\n const rhs = pair[1];\n const aX_bY = isArchitectureDirectionX(lhs) && isArchitectureDirectionY(rhs);\n const aY_bX = isArchitectureDirectionY(lhs) && isArchitectureDirectionX(rhs);\n return aX_bY || aY_bX;\n}, \"isArchitecturePairXY\");\nvar isValidArchitectureDirectionPair = /* @__PURE__ */ __name(function(x) {\n return x !== \"LL\" && x !== \"RR\" && x !== \"TT\" && x !== \"BB\";\n}, \"isValidArchitectureDirectionPair\");\nvar getArchitectureDirectionPair = /* @__PURE__ */ __name(function(sourceDir, targetDir) {\n const pair = `${sourceDir}${targetDir}`;\n return isValidArchitectureDirectionPair(pair) ? pair : void 0;\n}, \"getArchitectureDirectionPair\");\nvar shiftPositionByArchitectureDirectionPair = /* @__PURE__ */ __name(function([x, y], pair) {\n const lhs = pair[0];\n const rhs = pair[1];\n if (isArchitectureDirectionX(lhs)) {\n if (isArchitectureDirectionY(rhs)) {\n return [x + (lhs === \"L\" ? -1 : 1), y + (rhs === \"T\" ? 1 : -1)];\n } else {\n return [x + (lhs === \"L\" ? -1 : 1), y];\n }\n } else {\n if (isArchitectureDirectionX(rhs)) {\n return [x + (rhs === \"L\" ? 1 : -1), y + (lhs === \"T\" ? 1 : -1)];\n } else {\n return [x, y + (lhs === \"T\" ? 1 : -1)];\n }\n }\n}, \"shiftPositionByArchitectureDirectionPair\");\nvar getArchitectureDirectionXYFactors = /* @__PURE__ */ __name(function(pair) {\n if (pair === \"LT\" || pair === \"TL\") {\n return [1, 1];\n } else if (pair === \"BL\" || pair === \"LB\") {\n return [1, -1];\n } else if (pair === \"BR\" || pair === \"RB\") {\n return [-1, -1];\n } else {\n return [-1, 1];\n }\n}, \"getArchitectureDirectionXYFactors\");\nvar getArchitectureDirectionAlignment = /* @__PURE__ */ __name(function(a, b) {\n if (isArchitectureDirectionXY(a, b)) {\n return \"bend\";\n } else if (isArchitectureDirectionX(a)) {\n return \"horizontal\";\n }\n return \"vertical\";\n}, \"getArchitectureDirectionAlignment\");\nvar isArchitectureService = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp.type === \"service\";\n}, \"isArchitectureService\");\nvar isArchitectureJunction = /* @__PURE__ */ __name(function(x) {\n const temp = x;\n return temp.type === \"junction\";\n}, \"isArchitectureJunction\");\nvar edgeData = /* @__PURE__ */ __name((edge) => {\n return edge.data();\n}, \"edgeData\");\nvar nodeData = /* @__PURE__ */ __name((node) => {\n return node.data();\n}, \"nodeData\");\n\n// src/diagrams/architecture/architectureDb.ts\nvar DEFAULT_ARCHITECTURE_CONFIG = defaultConfig_default.architecture;\nvar ArchitectureDB = class {\n constructor() {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.elements = {};\n this.setAccTitle = setAccTitle;\n this.getAccTitle = getAccTitle;\n this.setDiagramTitle = setDiagramTitle;\n this.getDiagramTitle = getDiagramTitle;\n this.getAccDescription = getAccDescription;\n this.setAccDescription = setAccDescription;\n this.clear();\n }\n static {\n __name(this, \"ArchitectureDB\");\n }\n clear() {\n this.nodes = {};\n this.groups = {};\n this.edges = [];\n this.registeredIds = {};\n this.dataStructures = void 0;\n this.elements = {};\n clear();\n }\n addService({\n id,\n icon,\n in: parent,\n title,\n iconText\n }) {\n if (this.registeredIds[id] !== void 0) {\n throw new Error(\n `The service id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The service [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds[parent] === void 0) {\n throw new Error(\n `The service [${id}]'s parent does not exist. Please make sure the parent is created before this service`\n );\n }\n if (this.registeredIds[parent] === \"node\") {\n throw new Error(`The service [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"node\";\n this.nodes[id] = {\n id,\n type: \"service\",\n icon,\n iconText,\n title,\n edges: [],\n in: parent\n };\n }\n getServices() {\n return Object.values(this.nodes).filter(isArchitectureService);\n }\n addJunction({ id, in: parent }) {\n this.registeredIds[id] = \"node\";\n this.nodes[id] = {\n id,\n type: \"junction\",\n edges: [],\n in: parent\n };\n }\n getJunctions() {\n return Object.values(this.nodes).filter(isArchitectureJunction);\n }\n getNodes() {\n return Object.values(this.nodes);\n }\n getNode(id) {\n return this.nodes[id] ?? null;\n }\n addGroup({ id, icon, in: parent, title }) {\n if (this.registeredIds?.[id] !== void 0) {\n throw new Error(\n `The group id [${id}] is already in use by another ${this.registeredIds[id]}`\n );\n }\n if (parent !== void 0) {\n if (id === parent) {\n throw new Error(`The group [${id}] cannot be placed within itself`);\n }\n if (this.registeredIds?.[parent] === void 0) {\n throw new Error(\n `The group [${id}]'s parent does not exist. Please make sure the parent is created before this group`\n );\n }\n if (this.registeredIds?.[parent] === \"node\") {\n throw new Error(`The group [${id}]'s parent is not a group`);\n }\n }\n this.registeredIds[id] = \"group\";\n this.groups[id] = {\n id,\n icon,\n title,\n in: parent\n };\n }\n getGroups() {\n return Object.values(this.groups);\n }\n addEdge({\n lhsId,\n rhsId,\n lhsDir,\n rhsDir,\n lhsInto,\n rhsInto,\n lhsGroup,\n rhsGroup,\n title\n }) {\n if (!isArchitectureDirection(lhsDir)) {\n throw new Error(\n `Invalid direction given for left hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(lhsDir)}`\n );\n }\n if (!isArchitectureDirection(rhsDir)) {\n throw new Error(\n `Invalid direction given for right hand side of edge ${lhsId}--${rhsId}. Expected (L,R,T,B) got ${String(rhsDir)}`\n );\n }\n if (this.nodes[lhsId] === void 0 && this.groups[lhsId] === void 0) {\n throw new Error(\n `The left-hand id [${lhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n if (this.nodes[rhsId] === void 0 && this.groups[rhsId] === void 0) {\n throw new Error(\n `The right-hand id [${rhsId}] does not yet exist. Please create the service/group before declaring an edge to it.`\n );\n }\n const lhsGroupId = this.nodes[lhsId].in;\n const rhsGroupId = this.nodes[rhsId].in;\n if (lhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The left-hand id [${lhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n if (rhsGroup && lhsGroupId && rhsGroupId && lhsGroupId == rhsGroupId) {\n throw new Error(\n `The right-hand id [${rhsId}] is modified to traverse the group boundary, but the edge does not pass through two groups.`\n );\n }\n const edge = {\n lhsId,\n lhsDir,\n lhsInto,\n lhsGroup,\n rhsId,\n rhsDir,\n rhsInto,\n rhsGroup,\n title\n };\n this.edges.push(edge);\n if (this.nodes[lhsId] && this.nodes[rhsId]) {\n this.nodes[lhsId].edges.push(this.edges[this.edges.length - 1]);\n this.nodes[rhsId].edges.push(this.edges[this.edges.length - 1]);\n }\n }\n getEdges() {\n return this.edges;\n }\n /**\n * Returns the current diagram's adjacency list, spatial map, & group alignments.\n * If they have not been created, run the algorithms to generate them.\n * @returns\n */\n getDataStructures() {\n if (this.dataStructures === void 0) {\n const groupAlignments = {};\n const adjList = Object.entries(this.nodes).reduce((prevOuter, [id, service]) => {\n prevOuter[id] = service.edges.reduce((prevInner, edge) => {\n const lhsGroupId = this.getNode(edge.lhsId)?.in;\n const rhsGroupId = this.getNode(edge.rhsId)?.in;\n if (lhsGroupId && rhsGroupId && lhsGroupId !== rhsGroupId) {\n const alignment = getArchitectureDirectionAlignment(edge.lhsDir, edge.rhsDir);\n if (alignment !== \"bend\") {\n groupAlignments[lhsGroupId] ??= {};\n groupAlignments[lhsGroupId][rhsGroupId] = alignment;\n groupAlignments[rhsGroupId] ??= {};\n groupAlignments[rhsGroupId][lhsGroupId] = alignment;\n }\n }\n if (edge.lhsId === id) {\n const pair = getArchitectureDirectionPair(edge.lhsDir, edge.rhsDir);\n if (pair) {\n prevInner[pair] = edge.rhsId;\n }\n } else {\n const pair = getArchitectureDirectionPair(edge.rhsDir, edge.lhsDir);\n if (pair) {\n prevInner[pair] = edge.lhsId;\n }\n }\n return prevInner;\n }, {});\n return prevOuter;\n }, {});\n const firstId = Object.keys(adjList)[0];\n const visited = { [firstId]: 1 };\n const notVisited = Object.keys(adjList).reduce(\n (prev, id) => id === firstId ? prev : { ...prev, [id]: 1 },\n {}\n );\n const BFS = /* @__PURE__ */ __name((startingId) => {\n const spatialMap = { [startingId]: [0, 0] };\n const queue = [startingId];\n while (queue.length > 0) {\n const id = queue.shift();\n if (id) {\n visited[id] = 1;\n delete notVisited[id];\n const adj = adjList[id];\n const [posX, posY] = spatialMap[id];\n Object.entries(adj).forEach(([dir, rhsId]) => {\n if (!visited[rhsId]) {\n spatialMap[rhsId] = shiftPositionByArchitectureDirectionPair(\n [posX, posY],\n dir\n );\n queue.push(rhsId);\n }\n });\n }\n }\n return spatialMap;\n }, \"BFS\");\n const spatialMaps = [BFS(firstId)];\n while (Object.keys(notVisited).length > 0) {\n spatialMaps.push(BFS(Object.keys(notVisited)[0]));\n }\n this.dataStructures = {\n adjList,\n spatialMaps,\n groupAlignments\n };\n }\n return this.dataStructures;\n }\n setElementForId(id, element) {\n this.elements[id] = element;\n }\n getElementById(id) {\n return this.elements[id];\n }\n getConfig() {\n return cleanAndMerge({\n ...DEFAULT_ARCHITECTURE_CONFIG,\n ...getConfig().architecture\n });\n }\n getConfigField(field) {\n return this.getConfig()[field];\n }\n};\n\n// src/diagrams/architecture/architectureParser.ts\nvar populateDb = /* @__PURE__ */ __name((ast, db) => {\n populateCommonDb(ast, db);\n ast.groups.map((group) => db.addGroup(group));\n ast.services.map((service) => db.addService({ ...service, type: \"service\" }));\n ast.junctions.map((service) => db.addJunction({ ...service, type: \"junction\" }));\n ast.edges.map((edge) => db.addEdge(edge));\n}, \"populateDb\");\nvar parser = {\n parser: {\n // @ts-expect-error - ArchitectureDB is not assignable to DiagramDB\n yy: void 0\n },\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"architecture\", input);\n log.debug(ast);\n const db = parser.parser?.yy;\n if (!(db instanceof ArchitectureDB)) {\n throw new Error(\n \"parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.\"\n );\n }\n populateDb(ast, db);\n }, \"parse\")\n};\n\n// src/diagrams/architecture/architectureStyles.ts\nvar getStyles = /* @__PURE__ */ __name((options) => `\n .edge {\n stroke-width: ${options.archEdgeWidth};\n stroke: ${options.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${options.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${options.archGroupBorderColor};\n stroke-width: ${options.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`, \"getStyles\");\nvar architectureStyles_default = getStyles;\n\n// src/diagrams/architecture/architectureRenderer.ts\nimport cytoscape from \"cytoscape\";\nimport fcose from \"cytoscape-fcose\";\nimport { select } from \"d3\";\n\n// src/diagrams/architecture/architectureIcons.ts\nvar wrapIcon = /* @__PURE__ */ __name((icon) => {\n return ` ${icon} `;\n}, \"wrapIcon\");\nvar architectureIcons = {\n prefix: \"mermaid-architecture\",\n height: 80,\n width: 80,\n icons: {\n database: {\n body: wrapIcon(\n ' '\n )\n },\n server: {\n body: wrapIcon(\n ' '\n )\n },\n disk: {\n body: wrapIcon(\n ' '\n )\n },\n internet: {\n body: wrapIcon(\n ' '\n )\n },\n cloud: {\n body: wrapIcon(\n ' '\n )\n },\n unknown: unknownIcon,\n blank: {\n body: wrapIcon(\"\")\n }\n }\n};\n\n// src/diagrams/architecture/svgDraw.ts\nvar drawEdges = /* @__PURE__ */ __name(async function(edgesEl, cy, db) {\n const padding = db.getConfigField(\"padding\");\n const iconSize = db.getConfigField(\"iconSize\");\n const halfIconSize = iconSize / 2;\n const arrowSize = iconSize / 6;\n const halfArrowSize = arrowSize / 2;\n await Promise.all(\n cy.edges().map(async (edge) => {\n const {\n source,\n sourceDir,\n sourceArrow,\n sourceGroup,\n target,\n targetDir,\n targetArrow,\n targetGroup,\n label\n } = edgeData(edge);\n let { x: startX, y: startY } = edge[0].sourceEndpoint();\n const { x: midX, y: midY } = edge[0].midpoint();\n let { x: endX, y: endY } = edge[0].targetEndpoint();\n const groupEdgeShift = padding + 4;\n if (sourceGroup) {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === \"L\" ? -groupEdgeShift : groupEdgeShift;\n } else {\n startY += sourceDir === \"T\" ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n if (targetGroup) {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === \"L\" ? -groupEdgeShift : groupEdgeShift;\n } else {\n endY += targetDir === \"T\" ? -groupEdgeShift : groupEdgeShift + 18;\n }\n }\n if (!sourceGroup && db.getNode(source)?.type === \"junction\") {\n if (isArchitectureDirectionX(sourceDir)) {\n startX += sourceDir === \"L\" ? halfIconSize : -halfIconSize;\n } else {\n startY += sourceDir === \"T\" ? halfIconSize : -halfIconSize;\n }\n }\n if (!targetGroup && db.getNode(target)?.type === \"junction\") {\n if (isArchitectureDirectionX(targetDir)) {\n endX += targetDir === \"L\" ? halfIconSize : -halfIconSize;\n } else {\n endY += targetDir === \"T\" ? halfIconSize : -halfIconSize;\n }\n }\n if (edge[0]._private.rscratch) {\n const g = edgesEl.insert(\"g\");\n g.insert(\"path\").attr(\"d\", `M ${startX},${startY} L ${midX},${midY} L${endX},${endY} `).attr(\"class\", \"edge\").attr(\"id\", getEdgeId(source, target, { prefix: \"L\" }));\n if (sourceArrow) {\n const xShift = isArchitectureDirectionX(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startX, arrowSize) : startX - halfArrowSize;\n const yShift = isArchitectureDirectionY(sourceDir) ? ArchitectureDirectionArrowShift[sourceDir](startY, arrowSize) : startY - halfArrowSize;\n g.insert(\"polygon\").attr(\"points\", ArchitectureDirectionArrow[sourceDir](arrowSize)).attr(\"transform\", `translate(${xShift},${yShift})`).attr(\"class\", \"arrow\");\n }\n if (targetArrow) {\n const xShift = isArchitectureDirectionX(targetDir) ? ArchitectureDirectionArrowShift[targetDir](endX, arrowSize) : endX - halfArrowSize;\n const yShift = isArchitectureDirectionY(targetDir) ? ArchitectureDirectionArrowShift[targetDir](endY, arrowSize) : endY - halfArrowSize;\n g.insert(\"polygon\").attr(\"points\", ArchitectureDirectionArrow[targetDir](arrowSize)).attr(\"transform\", `translate(${xShift},${yShift})`).attr(\"class\", \"arrow\");\n }\n if (label) {\n const axis = !isArchitectureDirectionXY(sourceDir, targetDir) ? isArchitectureDirectionX(sourceDir) ? \"X\" : \"Y\" : \"XY\";\n let width = 0;\n if (axis === \"X\") {\n width = Math.abs(startX - endX);\n } else if (axis === \"Y\") {\n width = Math.abs(startY - endY) / 1.5;\n } else {\n width = Math.abs(startX - endX) / 2;\n }\n const textElem = g.append(\"g\");\n await createText(\n textElem,\n label,\n {\n useHtmlLabels: false,\n width,\n classes: \"architecture-service-label\"\n },\n getConfig2()\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n if (axis === \"X\") {\n textElem.attr(\"transform\", \"translate(\" + midX + \", \" + midY + \")\");\n } else if (axis === \"Y\") {\n textElem.attr(\"transform\", \"translate(\" + midX + \", \" + midY + \") rotate(-90)\");\n } else if (axis === \"XY\") {\n const pair = getArchitectureDirectionPair(sourceDir, targetDir);\n if (pair && isArchitecturePairXY(pair)) {\n const bboxOrig = textElem.node().getBoundingClientRect();\n const [x, y] = getArchitectureDirectionXYFactors(pair);\n textElem.attr(\"dominant-baseline\", \"auto\").attr(\"transform\", `rotate(${-1 * x * y * 45})`);\n const bboxNew = textElem.node().getBoundingClientRect();\n textElem.attr(\n \"transform\",\n `\n translate(${midX}, ${midY - bboxOrig.height / 2})\n translate(${x * bboxNew.width / 2}, ${y * bboxNew.height / 2})\n rotate(${-1 * x * y * 45}, 0, ${bboxOrig.height / 2})\n `\n );\n }\n }\n }\n }\n })\n );\n}, \"drawEdges\");\nvar drawGroups = /* @__PURE__ */ __name(async function(groupsEl, cy, db) {\n const padding = db.getConfigField(\"padding\");\n const groupIconSize = padding * 0.75;\n const fontSize = db.getConfigField(\"fontSize\");\n const iconSize = db.getConfigField(\"iconSize\");\n const halfIconSize = iconSize / 2;\n await Promise.all(\n cy.nodes().map(async (node) => {\n const data = nodeData(node);\n if (data.type === \"group\") {\n const { h, w, x1, y1 } = node.boundingBox();\n const groupsNode = groupsEl.append(\"rect\");\n groupsNode.attr(\"id\", `group-${data.id}`).attr(\"x\", x1 + halfIconSize).attr(\"y\", y1 + halfIconSize).attr(\"width\", w).attr(\"height\", h).attr(\"class\", \"node-bkg\");\n const groupLabelContainer = groupsEl.append(\"g\");\n let shiftedX1 = x1;\n let shiftedY1 = y1;\n if (data.icon) {\n const bkgElem = groupLabelContainer.append(\"g\");\n bkgElem.html(\n `${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })} `\n );\n bkgElem.attr(\n \"transform\",\n \"translate(\" + (shiftedX1 + halfIconSize + 1) + \", \" + (shiftedY1 + halfIconSize + 1) + \")\"\n );\n shiftedX1 += groupIconSize;\n shiftedY1 += fontSize / 2 - 1 - 2;\n }\n if (data.label) {\n const textElem = groupLabelContainer.append(\"g\");\n await createText(\n textElem,\n data.label,\n {\n useHtmlLabels: false,\n width: w,\n classes: \"architecture-service-label\"\n },\n getConfig2()\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"start\").attr(\"text-anchor\", \"start\");\n textElem.attr(\n \"transform\",\n \"translate(\" + (shiftedX1 + halfIconSize + 4) + \", \" + (shiftedY1 + halfIconSize + 2) + \")\"\n );\n }\n db.setElementForId(data.id, groupsNode);\n }\n })\n );\n}, \"drawGroups\");\nvar drawServices = /* @__PURE__ */ __name(async function(db, elem, services) {\n const config = getConfig2();\n for (const service of services) {\n const serviceElem = elem.append(\"g\");\n const iconSize = db.getConfigField(\"iconSize\");\n if (service.title) {\n const textElem = serviceElem.append(\"g\");\n await createText(\n textElem,\n service.title,\n {\n useHtmlLabels: false,\n width: iconSize * 1.5,\n classes: \"architecture-service-label\"\n },\n config\n );\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n textElem.attr(\"transform\", \"translate(\" + iconSize / 2 + \", \" + iconSize + \")\");\n }\n const bkgElem = serviceElem.append(\"g\");\n if (service.icon) {\n bkgElem.html(\n `${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })} `\n );\n } else if (service.iconText) {\n bkgElem.html(\n `${await getIconSVG(\"blank\", { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })} `\n );\n const textElemContainer = bkgElem.append(\"g\");\n const fo = textElemContainer.append(\"foreignObject\").attr(\"width\", iconSize).attr(\"height\", iconSize);\n const divElem = fo.append(\"div\").attr(\"class\", \"node-icon-text\").attr(\"style\", `height: ${iconSize}px;`).append(\"div\").html(sanitizeText(service.iconText, config));\n const fontSize = parseInt(\n window.getComputedStyle(divElem.node(), null).getPropertyValue(\"font-size\").replace(/\\D/g, \"\")\n ) ?? 16;\n divElem.attr(\"style\", `-webkit-line-clamp: ${Math.floor((iconSize - 2) / fontSize)};`);\n } else {\n bkgElem.append(\"path\").attr(\"class\", \"node-bkg\").attr(\"id\", \"node-\" + service.id).attr(\n \"d\",\n `M0 ${iconSize} v${-iconSize} q0,-5 5,-5 h${iconSize} q5,0 5,5 v${iconSize} H0 Z`\n );\n }\n serviceElem.attr(\"id\", `service-${service.id}`).attr(\"class\", \"architecture-service\");\n const { width, height } = serviceElem.node().getBBox();\n service.width = width;\n service.height = height;\n db.setElementForId(service.id, serviceElem);\n }\n return 0;\n}, \"drawServices\");\nvar drawJunctions = /* @__PURE__ */ __name(function(db, elem, junctions) {\n junctions.forEach((junction) => {\n const junctionElem = elem.append(\"g\");\n const iconSize = db.getConfigField(\"iconSize\");\n const bkgElem = junctionElem.append(\"g\");\n bkgElem.append(\"rect\").attr(\"id\", \"node-\" + junction.id).attr(\"fill-opacity\", \"0\").attr(\"width\", iconSize).attr(\"height\", iconSize);\n junctionElem.attr(\"class\", \"architecture-junction\");\n const { width, height } = junctionElem._groups[0][0].getBBox();\n junctionElem.width = width;\n junctionElem.height = height;\n db.setElementForId(junction.id, junctionElem);\n });\n}, \"drawJunctions\");\n\n// src/diagrams/architecture/architectureRenderer.ts\nregisterIconPacks([\n {\n name: architectureIcons.prefix,\n icons: architectureIcons\n }\n]);\ncytoscape.use(fcose);\nfunction addServices(services, cy, db) {\n services.forEach((service) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"service\",\n id: service.id,\n icon: service.icon,\n label: service.title,\n parent: service.in,\n width: db.getConfigField(\"iconSize\"),\n height: db.getConfigField(\"iconSize\")\n },\n classes: \"node-service\"\n });\n });\n}\n__name(addServices, \"addServices\");\nfunction addJunctions(junctions, cy, db) {\n junctions.forEach((junction) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"junction\",\n id: junction.id,\n parent: junction.in,\n width: db.getConfigField(\"iconSize\"),\n height: db.getConfigField(\"iconSize\")\n },\n classes: \"node-junction\"\n });\n });\n}\n__name(addJunctions, \"addJunctions\");\nfunction positionNodes(db, cy) {\n cy.nodes().map((node) => {\n const data = nodeData(node);\n if (data.type === \"group\") {\n return;\n }\n data.x = node.position().x;\n data.y = node.position().y;\n const nodeElem = db.getElementById(data.id);\n nodeElem.attr(\"transform\", \"translate(\" + (data.x || 0) + \",\" + (data.y || 0) + \")\");\n });\n}\n__name(positionNodes, \"positionNodes\");\nfunction addGroups(groups, cy) {\n groups.forEach((group) => {\n cy.add({\n group: \"nodes\",\n data: {\n type: \"group\",\n id: group.id,\n icon: group.icon,\n label: group.title,\n parent: group.in\n },\n classes: \"node-group\"\n });\n });\n}\n__name(addGroups, \"addGroups\");\nfunction addEdges(edges, cy) {\n edges.forEach((parsedEdge) => {\n const { lhsId, rhsId, lhsInto, lhsGroup, rhsInto, lhsDir, rhsDir, rhsGroup, title } = parsedEdge;\n const edgeType = isArchitectureDirectionXY(parsedEdge.lhsDir, parsedEdge.rhsDir) ? \"segments\" : \"straight\";\n const edge = {\n id: `${lhsId}-${rhsId}`,\n label: title,\n source: lhsId,\n sourceDir: lhsDir,\n sourceArrow: lhsInto,\n sourceGroup: lhsGroup,\n sourceEndpoint: lhsDir === \"L\" ? \"0 50%\" : lhsDir === \"R\" ? \"100% 50%\" : lhsDir === \"T\" ? \"50% 0\" : \"50% 100%\",\n target: rhsId,\n targetDir: rhsDir,\n targetArrow: rhsInto,\n targetGroup: rhsGroup,\n targetEndpoint: rhsDir === \"L\" ? \"0 50%\" : rhsDir === \"R\" ? \"100% 50%\" : rhsDir === \"T\" ? \"50% 0\" : \"50% 100%\"\n };\n cy.add({\n group: \"edges\",\n data: edge,\n classes: edgeType\n });\n });\n}\n__name(addEdges, \"addEdges\");\nfunction getAlignments(db, spatialMaps, groupAlignments) {\n const flattenAlignments = /* @__PURE__ */ __name((alignmentObj, alignmentDir) => {\n return Object.entries(alignmentObj).reduce(\n (prev, [dir, alignments2]) => {\n let cnt = 0;\n const arr = Object.entries(alignments2);\n if (arr.length === 1) {\n prev[dir] = arr[0][1];\n return prev;\n }\n for (let i = 0; i < arr.length - 1; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n const [aGroupId, aNodeIds] = arr[i];\n const [bGroupId, bNodeIds] = arr[j];\n const alignment = groupAlignments[aGroupId]?.[bGroupId];\n if (alignment === alignmentDir) {\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else if (aGroupId === \"default\" || bGroupId === \"default\") {\n prev[dir] ??= [];\n prev[dir] = [...prev[dir], ...aNodeIds, ...bNodeIds];\n } else {\n const keyA = `${dir}-${cnt++}`;\n prev[keyA] = aNodeIds;\n const keyB = `${dir}-${cnt++}`;\n prev[keyB] = bNodeIds;\n }\n }\n }\n return prev;\n },\n {}\n );\n }, \"flattenAlignments\");\n const alignments = spatialMaps.map((spatialMap) => {\n const horizontalAlignments = {};\n const verticalAlignments = {};\n Object.entries(spatialMap).forEach(([id, [x, y]]) => {\n const nodeGroup = db.getNode(id)?.in ?? \"default\";\n horizontalAlignments[y] ??= {};\n horizontalAlignments[y][nodeGroup] ??= [];\n horizontalAlignments[y][nodeGroup].push(id);\n verticalAlignments[x] ??= {};\n verticalAlignments[x][nodeGroup] ??= [];\n verticalAlignments[x][nodeGroup].push(id);\n });\n return {\n horiz: Object.values(flattenAlignments(horizontalAlignments, \"horizontal\")).filter(\n (arr) => arr.length > 1\n ),\n vert: Object.values(flattenAlignments(verticalAlignments, \"vertical\")).filter(\n (arr) => arr.length > 1\n )\n };\n });\n const [horizontal, vertical] = alignments.reduce(\n ([prevHoriz, prevVert], { horiz, vert }) => {\n return [\n [...prevHoriz, ...horiz],\n [...prevVert, ...vert]\n ];\n },\n [[], []]\n );\n return {\n horizontal,\n vertical\n };\n}\n__name(getAlignments, \"getAlignments\");\nfunction getRelativeConstraints(spatialMaps, db) {\n const relativeConstraints = [];\n const posToStr = /* @__PURE__ */ __name((pos) => `${pos[0]},${pos[1]}`, \"posToStr\");\n const strToPos = /* @__PURE__ */ __name((pos) => pos.split(\",\").map((p) => parseInt(p)), \"strToPos\");\n spatialMaps.forEach((spatialMap) => {\n const invSpatialMap = Object.fromEntries(\n Object.entries(spatialMap).map(([id, pos]) => [posToStr(pos), id])\n );\n const queue = [posToStr([0, 0])];\n const visited = {};\n const directions = {\n L: [-1, 0],\n R: [1, 0],\n T: [0, 1],\n B: [0, -1]\n };\n while (queue.length > 0) {\n const curr = queue.shift();\n if (curr) {\n visited[curr] = 1;\n const currId = invSpatialMap[curr];\n if (currId) {\n const currPos = strToPos(curr);\n Object.entries(directions).forEach(([dir, shift]) => {\n const newPos = posToStr([currPos[0] + shift[0], currPos[1] + shift[1]]);\n const newId = invSpatialMap[newPos];\n if (newId && !visited[newPos]) {\n queue.push(newPos);\n relativeConstraints.push({\n [ArchitectureDirectionName[dir]]: newId,\n [ArchitectureDirectionName[getOppositeArchitectureDirection(dir)]]: currId,\n gap: 1.5 * db.getConfigField(\"iconSize\")\n });\n }\n });\n }\n }\n }\n });\n return relativeConstraints;\n}\n__name(getRelativeConstraints, \"getRelativeConstraints\");\nfunction layoutArchitecture(services, junctions, groups, edges, db, { spatialMaps, groupAlignments }) {\n return new Promise((resolve) => {\n const renderEl = select(\"body\").append(\"div\").attr(\"id\", \"cy\").attr(\"style\", \"display:none\");\n const cy = cytoscape({\n container: document.getElementById(\"cy\"),\n style: [\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"straight\",\n label: \"data(label)\",\n \"source-endpoint\": \"data(sourceEndpoint)\",\n \"target-endpoint\": \"data(targetEndpoint)\"\n }\n },\n {\n selector: \"edge.segments\",\n style: {\n \"curve-style\": \"segments\",\n \"segment-weights\": \"0\",\n \"segment-distances\": [0.5],\n // @ts-ignore Incorrect library types\n \"edge-distances\": \"endpoints\",\n \"source-endpoint\": \"data(sourceEndpoint)\",\n \"target-endpoint\": \"data(targetEndpoint)\"\n }\n },\n {\n selector: \"node\",\n style: {\n // @ts-ignore Incorrect library types\n \"compound-sizing-wrt-labels\": \"include\"\n }\n },\n {\n selector: \"node[label]\",\n style: {\n \"text-valign\": \"bottom\",\n \"text-halign\": \"center\",\n \"font-size\": `${db.getConfigField(\"fontSize\")}px`\n }\n },\n {\n selector: \".node-service\",\n style: {\n label: \"data(label)\",\n width: \"data(width)\",\n height: \"data(height)\"\n }\n },\n {\n selector: \".node-junction\",\n style: {\n width: \"data(width)\",\n height: \"data(height)\"\n }\n },\n {\n selector: \".node-group\",\n style: {\n // @ts-ignore Incorrect library types\n padding: `${db.getConfigField(\"padding\")}px`\n }\n }\n ],\n layout: {\n name: \"grid\",\n boundingBox: {\n x1: 0,\n x2: 100,\n y1: 0,\n y2: 100\n }\n }\n });\n renderEl.remove();\n addGroups(groups, cy);\n addServices(services, cy, db);\n addJunctions(junctions, cy, db);\n addEdges(edges, cy);\n const alignmentConstraint = getAlignments(db, spatialMaps, groupAlignments);\n const relativePlacementConstraint = getRelativeConstraints(spatialMaps, db);\n const layout = cy.layout({\n name: \"fcose\",\n quality: \"proof\",\n styleEnabled: false,\n animate: false,\n nodeDimensionsIncludeLabels: false,\n // Adjust the edge parameters if it passes through the border of a group\n // Hacky fix for: https://github.com/iVis-at-Bilkent/cytoscape.js-fcose/issues/67\n idealEdgeLength(edge) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n const elasticity = parentA === parentB ? 1.5 * db.getConfigField(\"iconSize\") : 0.5 * db.getConfigField(\"iconSize\");\n return elasticity;\n },\n edgeElasticity(edge) {\n const [nodeA, nodeB] = edge.connectedNodes();\n const { parent: parentA } = nodeData(nodeA);\n const { parent: parentB } = nodeData(nodeB);\n const elasticity = parentA === parentB ? 0.45 : 1e-3;\n return elasticity;\n },\n alignmentConstraint,\n relativePlacementConstraint\n });\n layout.one(\"layoutstop\", () => {\n function getSegmentWeights(source, target, pointX, pointY) {\n let W, D;\n const { x: sX, y: sY } = source;\n const { x: tX, y: tY } = target;\n D = (pointY - sY + (sX - pointX) * (sY - tY) / (sX - tX)) / Math.sqrt(1 + Math.pow((sY - tY) / (sX - tX), 2));\n W = Math.sqrt(Math.pow(pointY - sY, 2) + Math.pow(pointX - sX, 2) - Math.pow(D, 2));\n const distAB = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2));\n W = W / distAB;\n let delta1 = (tX - sX) * (pointY - sY) - (tY - sY) * (pointX - sX);\n switch (true) {\n case delta1 >= 0:\n delta1 = 1;\n break;\n case delta1 < 0:\n delta1 = -1;\n break;\n }\n let delta2 = (tX - sX) * (pointX - sX) + (tY - sY) * (pointY - sY);\n switch (true) {\n case delta2 >= 0:\n delta2 = 1;\n break;\n case delta2 < 0:\n delta2 = -1;\n break;\n }\n D = Math.abs(D) * delta1;\n W = W * delta2;\n return {\n distances: D,\n weights: W\n };\n }\n __name(getSegmentWeights, \"getSegmentWeights\");\n cy.startBatch();\n for (const edge of Object.values(cy.edges())) {\n if (edge.data?.()) {\n const { x: sX, y: sY } = edge.source().position();\n const { x: tX, y: tY } = edge.target().position();\n if (sX !== tX && sY !== tY) {\n const sEP = edge.sourceEndpoint();\n const tEP = edge.targetEndpoint();\n const { sourceDir } = edgeData(edge);\n const [pointX, pointY] = isArchitectureDirectionY(sourceDir) ? [sEP.x, tEP.y] : [tEP.x, sEP.y];\n const { weights, distances } = getSegmentWeights(sEP, tEP, pointX, pointY);\n edge.style(\"segment-distances\", distances);\n edge.style(\"segment-weights\", weights);\n }\n }\n }\n cy.endBatch();\n layout.run();\n });\n layout.run();\n cy.ready((e) => {\n log.info(\"Ready\", e);\n resolve(cy);\n });\n });\n}\n__name(layoutArchitecture, \"layoutArchitecture\");\nvar draw = /* @__PURE__ */ __name(async (text, id, _version, diagObj) => {\n const db = diagObj.db;\n const services = db.getServices();\n const junctions = db.getJunctions();\n const groups = db.getGroups();\n const edges = db.getEdges();\n const ds = db.getDataStructures();\n const svg = selectSvgElement(id);\n const edgesElem = svg.append(\"g\");\n edgesElem.attr(\"class\", \"architecture-edges\");\n const servicesElem = svg.append(\"g\");\n servicesElem.attr(\"class\", \"architecture-services\");\n const groupElem = svg.append(\"g\");\n groupElem.attr(\"class\", \"architecture-groups\");\n await drawServices(db, servicesElem, services);\n drawJunctions(db, servicesElem, junctions);\n const cy = await layoutArchitecture(services, junctions, groups, edges, db, ds);\n await drawEdges(edgesElem, cy, db);\n await drawGroups(groupElem, cy, db);\n positionNodes(db, cy);\n setupGraphViewbox(void 0, svg, db.getConfigField(\"padding\"), db.getConfigField(\"useMaxWidth\"));\n}, \"draw\");\nvar renderer = { draw };\n\n// src/diagrams/architecture/architectureDiagram.ts\nvar diagram = {\n parser,\n get db() {\n return new ArchitectureDB();\n },\n renderer,\n styles: architectureStyles_default\n};\nexport {\n diagram\n};\n"],
+ "mappings": "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",
+ "names": ["require_layout_base", "__commonJSMin", "exports", "module", "root", "factory", "modules", "installedModules", "__webpack_require__", "moduleId", "value", "name", "getter", "object", "property", "LayoutConstants", "LGraphObject", "IGeometry", "IMath", "LEdge", "source", "target", "vEdge", "prop", "node", "graph", "otherEnd", "clipPointCoordinates", "vGraphObject", "Integer", "RectangleD", "RandomSeed", "PointD", "LNode", "gm", "loc", "size", "vNode", "width", "height", "upperLeft", "dimension", "cx", "cy", "x", "y", "dx", "dy", "to", "edgeList", "edge", "self", "other", "neighbors", "withNeighborsList", "childNode", "children", "nodes", "i", "noOfChildren", "randomCenterX", "randomCenterY", "minX", "maxX", "minY", "maxY", "childGraph", "trans", "left", "top", "leftTop", "vLeftTop", "FDLayoutConstants", "pt", "dim", "LGraphManager", "Point", "LinkedList", "LGraph", "parent", "obj2", "vGraph", "obj1", "sourceNode", "targetNode", "newNode", "newEdge", "obj", "edgesToBeRemoved", "s", "index", "sourceIndex", "targetIndex", "nodeTop", "nodeLeft", "margin", "lNode", "recursive", "right", "bottom", "nodeRight", "nodeBottom", "boundingRect", "queue", "visited", "currentNode", "neighborEdges", "currentNeighbor", "childrenOfNode", "neighborEdge", "childrenOfNeighbor", "noOfVisitedInThisGraph", "visitedNode", "layout", "ngraph", "nnode", "newGraph", "parentNode", "sourceGraph", "targetGraph", "lObj", "nodesToBeRemoved", "nodeList", "graphs", "firstNode", "secondNode", "ownerGraph", "sourceAncestorGraph", "targetAncestorGraph", "edges", "firstOwnerGraph", "secondOwnerGraph", "depth", "edgesToRemove", "rectA", "rectB", "overlapAmount", "separationBuffer", "directions", "slope", "moveByY", "moveByX", "result", "p1x", "p1y", "p2x", "p2y", "topLeftAx", "topLeftAy", "topRightAx", "bottomLeftAx", "bottomLeftAy", "bottomRightAx", "halfWidthA", "halfHeightA", "topLeftBx", "topLeftBy", "topRightBx", "bottomLeftBx", "bottomLeftBy", "bottomRightBx", "halfWidthB", "halfHeightB", "clipPointAFound", "clipPointBFound", "slopeA", "slopeB", "slopePrime", "cardinalDirectionA", "cardinalDirectionB", "tempPointAx", "tempPointAy", "tempPointBx", "tempPointBy", "line", "s1", "s2", "f1", "f2", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "a1", "a2", "b1", "b2", "c1", "c2", "denom", "Cx", "Cy", "Nx", "Ny", "C_angle", "p1", "p2", "p3", "p4", "a", "b", "c", "d", "p", "q", "r", "det", "lambda", "gamma", "Ex", "Ey", "Lx", "Ly", "disc", "t1", "t2", "intersections", "_createClass", "defineProperties", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "nodeFrom", "add", "prev", "next", "list", "_remove", "vals", "_this", "v", "val", "otherNode", "current", "_typeof", "UniqueIDGeneretor", "id", "arg", "type", "_toConsumableArray", "arr", "arr2", "Transform", "Emitter", "Layout", "isRemoteUse", "isLayoutSuccessfull", "allEdges", "newLeftTop", "flatForest", "isForest", "allNodes", "isFlat", "toBeVisited", "parents", "unProcessedNodes", "temp", "dummyNodes", "dummyNode", "dummyEdge", "k", "lEdge", "path", "ebp", "sliderValue", "defaultValue", "minDiv", "maxMul", "minValue", "maxValue", "removedNodes", "remainingDegrees", "foundCenter", "centerNode", "degree", "tempList", "tempList2", "neighbours", "neighbour", "otherDegree", "newDegree", "wox", "woy", "wex", "wey", "dox", "doy", "dex", "dey", "xDevice", "worldExtX", "yDevice", "worldExtY", "xWorld", "deviceExtX", "yWorld", "deviceExtY", "inPoint", "outPoint", "FDLayout", "originalIdealLength", "lcaDepth", "sizeOfSourceInLca", "sizeOfTargetInLca", "lEdges", "gridUpdateAllowed", "forceToNodeSurroundingUpdate", "j", "nodeA", "nodeB", "lNodes", "processedNodeSet", "idealLength", "length", "springForce", "springForceX", "springForceY", "clipPoints", "distanceX", "distanceY", "distanceSquared", "distance", "repulsionForce", "repulsionForceX", "repulsionForceY", "childrenConstant", "ownerCenterX", "ownerCenterY", "absDistanceX", "absDistanceY", "estimatedSize", "converged", "oscilating", "sizeX", "sizeY", "grid", "startX", "finishX", "startY", "finishY", "surrounding", "FDLayoutEdge", "FDLayoutNode", "_startX", "_finishX", "_startY", "_finishY", "DimensionD", "HashMap", "key", "theId", "HashSet", "keys", "Matrix", "array1", "array2", "array", "constant", "product", "magnitude", "sum", "_i", "C", "INV", "temp1", "temp2", "_i2", "_sum", "_j", "_i3", "_sum2", "_j2", "Quicksort", "A", "compareFunction", "SVD", "nu", "dims", "allocate", "work", "wantu", "wantv", "nct", "nrt", "lhs", "rhs", "t", "_i4", "_i5", "_i6", "_i7", "_i8", "_t", "_i9", "_i10", "_j3", "_i11", "_k", "_j4", "_t2", "_i12", "_i13", "_i14", "_i15", "_i16", "_k2", "_j5", "_t3", "_i17", "_i18", "_i19", "pp", "iter", "eps", "tiny", "_k3", "kase", "ks", "_t4", "f", "_j6", "_t5", "cs", "sn", "_i20", "_f", "_j7", "_t6", "_cs", "_sn", "_i21", "scale", "sp", "spm1", "epm1", "sk", "ek", "shift", "_f2", "g", "_j8", "_t7", "_cs2", "_sn2", "_i22", "_i23", "_i24", "_t8", "_i25", "_i26", "NeedlemanWunsch", "sequence1", "sequence2", "match_score", "mismatch_penalty", "gap_penalty", "diag", "up", "maxOf", "indices", "inProcessAlignments", "indexes", "layoutBase", "event", "callback", "l", "data", "require_cose_base", "__commonJSMin", "exports", "module", "root", "factory", "__WEBPACK_EXTERNAL_MODULE__551__", "__webpack_modules__", "__unused_webpack_exports", "__webpack_require__", "coseBase", "FDLayoutConstants", "CoSEConstants", "prop", "FDLayoutEdge", "CoSEEdge", "source", "target", "vEdge", "LGraph", "CoSEGraph", "parent", "graphMgr", "vGraph", "LGraphManager", "CoSEGraphManager", "layout", "FDLayout", "CoSENode", "ConstraintHandler", "LayoutConstants", "Point", "PointD", "DimensionD", "Layout", "Integer", "IGeometry", "Transform", "LinkedList", "CoSELayout", "gm", "vNode", "createBendsAsNeeded", "allNodes", "intersection", "x", "forest", "gridUpdateAllowed", "forceToNodeSurroundingUpdate", "pData", "i", "rect", "id", "layoutEnded", "lNodes", "node", "self", "calculateCompoundWeight", "compoundNode", "nodes", "fixedNodeWeight", "nodeData", "nodeToDummyForVerticalAlignment", "nodeToDummyForHorizontalAlignment", "nodeId", "verticalAlignment", "horizontalAlignment", "array", "j", "constraint", "nodeIdLeft", "nodeIdRight", "nodeIdTop", "nodeIdBottom", "subGraphOnHorizontal", "subGraphOnVertical", "left", "right", "top", "bottom", "constructComponents", "graph", "fixedNodes", "components", "isFixed", "queue", "visited", "count", "value", "key", "currentNode", "neighbors", "neighbor", "resultOnHorizontal", "resultOnVertical", "fixedNode", "allVerticalAlignments", "totalDisplacementX", "averageDisplacementX", "allHorizontalAlignments", "totalDisplacementY", "averageDisplacementY", "displacement", "diff", "component", "sum", "actualNodes", "averageDisplacement", "nodeList", "graphs", "size", "edges", "edge", "edgeList", "k", "multiEdge", "currentStartingPoint", "numberOfColumns", "height", "currentY", "currentX", "point", "tree", "centerNode", "startingPoint", "radialSep", "bounds", "transform", "bottomRight", "parentOfNode", "startAngle", "endAngle", "distance", "radialSeparation", "halfInterval", "nodeAngle", "teta", "cos_teta", "x_", "y_", "neighborEdges", "childCount", "branchCount", "incEdgesCount", "startIndex", "temp", "index", "stepAngle", "currentNeighbor", "childStartAngle", "childEndAngle", "maxDiagonal", "diagonal", "tempMemberGroups", "zeroDegree", "p_id", "dummyCompoundId", "dummyCompound", "dummyParentGraph", "parentGraph", "childGraphMap", "idToNode", "tiledZeroDegreePack", "width", "lCompoundNode", "horizontalMargin", "verticalMargin", "labelMarginLeft", "labelMarginTop", "tiledPack", "childGraph", "children", "theChild", "degree", "child", "organization", "y", "compoundHorizontalMargin", "compoundVerticalMargin", "compoundLabelMarginLeft", "compoundLabelMarginTop", "row", "maxHeight", "lnode", "minWidth", "horizontalOrg", "verticalOrg", "horizontalRatio", "verticalRatio", "bestOrg", "ratio", "members", "favorHorizontalDim", "verticalPadding", "horizontalPadding", "membersSize", "totalWidth", "totalHeight", "maxWidth", "averageWidth", "averageHeight", "delta", "horizontalCountDouble", "horizontalCount", "idealWidth", "tilingCompareBy", "getNodeArea", "n", "areaCompareFcn", "n1", "n2", "cmpBy", "sumCenterX", "sumCenterY", "lNode", "rowIndex", "minCompoundSize", "secondDimension", "w", "h", "extraHeight", "r", "min", "max", "extraWidth", "lastRowIndex", "lastRowWidth", "sri", "hDiff", "add_to_row_ratio", "add_new_row_ratio", "longest", "last", "prevTotal", "finalTotal", "prunedNodesAll", "containsLeaf", "prunedNodesInStepTemp", "otherEnd", "relativePosition", "prunedNodesInStep", "lengthOfPrunedNodesInStep", "gridForPrunedNode", "nodeToConnect", "prunedNode", "startGridX", "finishGridX", "startGridY", "finishGridY", "upNodeCount", "downNodeCount", "rightNodeCount", "leftNodeCount", "controlRegions", "minCount", "minIndex", "random", "FDLayoutNode", "IMath", "loc", "dX", "dY", "pred1", "next", "processed", "_toConsumableArray", "arr", "arr2", "Matrix", "SVD", "constraints", "idToNodeMap", "nodeIndexes", "xCoords", "yCoords", "calculatePositionDiff", "pos1", "pos2", "calculateAvgPosition", "nodeIdSet", "xPosSum", "yPosSum", "findAppropriatePositionForRelativePlacement", "direction", "dummyPositions", "componentSources", "setUnion", "setA", "setB", "union", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "elem", "err", "inDegrees", "adjacent", "positionMap", "pastMap", "fixedIds", "position", "fixedId", "_position", "_loop", "fixedPosition", "sinkNodes", "_components", "isFixedComponent", "_iteratorNormalCompletion2", "_didIteratorError2", "_iteratorError2", "_iterator2", "_step2", "isExist", "existAt", "ele", "minBefore", "minAfter", "maxBefore", "maxAfter", "_iteratorNormalCompletion3", "_didIteratorError3", "_iteratorError3", "_iterator3", "_step3", "posBefore", "posAfter", "_iteratorNormalCompletion4", "_didIteratorError4", "_iteratorError4", "_iterator4", "_step4", "_nodeId", "applyReflectionForRelativePlacement", "relativePlacementConstraints", "reflectOnY", "notReflectOnY", "reflectOnX", "notReflectOnX", "_i", "_i2", "_i3", "findComponents", "_currentNode", "dagToUndirected", "dag", "undirected", "dagToReversed", "reversed", "targetMatrix", "sourceMatrix", "standardTransformation", "reflectionType", "dagUndirected", "verticalAlign", "_loop2", "_i4", "alignmentSet", "xPos", "horizontalAlign", "_loop3", "_i5", "yPos", "largestComponentSize", "largestComponentIndex", "_i6", "constraintsInlargestComponent", "positionMapHorizontal", "positionMapVertical", "transformationMatrix", "targetMatrixTranspose", "sourceMatrixTranspose", "_i7", "tempMatrix", "SVDResult", "_i8", "temp1", "temp2", "temp3", "translationAmount", "posInTheory", "posDesired", "posDiff", "xAlign", "_loop4", "_i9", "yAlign", "_loop5", "_i10", "dummyToNodeForVerticalAlignment", "dummyToNodeForHorizontalAlignment", "dummyPositionsForVerticalAlignment", "dummyPositionsForHorizontalAlignment", "fixedNodesOnHorizontal", "fixedNodesOnVertical", "_loop6", "_i11", "_loop7", "_i12", "dagOnHorizontal", "dagOnVertical", "_loop8", "sourceId", "targetNode", "_iteratorNormalCompletion5", "_didIteratorError5", "_iteratorError5", "_iterator5", "_step5", "undirectedOnHorizontal", "undirectedOnVertical", "componentsOnHorizontal", "componentsOnVertical", "reversedDagOnHorizontal", "reversedDagOnVertical", "componentSourcesOnHorizontal", "componentSourcesOnVertical", "_loop9", "_iteratorNormalCompletion6", "_didIteratorError6", "_iteratorError6", "_iterator6", "_step6", "_loop10", "_iteratorNormalCompletion7", "_didIteratorError7", "_iteratorError7", "_iterator7", "_step7", "_i13", "_node", "__webpack_module_cache__", "moduleId", "cachedModule", "__webpack_exports__", "require_cytoscape_fcose", "__commonJSMin", "exports", "module", "root", "factory", "__WEBPACK_EXTERNAL_MODULE__140__", "__webpack_modules__", "tgt", "_len", "srcs", "_key", "src", "k", "__unused_webpack_exports", "__webpack_require__", "_slicedToArray", "sliceIterator", "arr", "i", "_arr", "_n", "_d", "_e", "_i", "_s", "err", "LinkedList", "auxiliary", "nodes", "nodesMap", "roots", "ele", "parent", "cy", "eles", "topMostNodes", "dummyNodes", "queue", "visited", "visitedTopMostNodes", "currentNeighbor", "minDegreeNode", "minDegree", "isConnected", "count", "nodesConnectedToDummy", "components", "_loop", "cmpt", "currentNode", "childrenOfCurrentNode", "node", "_loop2", "neighborNodes", "neighborNode", "childrenOfNeighbor", "e", "temp", "originalCenter", "componentResult", "options", "minXCoord", "maxXCoord", "minYCoord", "maxYCoord", "_iteratorNormalCompletion", "_didIteratorError", "_iteratorError", "_iterator", "_step", "_ref", "_ref2", "key", "value", "cyNode", "nodeBB", "leftX", "rightX", "topY", "bottomY", "diffOnX", "diffOnY", "x", "y", "item", "_diffOnX", "_diffOnY", "parentNode", "xCoords", "yCoords", "nodeIndexes", "left", "right", "top", "bottom", "nodeLeft", "nodeRight", "nodeTop", "nodeBottom", "s", "boundingBox", "parentsWithoutChildren", "check", "child", "aux", "CoSELayout", "CoSENode", "PointD", "DimensionD", "LayoutConstants", "FDLayoutConstants", "CoSEConstants", "coseLayout", "spectralResult", "edges", "idToLNode", "isFn", "fn", "optFn", "opt", "processChildrenList", "children", "layout", "size", "theChild", "children_of_children", "theNode", "dimensions", "parentInfo", "theNewGraph", "processEdges", "gm", "idealLengthTotal", "edgeCount", "edge", "sourceNode", "targetNode", "e1", "processConstraints", "_createClass", "defineProperties", "target", "props", "descriptor", "Constructor", "protoProps", "staticProps", "_classCallCheck", "instance", "assign", "_require", "spectralLayout", "_require2", "defaults", "Layout", "coseResult", "componentCenters", "constraintExist", "layUtil", "packingEnabled", "component", "toBeTiledNodes", "_xCoords", "_yCoords", "tempSpectralResult", "indexesToBeDeleted", "index", "_boundingBox", "componentsEvaluated", "subgraphs", "hiddenEles", "subgraph", "nodeIndex", "source", "sourceNodeIndex", "targetNodeIndex", "sourceCenter", "targetCenter", "_parentInfo", "shiftResult", "result", "newXCoords", "newYCoords", "_count", "nodeRectangle", "getPositions", "pos", "theId", "_pos", "_hiddenEles", "Matrix", "SVD", "parentNodes", "parentChildMap", "allNodesNeighborhood", "samplesColumn", "minDistancesColumn", "C", "PHI", "INV", "firstSample", "nodeSize", "infinity", "small", "piTol", "samplingType", "nodeSeparation", "sampleSize", "randomSampleCR", "sample", "flag", "BFS", "pivot", "samplingMethod", "path", "front", "back", "current", "distance", "max_dist", "max_ind", "neighbors", "_i2", "_i3", "allBFS", "_i4", "_i5", "_i6", "j", "_i7", "_i8", "_j", "SVDResult", "a_q", "a_u", "a_v", "max_s", "a_Sig", "powerIteration", "theta1", "theta2", "Y1", "Y2", "V1", "V2", "previous", "_i9", "_i10", "_i11", "_i12", "_i13", "min", "ele2", "eleIndex", "disconnectedId", "id", "_iteratorNormalCompletion2", "_didIteratorError2", "_iteratorError2", "_iterator2", "_step2", "_i14", "_i15", "iterator", "firstNode", "firstNodePos", "firstNodeWidth", "secondNode", "secondNodeWidth", "impl", "register", "cytoscape", "__webpack_module_cache__", "moduleId", "cachedModule", "__webpack_exports__", "import_cytoscape_fcose", "ArchitectureDirectionName", "ArchitectureDirectionArrow", "__name", "scale", "ArchitectureDirectionArrowShift", "orig", "arrowSize", "_arrowSize", "getOppositeArchitectureDirection", "x", "isArchitectureDirectionX", "isArchitectureDirection", "temp", "isArchitectureDirectionY", "isArchitectureDirectionXY", "a", "b", "aX_bY", "aY_bX", "isArchitecturePairXY", "pair", "lhs", "rhs", "isValidArchitectureDirectionPair", "getArchitectureDirectionPair", "sourceDir", "targetDir", "shiftPositionByArchitectureDirectionPair", "y", "getArchitectureDirectionXYFactors", "getArchitectureDirectionAlignment", "isArchitectureService", "isArchitectureJunction", "edgeData", "edge", "nodeData", "node", "DEFAULT_ARCHITECTURE_CONFIG", "defaultConfig_default", "ArchitectureDB", "setAccTitle", "getAccTitle", "setDiagramTitle", "getDiagramTitle", "getAccDescription", "setAccDescription", "clear", "id", "icon", "parent", "title", "iconText", "lhsId", "rhsId", "lhsDir", "rhsDir", "lhsInto", "rhsInto", "lhsGroup", "rhsGroup", "lhsGroupId", "rhsGroupId", "groupAlignments", "adjList", "prevOuter", "service", "prevInner", "alignment", "firstId", "visited", "notVisited", "prev", "BFS", "startingId", "spatialMap", "queue", "adj", "posX", "posY", "dir", "spatialMaps", "element", "cleanAndMerge", "getConfig", "field", "populateDb", "ast", "db", "populateCommonDb", "group", "parser", "input", "parse", "log", "getStyles", "options", "architectureStyles_default", "wrapIcon", "architectureIcons", "unknownIcon", "drawEdges", "edgesEl", "cy", "padding", "iconSize", "halfIconSize", "halfArrowSize", "source", "sourceArrow", "sourceGroup", "target", "targetArrow", "targetGroup", "label", "startX", "startY", "midX", "midY", "endX", "endY", "groupEdgeShift", "g", "getEdgeId", "xShift", "yShift", "axis", "width", "textElem", "createText", "getConfig2", "bboxOrig", "bboxNew", "drawGroups", "groupsEl", "groupIconSize", "fontSize", "data", "h", "w", "x1", "y1", "groupsNode", "groupLabelContainer", "shiftedX1", "shiftedY1", "bkgElem", "getIconSVG", "drawServices", "elem", "services", "config", "serviceElem", "divElem", "sanitizeText", "height", "drawJunctions", "junctions", "junction", "junctionElem", "registerIconPacks", "cytoscape", "fcose", "addServices", "addJunctions", "positionNodes", "addGroups", "groups", "addEdges", "edges", "parsedEdge", "edgeType", "getAlignments", "flattenAlignments", "alignmentObj", "alignmentDir", "alignments2", "cnt", "arr", "i", "j", "aGroupId", "aNodeIds", "bGroupId", "bNodeIds", "keyA", "keyB", "alignments", "horizontalAlignments", "verticalAlignments", "nodeGroup", "horizontal", "vertical", "prevHoriz", "prevVert", "horiz", "vert", "getRelativeConstraints", "relativeConstraints", "posToStr", "pos", "strToPos", "p", "invSpatialMap", "directions", "curr", "currId", "currPos", "shift", "newPos", "newId", "layoutArchitecture", "resolve", "renderEl", "select_default", "alignmentConstraint", "relativePlacementConstraint", "layout", "nodeA", "nodeB", "parentA", "parentB", "getSegmentWeights", "pointX", "pointY", "W", "D", "sX", "sY", "tX", "tY", "distAB", "delta1", "delta2", "sEP", "tEP", "weights", "distances", "e", "draw", "text", "_version", "diagObj", "ds", "svg", "selectSvgElement", "edgesElem", "servicesElem", "groupElem", "setupGraphViewbox", "renderer", "diagram"]
+}
diff --git a/docs/public/blockDiagram-VD42YOAC-VWWETFZB.min.js b/docs/public/blockDiagram-VD42YOAC-VWWETFZB.min.js
new file mode 100755
index 0000000..e871143
--- /dev/null
+++ b/docs/public/blockDiagram-VD42YOAC-VWWETFZB.min.js
@@ -0,0 +1,123 @@
+import{a as Vt}from"./chunk-PPPUQLJ3.min.js";import{a as jt}from"./chunk-VUATWGGE.min.js";import{c as Yt}from"./chunk-77XMBG7U.min.js";import{a as Ht}from"./chunk-ANLQN3B7.min.js";import{f as Xt,g as mt}from"./chunk-XCAVDAZC.min.js";import{e as Ut}from"./chunk-R5JLOOQ4.min.js";import"./chunk-PTL4EUOE.min.js";import{d as Kt,m as tt,o as lt}from"./chunk-QZZKR5JD.min.js";import"./chunk-CM5D5KZN.min.js";import{D as nt,E as zt,F as X,K as At,L as Mt,P as Ft,W as I,a as Ot,b as Rt,y as $}from"./chunk-3EE2TK35.min.js";import"./chunk-E5F23VE2.min.js";import{J as Wt,N as Pt,b as d,d as w,j as N}from"./chunk-6TVUEPFY.min.js";import"./chunk-OSRY5VT3.min.js";var wt=(function(){var e=d(function(D,x,g,f){for(g=g||{},f=D.length;f--;g[D[f]]=x);return g},"o"),t=[1,15],a=[1,7],i=[1,13],l=[1,14],s=[1,19],r=[1,16],n=[1,17],c=[1,18],u=[8,30],o=[8,10,21,28,29,30,31,39,43,46],b=[1,23],m=[1,24],y=[8,10,15,16,21,28,29,30,31,39,43,46],L=[8,10,15,16,21,27,28,29,30,31,39,43,46],E=[1,49],S={trace:d(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:d(function(x,g,f,k,v,h,W){var p=h.length-1;switch(v){case 4:k.getLogger().debug("Rule: separator (NL) ");break;case 5:k.getLogger().debug("Rule: separator (Space) ");break;case 6:k.getLogger().debug("Rule: separator (EOF) ");break;case 7:k.getLogger().debug("Rule: hierarchy: ",h[p-1]),k.setHierarchy(h[p-1]);break;case 8:k.getLogger().debug("Stop NL ");break;case 9:k.getLogger().debug("Stop EOF ");break;case 10:k.getLogger().debug("Stop NL2 ");break;case 11:k.getLogger().debug("Stop EOF2 ");break;case 12:k.getLogger().debug("Rule: statement: ",h[p]),typeof h[p].length=="number"?this.$=h[p]:this.$=[h[p]];break;case 13:k.getLogger().debug("Rule: statement #2: ",h[p-1]),this.$=[h[p-1]].concat(h[p]);break;case 14:k.getLogger().debug("Rule: link: ",h[p],x),this.$={edgeTypeStr:h[p],label:""};break;case 15:k.getLogger().debug("Rule: LABEL link: ",h[p-3],h[p-1],h[p]),this.$={edgeTypeStr:h[p],label:h[p-1]};break;case 18:let R=parseInt(h[p]),G=k.generateId();this.$={id:G,type:"space",label:"",width:R,children:[]};break;case 23:k.getLogger().debug("Rule: (nodeStatement link node) ",h[p-2],h[p-1],h[p]," typestr: ",h[p-1].edgeTypeStr);let V=k.edgeStrToEdgeData(h[p-1].edgeTypeStr);this.$=[{id:h[p-2].id,label:h[p-2].label,type:h[p-2].type,directions:h[p-2].directions},{id:h[p-2].id+"-"+h[p].id,start:h[p-2].id,end:h[p].id,label:h[p-1].label,type:"edge",directions:h[p].directions,arrowTypeEnd:V,arrowTypeStart:"arrow_open"},{id:h[p].id,label:h[p].label,type:k.typeStr2Type(h[p].typeStr),directions:h[p].directions}];break;case 24:k.getLogger().debug("Rule: nodeStatement (abc88 node size) ",h[p-1],h[p]),this.$={id:h[p-1].id,label:h[p-1].label,type:k.typeStr2Type(h[p-1].typeStr),directions:h[p-1].directions,widthInColumns:parseInt(h[p],10)};break;case 25:k.getLogger().debug("Rule: nodeStatement (node) ",h[p]),this.$={id:h[p].id,label:h[p].label,type:k.typeStr2Type(h[p].typeStr),directions:h[p].directions,widthInColumns:1};break;case 26:k.getLogger().debug("APA123",this?this:"na"),k.getLogger().debug("COLUMNS: ",h[p]),this.$={type:"column-setting",columns:h[p]==="auto"?-1:parseInt(h[p])};break;case 27:k.getLogger().debug("Rule: id-block statement : ",h[p-2],h[p-1]);let Bt=k.generateId();this.$={...h[p-2],type:"composite",children:h[p-1]};break;case 28:k.getLogger().debug("Rule: blockStatement : ",h[p-2],h[p-1],h[p]);let at=k.generateId();this.$={id:at,type:"composite",label:"",children:h[p-1]};break;case 29:k.getLogger().debug("Rule: node (NODE_ID separator): ",h[p]),this.$={id:h[p]};break;case 30:k.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",h[p-1],h[p]),this.$={id:h[p-1],label:h[p].label,typeStr:h[p].typeStr,directions:h[p].directions};break;case 31:k.getLogger().debug("Rule: dirList: ",h[p]),this.$=[h[p]];break;case 32:k.getLogger().debug("Rule: dirList: ",h[p-1],h[p]),this.$=[h[p-1]].concat(h[p]);break;case 33:k.getLogger().debug("Rule: nodeShapeNLabel: ",h[p-2],h[p-1],h[p]),this.$={typeStr:h[p-2]+h[p],label:h[p-1]};break;case 34:k.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",h[p-3],h[p-2]," #3:",h[p-1],h[p]),this.$={typeStr:h[p-3]+h[p],label:h[p-2],directions:h[p-1]};break;case 35:case 36:this.$={type:"classDef",id:h[p-1].trim(),css:h[p].trim()};break;case 37:this.$={type:"applyClass",id:h[p-1].trim(),styleClass:h[p].trim()};break;case 38:this.$={type:"applyStyles",id:h[p-1].trim(),stylesStr:h[p].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:l,31:s,39:r,43:n,46:c},{8:[1,20]},e(u,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:a,28:i,29:l,31:s,39:r,43:n,46:c}),e(o,[2,16],{14:22,15:b,16:m}),e(o,[2,17]),e(o,[2,18]),e(o,[2,19]),e(o,[2,20]),e(o,[2,21]),e(o,[2,22]),e(y,[2,25],{27:[1,25]}),e(o,[2,26]),{19:26,26:12,31:s},{10:t,11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:l,31:s,39:r,43:n,46:c},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(L,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(u,[2,13]),{26:35,31:s},{31:[2,14]},{17:[1,36]},e(y,[2,24]),{10:t,11:37,13:4,14:22,15:b,16:m,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:i,29:l,31:s,39:r,43:n,46:c},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(L,[2,30]),{18:[1,43]},{18:[1,44]},e(y,[2,23]),{18:[1,45]},{30:[1,46]},e(o,[2,28]),e(o,[2,35]),e(o,[2,36]),e(o,[2,37]),e(o,[2,38]),{36:[1,47]},{33:48,34:E},{15:[1,50]},e(o,[2,27]),e(L,[2,33]),{38:[1,51]},{33:52,34:E,38:[2,31]},{31:[2,15]},e(L,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:d(function(x,g){if(g.recoverable)this.trace(x);else{var f=new Error(x);throw f.hash=g,f}},"parseError"),parse:d(function(x){var g=this,f=[0],k=[],v=[null],h=[],W=this.table,p="",R=0,G=0,V=0,Bt=2,at=1,Se=h.slice.call(arguments,1),z=Object.create(this.lexer),q={yy:{}};for(var pt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,pt)&&(q.yy[pt]=this.yy[pt]);z.setInput(x,q.yy),q.yy.lexer=z,q.yy.parser=this,typeof z.yylloc>"u"&&(z.yylloc={});var ft=z.yylloc;h.push(ft);var ve=z.options&&z.options.ranges;typeof q.yy.parseError=="function"?this.parseError=q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ee(P){f.length=f.length-2*P,v.length=v.length-P,h.length=h.length-P}d(Ee,"popStack");function Ct(){var P;return P=k.pop()||z.lex()||at,typeof P!="number"&&(P instanceof Array&&(k=P,P=k.pop()),P=g.symbols_[P]||P),P}d(Ct,"lex");for(var F,bt,J,H,qr,xt,Q={},st,Z,It,it;;){if(J=f[f.length-1],this.defaultActions[J]?H=this.defaultActions[J]:((F===null||typeof F>"u")&&(F=Ct()),H=W[J]&&W[J][F]),typeof H>"u"||!H.length||!H[0]){var yt="";it=[];for(st in W[J])this.terminals_[st]&&st>Bt&&it.push("'"+this.terminals_[st]+"'");z.showPosition?yt="Parse error on line "+(R+1)+`:
+`+z.showPosition()+`
+Expecting `+it.join(", ")+", got '"+(this.terminals_[F]||F)+"'":yt="Parse error on line "+(R+1)+": Unexpected "+(F==at?"end of input":"'"+(this.terminals_[F]||F)+"'"),this.parseError(yt,{text:z.match,token:this.terminals_[F]||F,line:z.yylineno,loc:ft,expected:it})}if(H[0]instanceof Array&&H.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+F);switch(H[0]){case 1:f.push(F),v.push(z.yytext),h.push(z.yylloc),f.push(H[1]),F=null,bt?(F=bt,bt=null):(G=z.yyleng,p=z.yytext,R=z.yylineno,ft=z.yylloc,V>0&&V--);break;case 2:if(Z=this.productions_[H[1]][1],Q.$=v[v.length-Z],Q._$={first_line:h[h.length-(Z||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(Z||1)].first_column,last_column:h[h.length-1].last_column},ve&&(Q._$.range=[h[h.length-(Z||1)].range[0],h[h.length-1].range[1]]),xt=this.performAction.apply(Q,[p,G,R,q.yy,H[1],v,h].concat(Se)),typeof xt<"u")return xt;Z&&(f=f.slice(0,-1*Z*2),v=v.slice(0,-1*Z),h=h.slice(0,-1*Z)),f.push(this.productions_[H[1]][0]),v.push(Q.$),h.push(Q._$),It=W[f[f.length-2]][f[f.length-1]],f.push(It);break;case 3:return!0}}return!0},"parse")},C=(function(){var D={EOF:1,parseError:d(function(g,f){if(this.yy.parser)this.yy.parser.parseError(g,f);else throw new Error(g)},"parseError"),setInput:d(function(x,g){return this.yy=g||this.yy||{},this._input=x,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:d(function(){var x=this._input[0];this.yytext+=x,this.yyleng++,this.offset++,this.match+=x,this.matched+=x;var g=x.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),x},"input"),unput:d(function(x){var g=x.length,f=x.split(/(?:\r\n?|\n)/g);this._input=x+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var k=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===k.length?this.yylloc.first_column:0)+k[k.length-f.length].length-f[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(x){this.unput(this.match.slice(x))},"less"),pastInput:d(function(){var x=this.matched.substr(0,this.matched.length-this.match.length);return(x.length>20?"...":"")+x.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var x=this.match;return x.length<20&&(x+=this._input.substr(0,20-x.length)),(x.substr(0,20)+(x.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var x=this.pastInput(),g=new Array(x.length+1).join("-");return x+this.upcomingInput()+`
+`+g+"^"},"showPosition"),test_match:d(function(x,g){var f,k,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),k=x[0].match(/(?:\r\n?|\n).*/g),k&&(this.yylineno+=k.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:k?k[k.length-1].length-k[k.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+x[0].length},this.yytext+=x[0],this.match+=x[0],this.matches=x,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(x[0].length),this.matched+=x[0],f=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var h in v)this[h]=v[h];return!1}return!1},"test_match"),next:d(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var x,g,f,k;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),h=0;hg[0].length)){if(g=f,k=h,this.options.backtrack_lexer){if(x=this.test_match(f,v[h]),x!==!1)return x;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(x=this.test_match(g,v[k]),x!==!1?x:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:d(function(){var g=this.next();return g||this.lex()},"lex"),begin:d(function(g){this.conditionStack.push(g)},"begin"),popState:d(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:d(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:d(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:d(function(g){this.begin(g)},"pushState"),stateStackSize:d(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:d(function(g,f,k,v){var h=v;switch(k){case 0:return g.getLogger().debug("Found block-beta"),10;break;case 1:return g.getLogger().debug("Found id-block"),29;break;case 2:return g.getLogger().debug("Found block"),10;break;case 3:g.getLogger().debug(".",f.yytext);break;case 4:g.getLogger().debug("_",f.yytext);break;case 5:return 5;case 6:return f.yytext=-1,28;break;case 7:return f.yytext=f.yytext.replace(/columns\s+/,""),g.getLogger().debug("COLUMNS (LEX)",f.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:g.getLogger().debug("LEX: POPPING STR:",f.yytext),this.popState();break;case 13:return g.getLogger().debug("LEX: STR end:",f.yytext),"STR";break;case 14:return f.yytext=f.yytext.replace(/space\:/,""),g.getLogger().debug("SPACE NUM (LEX)",f.yytext),21;break;case 15:return f.yytext="1",g.getLogger().debug("COLUMNS (LEX)",f.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),g.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),g.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),g.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),g.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),g.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),g.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),g.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),g.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),g.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),g.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),g.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),g.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return g.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return g.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return g.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return g.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return g.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return g.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return g.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),g.getLogger().debug("LEX ARR START"),37;break;case 74:return g.getLogger().debug("Lex: NODE_ID",f.yytext),31;break;case 75:return g.getLogger().debug("Lex: EOF",f.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:g.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:g.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return g.getLogger().debug("LEX: NODE_DESCR:",f.yytext),"NODE_DESCR";break;case 83:g.getLogger().debug("LEX POPPING"),this.popState();break;case 84:g.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return f.yytext=f.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (right): dir:",f.yytext),"DIR";break;case 86:return f.yytext=f.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (left):",f.yytext),"DIR";break;case 87:return f.yytext=f.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (x):",f.yytext),"DIR";break;case 88:return f.yytext=f.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (y):",f.yytext),"DIR";break;case 89:return f.yytext=f.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (up):",f.yytext),"DIR";break;case 90:return f.yytext=f.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (down):",f.yytext),"DIR";break;case 91:return f.yytext="]>",g.getLogger().debug("Lex (ARROW_DIR end):",f.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return g.getLogger().debug("Lex: LINK","#"+f.yytext+"#"),15;break;case 93:return g.getLogger().debug("Lex: LINK",f.yytext),15;break;case 94:return g.getLogger().debug("Lex: LINK",f.yytext),15;break;case 95:return g.getLogger().debug("Lex: LINK",f.yytext),15;break;case 96:return g.getLogger().debug("Lex: START_LINK",f.yytext),this.pushState("LLABEL"),16;break;case 97:return g.getLogger().debug("Lex: START_LINK",f.yytext),this.pushState("LLABEL"),16;break;case 98:return g.getLogger().debug("Lex: START_LINK",f.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return g.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),g.getLogger().debug("Lex: LINK","#"+f.yytext+"#"),15;break;case 102:return this.popState(),g.getLogger().debug("Lex: LINK",f.yytext),15;break;case 103:return this.popState(),g.getLogger().debug("Lex: LINK",f.yytext),15;break;case 104:return g.getLogger().debug("Lex: COLON",f.yytext),f.yytext=f.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return D})();S.lexer=C;function _(){this.yy={}}return d(_,"Parser"),_.prototype=S,S.Parser=_,new _})();wt.parser=wt;var _e=wt,U=new Map,Et=[],kt=new Map,Zt="color",Gt="fill",De="bgFill",ae=",",Ne=I(),ht=new Map,Te=d(e=>At.sanitizeText(e,Ne),"sanitizeText"),Be=d(function(e,t=""){let a=ht.get(e);a||(a={id:e,styles:[],textStyles:[]},ht.set(e,a)),t?.split(ae).forEach(i=>{let l=i.replace(/([^;]*);/,"$1").trim();if(RegExp(Zt).exec(i)){let r=l.replace(Gt,De).replace(Zt,Gt);a.textStyles.push(r)}a.styles.push(l)})},"addStyleClass"),Ce=d(function(e,t=""){let a=U.get(e);t!=null&&(a.styles=t.split(ae))},"addStyle2Node"),Ie=d(function(e,t){e.split(",").forEach(function(a){let i=U.get(a);if(i===void 0){let l=a.trim();i={id:l,type:"na",children:[]},U.set(l,i)}i.classes||(i.classes=[]),i.classes.push(t)})},"setCssClass"),se=d((e,t)=>{let a=e.flat(),i=[],s=a.find(r=>r?.type==="column-setting")?.columns??-1;for(let r of a){if(typeof s=="number"&&s>0&&r.type!=="column-setting"&&typeof r.widthInColumns=="number"&&r.widthInColumns>s&&w.warn(`Block ${r.id} width ${r.widthInColumns} exceeds configured column width ${s}`),r.label&&(r.label=Te(r.label)),r.type==="classDef"){Be(r.id,r.css);continue}if(r.type==="applyClass"){Ie(r.id,r?.styleClass??"");continue}if(r.type==="applyStyles"){r?.stylesStr&&Ce(r.id,r?.stylesStr);continue}if(r.type==="column-setting")t.columns=r.columns??-1;else if(r.type==="edge"){let n=(kt.get(r.id)??0)+1;kt.set(r.id,n),r.id=n+"-"+r.id,Et.push(r)}else{r.label||(r.type==="composite"?r.label="":r.label=r.id);let n=U.get(r.id);if(n===void 0?U.set(r.id,r):(r.type!=="na"&&(n.type=r.type),r.label!==r.id&&(n.label=r.label)),r.children&&se(r.children,r),r.type==="space"){let c=r.width??1;for(let u=0;u{w.debug("Clear called"),Ft(),rt={id:"root",type:"composite",children:[],columns:-1},U=new Map([["root",rt]]),_t=[],ht=new Map,Et=[],kt=new Map},"clear");function ie(e){switch(w.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return w.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}d(ie,"typeStr2Type");function ne(e){switch(w.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}d(ne,"edgeTypeStr2Type");function le(e){switch(e.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}d(le,"edgeStrToEdgeData");var qt=0,Re=d(()=>(qt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+qt),"generateId"),ze=d(e=>{rt.children=e,se(e,rt),_t=rt.children},"setHierarchy"),Ae=d(e=>{let t=U.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),Me=d(()=>[...U.values()],"getBlocksFlat"),Fe=d(()=>_t||[],"getBlocks"),We=d(()=>Et,"getEdges"),Pe=d(e=>U.get(e),"getBlock"),Ye=d(e=>{U.set(e.id,e)},"setBlock"),He=d(()=>w,"getLogger"),Ke=d(function(){return ht},"getClasses"),Xe={getConfig:d(()=>$().block,"getConfig"),typeStr2Type:ie,edgeTypeStr2Type:ne,edgeStrToEdgeData:le,getLogger:He,getBlocksFlat:Me,getBlocks:Fe,getEdges:We,setHierarchy:ze,getBlock:Pe,setBlock:Ye,getColumns:Ae,getClasses:Ke,clear:Oe,generateId:Re},Ue=Xe,ct=d((e,t)=>{let a=Rt,i=a(e,"r"),l=a(e,"g"),s=a(e,"b");return Ot(i,l,s,t)},"fade"),je=d(e=>`.label {
+ font-family: ${e.fontFamily};
+ color: ${e.nodeTextColor||e.textColor};
+ }
+ .cluster-label text {
+ fill: ${e.titleColor};
+ }
+ .cluster-label span,p {
+ color: ${e.titleColor};
+ }
+
+
+
+ .label text,span,p {
+ fill: ${e.nodeTextColor||e.textColor};
+ color: ${e.nodeTextColor||e.textColor};
+ }
+
+ .node rect,
+ .node circle,
+ .node ellipse,
+ .node polygon,
+ .node path {
+ fill: ${e.mainBkg};
+ stroke: ${e.nodeBorder};
+ stroke-width: 1px;
+ }
+ .flowchart-label text {
+ text-anchor: middle;
+ }
+ // .flowchart-label .text-outer-tspan {
+ // text-anchor: middle;
+ // }
+ // .flowchart-label .text-inner-tspan {
+ // text-anchor: start;
+ // }
+
+ .node .label {
+ text-align: center;
+ }
+ .node.clickable {
+ cursor: pointer;
+ }
+
+ .arrowheadPath {
+ fill: ${e.arrowheadColor};
+ }
+
+ .edgePath .path {
+ stroke: ${e.lineColor};
+ stroke-width: 2.0px;
+ }
+
+ .flowchart-link {
+ stroke: ${e.lineColor};
+ fill: none;
+ }
+
+ .edgeLabel {
+ background-color: ${e.edgeLabelBackground};
+ rect {
+ opacity: 0.5;
+ background-color: ${e.edgeLabelBackground};
+ fill: ${e.edgeLabelBackground};
+ }
+ text-align: center;
+ }
+
+ /* For html labels only */
+ .labelBkg {
+ background-color: ${ct(e.edgeLabelBackground,.5)};
+ // background-color:
+ }
+
+ .node .cluster {
+ // fill: ${ct(e.mainBkg,.5)};
+ fill: ${ct(e.clusterBkg,.5)};
+ stroke: ${ct(e.clusterBorder,.2)};
+ box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
+ stroke-width: 1px;
+ }
+
+ .cluster text {
+ fill: ${e.titleColor};
+ }
+
+ .cluster span,p {
+ color: ${e.titleColor};
+ }
+ /* .cluster div {
+ color: ${e.titleColor};
+ } */
+
+ div.mermaidTooltip {
+ position: absolute;
+ text-align: center;
+ max-width: 200px;
+ padding: 2px;
+ font-family: ${e.fontFamily};
+ font-size: 12px;
+ background: ${e.tertiaryColor};
+ border: 1px solid ${e.border2};
+ border-radius: 2px;
+ pointer-events: none;
+ z-index: 100;
+ }
+
+ .flowchartTitleText {
+ text-anchor: middle;
+ font-size: 18px;
+ fill: ${e.textColor};
+ }
+ ${Vt()}
+`,"getStyles"),Ve=je,Ze=d((e,t,a,i)=>{t.forEach(l=>{sr[l](e,a,i)})},"insertMarkers"),Ge=d((e,t,a)=>{w.trace("Making markers for ",a),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),qe=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),Je=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),Qe=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",a+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),$e=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",a+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),tr=d((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),er=d((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),rr=d((e,t,a)=>{e.append("marker").attr("id",a+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",a+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),ar=d((e,t,a)=>{e.append("defs").append("marker").attr("id",a+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),sr={extension:Ge,composition:qe,aggregation:Je,dependency:Qe,lollipop:$e,point:tr,circle:er,cross:rr,barb:ar},ir=Ze,O=I()?.block?.padding??8;function ce(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let a=t%e,i=Math.floor(t/e);return{px:a,py:i}}d(ce,"calculateBlockPosition");var nr=d(e=>{let t=0,a=0;for(let i of e.children){let{width:l,height:s,x:r,y:n}=i.size??{width:0,height:0,x:0,y:0};w.debug("getMaxChildSize abc95 child:",i.id,"width:",l,"height:",s,"x:",r,"y:",n,i.type),i.type!=="space"&&(l>t&&(t=l/(e.widthInColumns??1)),s>a&&(a=s))}return{width:t,height:a}},"getMaxChildSize");function dt(e,t,a=0,i=0){w.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",a),e?.size?.width||(e.size={width:a,height:i,x:0,y:0});let l=0,s=0;if(e.children?.length>0){for(let y of e.children)dt(y,t);let r=nr(e);l=r.width,s=r.height,w.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",l,s);for(let y of e.children)y.size&&(w.debug(`abc95 Setting size of children of ${e.id} id=${y.id} ${l} ${s} ${JSON.stringify(y.size)}`),y.size.width=l*(y.widthInColumns??1)+O*((y.widthInColumns??1)-1),y.size.height=s,y.size.x=0,y.size.y=0,w.debug(`abc95 updating size of ${e.id} children child:${y.id} maxWidth:${l} maxHeight:${s}`));for(let y of e.children)dt(y,t,l,s);let n=e.columns??-1,c=0;for(let y of e.children)c+=y.widthInColumns??1;let u=e.children.length;n>0&&n0?Math.min(e.children.length,n):e.children.length;if(y>0){let L=(b-y*O-O)/y;w.debug("abc95 (growing to fit) width",e.id,b,e.size?.width,L);for(let E of e.children)E.size&&(E.size.width=L)}}e.size={width:b,height:m,x:0,y:0}}w.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}d(dt,"setBlockSizes");function Dt(e,t){w.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let a=e.columns??-1;if(w.debug("layoutBlocks columns abc95",e.id,"=>",a,e),e.children&&e.children.length>0){let i=e?.children[0]?.size?.width??0,l=e.children.length*i+(e.children.length-1)*O;w.debug("widthOfChildren 88",l,"posX");let s=0;w.debug("abc91 block?.size?.x",e.id,e?.size?.x);let r=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-O,n=0;for(let c of e.children){let u=e;if(!c.size)continue;let{width:o,height:b}=c.size,{px:m,py:y}=ce(a,s);if(y!=n&&(n=y,r=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-O,w.debug("New row in layout for block",e.id," and child ",c.id,n)),w.debug(`abc89 layout blocks (child) id: ${c.id} Pos: ${s} (px, py) ${m},${y} (${u?.size?.x},${u?.size?.y}) parent: ${u.id} width: ${o}${O}`),u.size){let E=o/2;c.size.x=r+O+E,w.debug(`abc91 layout blocks (calc) px, pyid:${c.id} startingPos=X${r} new startingPosX${c.size.x} ${E} padding=${O} width=${o} halfWidth=${E} => x:${c.size.x} y:${c.size.y} ${c.widthInColumns} (width * (child?.w || 1)) / 2 ${o*(c?.widthInColumns??1)/2}`),r=c.size.x+E,c.size.y=u.size.y-u.size.height/2+y*(b+O)+b/2+O,w.debug(`abc88 layout blocks (calc) px, pyid:${c.id}startingPosX${r}${O}${E}=>x:${c.size.x}y:${c.size.y}${c.widthInColumns}(width * (child?.w || 1)) / 2${o*(c?.widthInColumns??1)/2}`)}c.children&&Dt(c,t);let L=c?.widthInColumns??1;a>0&&(L=Math.min(L,a-s%a)),s+=L,w.debug("abc88 columnsPos",c,s)}}w.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}d(Dt,"layoutBlocks");function Nt(e,{minX:t,minY:a,maxX:i,maxY:l}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:s,y:r,width:n,height:c}=e.size;s-n/2i&&(i=s+n/2),r+c/2>l&&(l=r+c/2)}if(e.children)for(let s of e.children)({minX:t,minY:a,maxX:i,maxY:l}=Nt(s,{minX:t,minY:a,maxX:i,maxY:l}));return{minX:t,minY:a,maxX:i,maxY:l}}d(Nt,"findBounds");function oe(e){let t=e.getBlock("root");if(!t)return;dt(t,e,0,0),Dt(t,e),w.debug("getBlocks",JSON.stringify(t,null,2));let{minX:a,minY:i,maxX:l,maxY:s}=Nt(t),r=s-i,n=l-a;return{x:a,y:i,width:n,height:r}}d(oe,"layout");function Lt(e,t){t&&e.attr("style",t)}d(Lt,"applyStyle");function he(e,t){let a=N(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),i=a.append("xhtml:div"),l=e.label,s=e.isNode?"nodeLabel":"edgeLabel",r=i.append("span");return r.html(nt(l,t)),Lt(r,e.labelStyle),r.attr("class",s),Lt(i,e.labelStyle),i.style("display","inline-block"),i.style("white-space","nowrap"),i.attr("xmlns","http://www.w3.org/1999/xhtml"),a.node()}d(he,"addHtmlLabel");var lr=d(async(e,t,a,i)=>{let l=e||"";typeof l=="object"&&(l=l[0]);let s=I();if(X(s.flowchart.htmlLabels)){l=l.replace(/\\n|\n/g," "),w.debug("vertexText"+l);let r=await Xt(lt(l)),n={isNode:i,label:r,labelStyle:t.replace("fill:","color:")};return he(n,s)}else{let r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("style",t.replace("color:","fill:"));let n=[];typeof l=="string"?n=l.split(/\\n|\n| /gi):Array.isArray(l)?n=l:n=[];for(let c of n){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),a?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=c.trim(),r.appendChild(u)}return r}},"createLabel"),K=lr,cr=d((e,t,a,i,l)=>{t.arrowTypeStart&&Jt(e,"start",t.arrowTypeStart,a,i,l),t.arrowTypeEnd&&Jt(e,"end",t.arrowTypeEnd,a,i,l)},"addEdgeMarkers"),or={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Jt=d((e,t,a,i,l,s)=>{let r=or[a];if(!r){w.warn(`Unknown arrow type: ${a}`);return}let n=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${i}#${l}_${s}-${r}${n})`)},"addEdgeMarker"),St={},M={},hr=d(async(e,t)=>{let a=I(),i=X(a.flowchart.htmlLabels),l=t.labelType==="markdown"?mt(e,t.label,{style:t.labelStyle,useHtmlLabels:i,addSvgBackground:!0},a):await K(t.label,t.labelStyle),s=e.insert("g").attr("class","edgeLabel"),r=s.insert("g").attr("class","label");r.node().appendChild(l);let n=l.getBBox();if(i){let u=l.children[0],o=N(l);n=u.getBoundingClientRect(),o.attr("width",n.width),o.attr("height",n.height)}r.attr("transform","translate("+-n.width/2+", "+-n.height/2+")"),St[t.id]=s,t.width=n.width,t.height=n.height;let c;if(t.startLabelLeft){let u=await K(t.startLabelLeft,t.labelStyle),o=e.insert("g").attr("class","edgeTerminals"),b=o.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startLeft=o,et(c,t.startLabelLeft)}if(t.startLabelRight){let u=await K(t.startLabelRight,t.labelStyle),o=e.insert("g").attr("class","edgeTerminals"),b=o.insert("g").attr("class","inner");c=o.node().appendChild(u),b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startRight=o,et(c,t.startLabelRight)}if(t.endLabelLeft){let u=await K(t.endLabelLeft,t.labelStyle),o=e.insert("g").attr("class","edgeTerminals"),b=o.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),o.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endLeft=o,et(c,t.endLabelLeft)}if(t.endLabelRight){let u=await K(t.endLabelRight,t.labelStyle),o=e.insert("g").attr("class","edgeTerminals"),b=o.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),o.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endRight=o,et(c,t.endLabelRight)}return l},"insertEdgeLabel");function et(e,t){I().flowchart.htmlLabels&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(et,"setTerminalWidth");var dr=d((e,t)=>{w.debug("Moving label abc88 ",e.id,e.label,St[e.id],t);let a=t.updatedPath?t.updatedPath:t.originalPath,i=I(),{subGraphTitleTotalMargin:l}=Ht(i);if(e.label){let s=St[e.id],r=e.x,n=e.y;if(a){let c=tt.calcLabelPosition(a);w.debug("Moving label "+e.label+" from (",r,",",n,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(r=c.x,n=c.y)}s.attr("transform",`translate(${r}, ${n+l/2})`)}if(e.startLabelLeft){let s=M[e.id].startLeft,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.startLabelRight){let s=M[e.id].startRight,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.endLabelLeft){let s=M[e.id].endLeft,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}if(e.endLabelRight){let s=M[e.id].endRight,r=e.x,n=e.y;if(a){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",a);r=c.x,n=c.y}s.attr("transform",`translate(${r}, ${n})`)}},"positionEdgeLabel"),gr=d((e,t)=>{let a=e.x,i=e.y,l=Math.abs(t.x-a),s=Math.abs(t.y-i),r=e.width/2,n=e.height/2;return l>=r||s>=n},"outsideNode"),ur=d((e,t,a)=>{w.debug(`intersection calc abc89:
+ outsidePoint: ${JSON.stringify(t)}
+ insidePoint : ${JSON.stringify(a)}
+ node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let i=e.x,l=e.y,s=Math.abs(i-a.x),r=e.width/2,n=a.xMath.abs(i-t.x)*c){let b=a.y{w.debug("abc88 cutPathAtIntersect",e,t);let a=[],i=e[0],l=!1;return e.forEach(s=>{if(!gr(t,s)&&!l){let r=ur(t,i,s),n=!1;a.forEach(c=>{n=n||c.x===r.x&&c.y===r.y}),a.some(c=>c.x===r.x&&c.y===r.y)||a.push(r),l=!0}else i=s,l||a.push(s)}),a},"cutPathAtIntersect"),pr=d(function(e,t,a,i,l,s,r){let n=a.points;w.debug("abc88 InsertEdge: edge=",a,"e=",t);let c=!1,u=s.node(t.v);var o=s.node(t.w);o?.intersect&&u?.intersect&&(n=n.slice(1,a.points.length-1),n.unshift(u.intersect(n[0])),n.push(o.intersect(n[n.length-1]))),a.toCluster&&(w.debug("to cluster abc88",i[a.toCluster]),n=Qt(a.points,i[a.toCluster].node),c=!0),a.fromCluster&&(w.debug("from cluster abc88",i[a.fromCluster]),n=Qt(n.reverse(),i[a.fromCluster].node).reverse(),c=!0);let b=n.filter(x=>!Number.isNaN(x.y)),m=Pt;a.curve&&(l==="graph"||l==="flowchart")&&(m=a.curve);let{x:y,y:L}=Yt(a),E=Wt().x(y).y(L).curve(m),S;switch(a.thickness){case"normal":S="edge-thickness-normal";break;case"thick":S="edge-thickness-thick";break;case"invisible":S="edge-thickness-thick";break;default:S=""}switch(a.pattern){case"solid":S+=" edge-pattern-solid";break;case"dotted":S+=" edge-pattern-dotted";break;case"dashed":S+=" edge-pattern-dashed";break}let C=e.append("path").attr("d",E(b)).attr("id",a.id).attr("class"," "+S+(a.classes?" "+a.classes:"")).attr("style",a.style),_="";(I().flowchart.arrowMarkerAbsolute||I().state.arrowMarkerAbsolute)&&(_=zt(!0)),cr(C,a,_,r,l);let D={};return c&&(D.updatedPath=n),D.originalPath=a.points,D},"insertEdge"),fr=d(e=>{let t=new Set;for(let a of e)switch(a){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(a);break}return t},"expandAndDeduplicateDirections"),br=d((e,t,a)=>{let i=fr(e),l=2,s=t.height+2*a.padding,r=s/l,n=t.width+2*r+a.padding,c=a.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:r,y:0},{x:n/2,y:2*c},{x:n-r,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*c,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-r,y:-s},{x:n/2,y:-s-2*c},{x:r,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*c,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:r,y:0},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:r,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:r,y:-s},{x:n-r,y:-s},{x:n,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:n,y:-r},{x:n,y:-s+r},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:n,y:0},{x:0,y:-r},{x:0,y:-s+r},{x:n,y:-s}]:i.has("right")&&i.has("left")?[{x:r,y:0},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:n/2,y:0},{x:0,y:-c},{x:r,y:-c},{x:r,y:-s+c},{x:0,y:-s+c},{x:n/2,y:-s},{x:n,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c},{x:n,y:-c}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:n,y:-r},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:n,y:0},{x:0,y:-r},{x:n,y:-s}]:i.has("left")&&i.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:i.has("right")?[{x:r,y:-c},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s+c}]:i.has("left")?[{x:r,y:0},{x:r,y:-c},{x:n-r,y:-c},{x:n-r,y:-s+c},{x:r,y:-s+c},{x:r,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:r,y:-c},{x:r,y:-s+c},{x:0,y:-s+c},{x:n/2,y:-s},{x:n,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c}]:i.has("down")?[{x:n/2,y:0},{x:0,y:-c},{x:r,y:-c},{x:r,y:-s+c},{x:n-r,y:-s+c},{x:n-r,y:-c},{x:n,y:-c}]:[{x:0,y:0}]},"getArrowPoints");function de(e,t){return e.intersect(t)}d(de,"intersectNode");var xr=de;function ge(e,t,a,i){var l=e.x,s=e.y,r=l-i.x,n=s-i.y,c=Math.sqrt(t*t*n*n+a*a*r*r),u=Math.abs(t*a*r/c);i.x0}d(vt,"sameSign");var mr=fe,wr=be;function be(e,t,a){var i=e.x,l=e.y,s=[],r=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(L){r=Math.min(r,L.x),n=Math.min(n,L.y)}):(r=Math.min(r,t.x),n=Math.min(n,t.y));for(var c=i-e.width/2-r,u=l-e.height/2-n,o=0;o1&&s.sort(function(L,E){var S=L.x-a.x,C=L.y-a.y,_=Math.sqrt(S*S+C*C),D=E.x-a.x,x=E.y-a.y,g=Math.sqrt(D*D+x*x);return _{var a=e.x,i=e.y,l=t.x-a,s=t.y-i,r=e.width/2,n=e.height/2,c,u;return Math.abs(s)*r>Math.abs(l)*n?(s<0&&(n=-n),c=s===0?0:n*l/s,u=n):(l<0&&(r=-r),c=r,u=l===0?0:r*s/l),{x:a+c,y:i+u}},"intersectRect"),Lr=kr,T={node:xr,circle:yr,ellipse:ue,polygon:wr,rect:Lr},A=d(async(e,t,a,i)=>{let l=I(),s,r=t.useHtmlLabels||X(l.flowchart.htmlLabels);a?s=a:s="node default";let n=e.insert("g").attr("class",s).attr("id",t.domId||t.id),c=n.insert("g").attr("class","label").attr("style",t.labelStyle),u;t.labelText===void 0?u="":u=typeof t.labelText=="string"?t.labelText:t.labelText[0];let o=c.node(),b;t.labelType==="markdown"?b=mt(c,nt(lt(u),l),{useHtmlLabels:r,width:t.width||l.flowchart.wrappingWidth,classes:"markdown-node-label"},l):b=o.appendChild(await K(nt(lt(u),l),t.labelStyle,!1,i));let m=b.getBBox(),y=t.padding/2;if(X(l.flowchart.htmlLabels)){let L=b.children[0],E=N(b),S=L.getElementsByTagName("img");if(S){let C=u.replace(/ ]*>/g,"").trim()==="";await Promise.all([...S].map(_=>new Promise(D=>{function x(){if(_.style.display="flex",_.style.flexDirection="column",C){let g=l.fontSize?l.fontSize:window.getComputedStyle(document.body).fontSize,k=parseInt(g,10)*5+"px";_.style.minWidth=k,_.style.maxWidth=k}else _.style.width="100%";D(_)}d(x,"setupImage"),setTimeout(()=>{_.complete&&x()}),_.addEventListener("error",x),_.addEventListener("load",x)})))}m=L.getBoundingClientRect(),E.attr("width",m.width),E.attr("height",m.height)}return r?c.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"):c.attr("transform","translate(0, "+-m.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:n,bbox:m,halfPadding:y,label:c}},"labelHelper"),B=d((e,t)=>{let a=t.node().getBBox();e.width=a.width,e.height=a.height},"updateNodeBounds");function j(e,t,a,i){return e.insert("polygon",":first-child").attr("points",i.map(function(l){return l.x+","+l.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+a/2+")")}d(j,"insertPolygonShape");var Sr=d(async(e,t)=>{t.useHtmlLabels||I().flowchart.htmlLabels||(t.centerLabel=!0);let{shapeSvg:i,bbox:l,halfPadding:s}=await A(e,t,"node "+t.classes,!0);w.info("Classes = ",t.classes);let r=i.insert("rect",":first-child");return r.attr("rx",t.rx).attr("ry",t.ry).attr("x",-l.width/2-s).attr("y",-l.height/2-s).attr("width",l.width+t.padding).attr("height",l.height+t.padding),B(t,r),t.intersect=function(n){return T.rect(t,n)},i},"note"),vr=Sr,$t=d(e=>e?" "+e:"","formatClass"),Y=d((e,t)=>`${t||"node default"}${$t(e.classes)} ${$t(e.class)}`,"getClassesFromNode"),te=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=l+s,n=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}];w.info("Question main (Circle)");let c=j(a,r,r,n);return c.attr("style",t.style),B(t,c),t.intersect=function(u){return w.warn("Intersect called"),T.polygon(t,n,u)},a},"question"),Er=d((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=28,l=[{x:0,y:i/2},{x:i/2,y:0},{x:0,y:-i/2},{x:-i/2,y:0}];return a.insert("polygon",":first-child").attr("points",l.map(function(r){return r.x+","+r.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(r){return T.circle(t,14,r)},a},"choice"),_r=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=4,s=i.height+t.padding,r=s/l,n=i.width+2*r+t.padding,c=[{x:r,y:0},{x:n-r,y:0},{x:n,y:-s/2},{x:n-r,y:-s},{x:r,y:-s},{x:0,y:-s/2}],u=j(a,n,s,c);return u.attr("style",t.style),B(t,u),t.intersect=function(o){return T.polygon(t,c,o)},a},"hexagon"),Dr=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,void 0,!0),l=2,s=i.height+2*t.padding,r=s/l,n=i.width+2*r+t.padding,c=br(t.directions,i,t),u=j(a,n,s,c);return u.attr("style",t.style),B(t,u),t.intersect=function(o){return T.polygon(t,c,o)},a},"block_arrow"),Nr=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:-s/2,y:0},{x:l,y:0},{x:l,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}];return j(a,l,s,r).attr("style",t.style),t.width=l+s,t.height=s,t.intersect=function(c){return T.polygon(t,r,c)},a},"rect_left_inv_arrow"),Tr=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:-2*s/6,y:0},{x:l-s/6,y:0},{x:l+2*s/6,y:-s},{x:s/6,y:-s}],n=j(a,l,s,r);return n.attr("style",t.style),B(t,n),t.intersect=function(c){return T.polygon(t,r,c)},a},"lean_right"),Br=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:2*s/6,y:0},{x:l+s/6,y:0},{x:l-2*s/6,y:-s},{x:-s/6,y:-s}],n=j(a,l,s,r);return n.attr("style",t.style),B(t,n),t.intersect=function(c){return T.polygon(t,r,c)},a},"lean_left"),Cr=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:-2*s/6,y:0},{x:l+2*s/6,y:0},{x:l-s/6,y:-s},{x:s/6,y:-s}],n=j(a,l,s,r);return n.attr("style",t.style),B(t,n),t.intersect=function(c){return T.polygon(t,r,c)},a},"trapezoid"),Ir=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:s/6,y:0},{x:l-s/6,y:0},{x:l+2*s/6,y:-s},{x:-2*s/6,y:-s}],n=j(a,l,s,r);return n.attr("style",t.style),B(t,n),t.intersect=function(c){return T.polygon(t,r,c)},a},"inv_trapezoid"),Or=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:0,y:0},{x:l+s/2,y:0},{x:l,y:-s/2},{x:l+s/2,y:-s},{x:0,y:-s}],n=j(a,l,s,r);return n.attr("style",t.style),B(t,n),t.intersect=function(c){return T.polygon(t,r,c)},a},"rect_right_inv_arrow"),Rr=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=l/2,r=s/(2.5+l/50),n=i.height+r+t.padding,c="M 0,"+r+" a "+s+","+r+" 0,0,0 "+l+" 0 a "+s+","+r+" 0,0,0 "+-l+" 0 l 0,"+n+" a "+s+","+r+" 0,0,0 "+l+" 0 l 0,"+-n,u=a.attr("label-offset-y",r).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-l/2+","+-(n/2+r)+")");return B(t,u),t.intersect=function(o){let b=T.rect(t,o),m=b.x-t.x;if(s!=0&&(Math.abs(m)t.height/2-r)){let y=r*r*(1-m*m/(s*s));y!=0&&(y=Math.sqrt(y)),y=r-y,o.y-t.y>0&&(y=-y),b.y+=y}return b},a},"cylinder"),zr=d(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:l}=await A(e,t,"node "+t.classes+" "+t.class,!0),s=a.insert("rect",":first-child"),r=t.positioned?t.width:i.width+t.padding,n=t.positioned?t.height:i.height+t.padding,c=t.positioned?-r/2:-i.width/2-l,u=t.positioned?-n/2:-i.height/2-l;if(s.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",u).attr("width",r).attr("height",n),t.props){let o=new Set(Object.keys(t.props));t.props.borders&&(gt(s,t.props.borders,r,n),o.delete("borders")),o.forEach(b=>{w.warn(`Unknown node property ${b}`)})}return B(t,s),t.intersect=function(o){return T.rect(t,o)},a},"rect"),Ar=d(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:l}=await A(e,t,"node "+t.classes,!0),s=a.insert("rect",":first-child"),r=t.positioned?t.width:i.width+t.padding,n=t.positioned?t.height:i.height+t.padding,c=t.positioned?-r/2:-i.width/2-l,u=t.positioned?-n/2:-i.height/2-l;if(s.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",c).attr("y",u).attr("width",r).attr("height",n),t.props){let o=new Set(Object.keys(t.props));t.props.borders&&(gt(s,t.props.borders,r,n),o.delete("borders")),o.forEach(b=>{w.warn(`Unknown node property ${b}`)})}return B(t,s),t.intersect=function(o){return T.rect(t,o)},a},"composite"),Mr=d(async(e,t)=>{let{shapeSvg:a}=await A(e,t,"label",!0);w.trace("Classes = ",t.class);let i=a.insert("rect",":first-child"),l=0,s=0;if(i.attr("width",l).attr("height",s),a.attr("class","label edgeLabel"),t.props){let r=new Set(Object.keys(t.props));t.props.borders&&(gt(i,t.props.borders,l,s),r.delete("borders")),r.forEach(n=>{w.warn(`Unknown node property ${n}`)})}return B(t,i),t.intersect=function(r){return T.rect(t,r)},a},"labelRect");function gt(e,t,a,i){let l=[],s=d(n=>{l.push(n,0)},"addBorder"),r=d(n=>{l.push(0,n)},"skipBorder");t.includes("t")?(w.debug("add top border"),s(a)):r(a),t.includes("r")?(w.debug("add right border"),s(i)):r(i),t.includes("b")?(w.debug("add bottom border"),s(a)):r(a),t.includes("l")?(w.debug("add left border"),s(i)):r(i),e.attr("stroke-dasharray",l.join(" "))}d(gt,"applyNodePropertyBorders");var Fr=d(async(e,t)=>{let a;t.classes?a="node "+t.classes:a="node default";let i=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=i.insert("rect",":first-child"),s=i.insert("line"),r=i.insert("g").attr("class","label"),n=t.labelText.flat?t.labelText.flat():t.labelText,c="";typeof n=="object"?c=n[0]:c=n,w.info("Label text abc79",c,n,typeof n=="object");let u=r.node().appendChild(await K(c,t.labelStyle,!0,!0)),o={width:0,height:0};if(X(I().flowchart.htmlLabels)){let E=u.children[0],S=N(u);o=E.getBoundingClientRect(),S.attr("width",o.width),S.attr("height",o.height)}w.info("Text 2",n);let b=n.slice(1,n.length),m=u.getBBox(),y=r.node().appendChild(await K(b.join?b.join(" "):b,t.labelStyle,!0,!0));if(X(I().flowchart.htmlLabels)){let E=y.children[0],S=N(y);o=E.getBoundingClientRect(),S.attr("width",o.width),S.attr("height",o.height)}let L=t.padding/2;return N(y).attr("transform","translate( "+(o.width>m.width?0:(m.width-o.width)/2)+", "+(m.height+L+5)+")"),N(u).attr("transform","translate( "+(o.width{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.height+t.padding,s=i.width+l/4+t.padding,r=a.insert("rect",":first-child").attr("style",t.style).attr("rx",l/2).attr("ry",l/2).attr("x",-s/2).attr("y",-l/2).attr("width",s).attr("height",l);return B(t,r),t.intersect=function(n){return T.rect(t,n)},a},"stadium"),Pr=d(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:l}=await A(e,t,Y(t,void 0),!0),s=a.insert("circle",":first-child");return s.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+l).attr("width",i.width+t.padding).attr("height",i.height+t.padding),w.info("Circle main"),B(t,s),t.intersect=function(r){return w.info("Circle intersect",t,i.width/2+l,r),T.circle(t,i.width/2+l,r)},a},"circle"),Yr=d(async(e,t)=>{let{shapeSvg:a,bbox:i,halfPadding:l}=await A(e,t,Y(t,void 0),!0),s=5,r=a.insert("g",":first-child"),n=r.insert("circle"),c=r.insert("circle");return r.attr("class",t.class),n.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+l+s).attr("width",i.width+t.padding+s*2).attr("height",i.height+t.padding+s*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",i.width/2+l).attr("width",i.width+t.padding).attr("height",i.height+t.padding),w.info("DoubleCircle main"),B(t,n),t.intersect=function(u){return w.info("DoubleCircle intersect",t,i.width/2+l+s,u),T.circle(t,i.width/2+l+s,u)},a},"doublecircle"),Hr=d(async(e,t)=>{let{shapeSvg:a,bbox:i}=await A(e,t,Y(t,void 0),!0),l=i.width+t.padding,s=i.height+t.padding,r=[{x:0,y:0},{x:l,y:0},{x:l,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],n=j(a,l,s,r);return n.attr("style",t.style),B(t,n),t.intersect=function(c){return T.polygon(t,r,c)},a},"subroutine"),Kr=d((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=a.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),B(t,i),t.intersect=function(l){return T.circle(t,7,l)},a},"start"),ee=d((e,t,a)=>{let i=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),l=70,s=10;a==="LR"&&(l=10,s=70);let r=i.append("rect").attr("x",-1*l/2).attr("y",-1*s/2).attr("width",l).attr("height",s).attr("class","fork-join");return B(t,r),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(n){return T.rect(t,n)},i},"forkJoin"),Xr=d((e,t)=>{let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=a.insert("circle",":first-child"),l=a.insert("circle",":first-child");return l.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),i.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),B(t,l),t.intersect=function(s){return T.circle(t,7,s)},a},"end"),Ur=d(async(e,t)=>{let a=t.padding/2,i=4,l=8,s;t.classes?s="node "+t.classes:s="node default";let r=e.insert("g").attr("class",s).attr("id",t.domId||t.id),n=r.insert("rect",":first-child"),c=r.insert("line"),u=r.insert("line"),o=0,b=i,m=r.insert("g").attr("class","label"),y=0,L=t.classData.annotations?.[0],E=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",S=m.node().appendChild(await K(E,t.labelStyle,!0,!0)),C=S.getBBox();if(X(I().flowchart.htmlLabels)){let v=S.children[0],h=N(S);C=v.getBoundingClientRect(),h.attr("width",C.width),h.attr("height",C.height)}t.classData.annotations[0]&&(b+=C.height+i,o+=C.width);let _=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(I().flowchart.htmlLabels?_+="<"+t.classData.type+">":_+="<"+t.classData.type+">");let D=m.node().appendChild(await K(_,t.labelStyle,!0,!0));N(D).attr("class","classTitle");let x=D.getBBox();if(X(I().flowchart.htmlLabels)){let v=D.children[0],h=N(D);x=v.getBoundingClientRect(),h.attr("width",x.width),h.attr("height",x.height)}b+=x.height+i,x.width>o&&(o=x.width);let g=[];t.classData.members.forEach(async v=>{let h=v.getDisplayDetails(),W=h.displayText;I().flowchart.htmlLabels&&(W=W.replace(/ /g,">"));let p=m.node().appendChild(await K(W,h.cssStyle?h.cssStyle:t.labelStyle,!0,!0)),R=p.getBBox();if(X(I().flowchart.htmlLabels)){let G=p.children[0],V=N(p);R=G.getBoundingClientRect(),V.attr("width",R.width),V.attr("height",R.height)}R.width>o&&(o=R.width),b+=R.height+i,g.push(p)}),b+=l;let f=[];if(t.classData.methods.forEach(async v=>{let h=v.getDisplayDetails(),W=h.displayText;I().flowchart.htmlLabels&&(W=W.replace(/ /g,">"));let p=m.node().appendChild(await K(W,h.cssStyle?h.cssStyle:t.labelStyle,!0,!0)),R=p.getBBox();if(X(I().flowchart.htmlLabels)){let G=p.children[0],V=N(p);R=G.getBoundingClientRect(),V.attr("width",R.width),V.attr("height",R.height)}R.width>o&&(o=R.width),b+=R.height+i,f.push(p)}),b+=l,L){let v=(o-C.width)/2;N(S).attr("transform","translate( "+(-1*o/2+v)+", "+-1*b/2+")"),y=C.height+i}let k=(o-x.width)/2;return N(D).attr("transform","translate( "+(-1*o/2+k)+", "+(-1*b/2+y)+")"),y+=x.height+i,c.attr("class","divider").attr("x1",-o/2-a).attr("x2",o/2+a).attr("y1",-b/2-a+l+y).attr("y2",-b/2-a+l+y),y+=l,g.forEach(v=>{N(v).attr("transform","translate( "+-o/2+", "+(-1*b/2+y+l/2)+")");let h=v?.getBBox();y+=(h?.height??0)+i}),y+=l,u.attr("class","divider").attr("x1",-o/2-a).attr("x2",o/2+a).attr("y1",-b/2-a+l+y).attr("y2",-b/2-a+l+y),y+=l,f.forEach(v=>{N(v).attr("transform","translate( "+-o/2+", "+(-1*b/2+y)+")");let h=v?.getBBox();y+=(h?.height??0)+i}),n.attr("style",t.style).attr("class","outer title-state").attr("x",-o/2-a).attr("y",-(b/2)-a).attr("width",o+t.padding).attr("height",b+t.padding),B(t,n),t.intersect=function(v){return T.rect(t,v)},r},"class_box"),re={rhombus:te,composite:Ar,question:te,rect:zr,labelRect:Mr,rectWithTitle:Fr,choice:Er,circle:Pr,doublecircle:Yr,stadium:Wr,hexagon:_r,block_arrow:Dr,rect_left_inv_arrow:Nr,lean_right:Tr,lean_left:Br,trapezoid:Cr,inv_trapezoid:Ir,rect_right_inv_arrow:Or,cylinder:Rr,start:Kr,end:Xr,note:vr,subroutine:Hr,fork:ee,join:ee,class_box:Ur},ot={},xe=d(async(e,t,a)=>{let i,l;if(t.link){let s;I().securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s),l=await re[t.shape](i,t,a)}else l=await re[t.shape](e,t,a),i=l;return t.tooltip&&l.attr("title",t.tooltip),t.class&&l.attr("class","node default "+t.class),ot[t.id]=i,t.haveCallback&&ot[t.id].attr("class",ot[t.id].attr("class")+" clickable"),i},"insertNode"),jr=d(e=>{let t=ot[e.id];w.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let a=8,i=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+i-e.width/2)+", "+(e.y-e.height/2-a)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),i},"positionNode");function Tt(e,t,a=!1){let i=e,l="default";(i?.classes?.length||0)>0&&(l=(i?.classes??[]).join(" ")),l=l+" flowchart-label";let s=0,r="",n;switch(i.type){case"round":s=5,r="rect";break;case"composite":s=0,r="composite",n=0;break;case"square":r="rect";break;case"diamond":r="question";break;case"hexagon":r="hexagon";break;case"block_arrow":r="block_arrow";break;case"odd":r="rect_left_inv_arrow";break;case"lean_right":r="lean_right";break;case"lean_left":r="lean_left";break;case"trapezoid":r="trapezoid";break;case"inv_trapezoid":r="inv_trapezoid";break;case"rect_left_inv_arrow":r="rect_left_inv_arrow";break;case"circle":r="circle";break;case"ellipse":r="ellipse";break;case"stadium":r="stadium";break;case"subroutine":r="subroutine";break;case"cylinder":r="cylinder";break;case"group":r="rect";break;case"doublecircle":r="doublecircle";break;default:r="rect"}let c=Kt(i?.styles??[]),u=i.label,o=i.size??{width:0,height:0,x:0,y:0};return{labelStyle:c.labelStyle,shape:r,labelText:u,rx:s,ry:s,class:l,style:c.style,id:i.id,directions:i.directions,width:o.width,height:o.height,x:o.x,y:o.y,positioned:a,intersect:void 0,type:i.type,padding:n??$()?.block?.padding??0}}d(Tt,"getNodeFromBlock");async function ye(e,t,a){let i=Tt(t,a,!1);if(i.type==="group")return;let l=$(),s=await xe(e,i,{config:l}),r=s.node().getBBox(),n=a.getBlock(i.id);n.size={width:r.width,height:r.height,x:0,y:0,node:s},a.setBlock(n),s.remove()}d(ye,"calculateBlockSize");async function me(e,t,a){let i=Tt(t,a,!0);if(a.getBlock(i.id).type!=="space"){let s=$();await xe(e,i,{config:s}),t.intersect=i?.intersect,jr(i)}}d(me,"insertBlockPositioned");async function ut(e,t,a,i){for(let l of t)await i(e,l,a),l.children&&await ut(e,l.children,a,i)}d(ut,"performOperations");async function we(e,t,a){await ut(e,t,a,ye)}d(we,"calculateBlockSizes");async function ke(e,t,a){await ut(e,t,a,me)}d(ke,"insertBlocks");async function Le(e,t,a,i,l){let s=new jt({multigraph:!0,compound:!0});s.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let r of a)r.size&&s.setNode(r.id,{width:r.size.width,height:r.size.height,intersect:r.intersect});for(let r of t)if(r.start&&r.end){let n=i.getBlock(r.start),c=i.getBlock(r.end);if(n?.size&&c?.size){let u=n.size,o=c.size,b=[{x:u.x,y:u.y},{x:u.x+(o.x-u.x)/2,y:u.y+(o.y-u.y)/2},{x:o.x,y:o.y}];pr(e,{v:r.start,w:r.end,name:r.id},{...r,arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:b,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",s,l),r.label&&(await hr(e,{...r,label:r.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:r.arrowTypeEnd,arrowTypeStart:r.arrowTypeStart,points:b,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),dr({...r,x:b[1].x,y:b[1].y},{originalPath:b}))}}}d(Le,"insertEdges");var Vr=d(function(e,t){return t.db.getClasses()},"getClasses"),Zr=d(async function(e,t,a,i){let{securityLevel:l,block:s}=$(),r=i.db,n;l==="sandbox"&&(n=N("#i"+t));let c=l==="sandbox"?N(n.nodes()[0].contentDocument.body):N("body"),u=l==="sandbox"?c.select(`[id="${t}"]`):N(`[id="${t}"]`);ir(u,["point","circle","cross"],i.type,t);let b=r.getBlocks(),m=r.getBlocksFlat(),y=r.getEdges(),L=u.insert("g").attr("class","block");await we(L,b,r);let E=oe(r);if(await ke(L,b,r),await Le(L,y,m,r,t),E){let S=E,C=Math.max(1,Math.round(.125*(S.width/S.height))),_=S.height+C+10,D=S.width+10,{useMaxWidth:x}=s;Mt(u,_,D,!!x),w.debug("Here Bounds",E,S),u.attr("viewBox",`${S.x-5} ${S.y-5} ${S.width+10} ${S.height+10}`)}},"draw"),Gr={draw:Zr,getClasses:Vr},ga={parser:_e,db:Ue,renderer:Gr,styles:Ve};export{ga as diagram};
+//# sourceMappingURL=blockDiagram-VD42YOAC-VWWETFZB.min.js.map
diff --git a/docs/public/blockDiagram-VD42YOAC-VWWETFZB.min.js.map b/docs/public/blockDiagram-VD42YOAC-VWWETFZB.min.js.map
new file mode 100755
index 0000000..974b812
--- /dev/null
+++ b/docs/public/blockDiagram-VD42YOAC-VWWETFZB.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/blockDiagram-VD42YOAC.mjs"],
+ "sourcesContent": ["import {\n getIconStyles\n} from \"./chunk-FMBD7UC4.mjs\";\nimport {\n getLineFunctionsWithOffset\n} from \"./chunk-HN2XXSSU.mjs\";\nimport {\n getSubGraphTitleMargins\n} from \"./chunk-CVBHYZKI.mjs\";\nimport {\n createText,\n replaceIconSubstring\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n decodeEntities,\n getStylesFromArray,\n utils_default\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n clear,\n common_default,\n configureSvgSize,\n evaluate,\n getConfig,\n getConfig2,\n getUrl,\n sanitizeText\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/block/parser/block.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 15], $V1 = [1, 7], $V2 = [1, 13], $V3 = [1, 14], $V4 = [1, 19], $V5 = [1, 16], $V6 = [1, 17], $V7 = [1, 18], $V8 = [8, 30], $V9 = [8, 10, 21, 28, 29, 30, 31, 39, 43, 46], $Va = [1, 23], $Vb = [1, 24], $Vc = [8, 10, 15, 16, 21, 28, 29, 30, 31, 39, 43, 46], $Vd = [8, 10, 15, 16, 21, 27, 28, 29, 30, 31, 39, 43, 46], $Ve = [1, 49];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"spaceLines\": 3, \"SPACELINE\": 4, \"NL\": 5, \"separator\": 6, \"SPACE\": 7, \"EOF\": 8, \"start\": 9, \"BLOCK_DIAGRAM_KEY\": 10, \"document\": 11, \"stop\": 12, \"statement\": 13, \"link\": 14, \"LINK\": 15, \"START_LINK\": 16, \"LINK_LABEL\": 17, \"STR\": 18, \"nodeStatement\": 19, \"columnsStatement\": 20, \"SPACE_BLOCK\": 21, \"blockStatement\": 22, \"classDefStatement\": 23, \"cssClassStatement\": 24, \"styleStatement\": 25, \"node\": 26, \"SIZE\": 27, \"COLUMNS\": 28, \"id-block\": 29, \"end\": 30, \"NODE_ID\": 31, \"nodeShapeNLabel\": 32, \"dirList\": 33, \"DIR\": 34, \"NODE_DSTART\": 35, \"NODE_DEND\": 36, \"BLOCK_ARROW_START\": 37, \"BLOCK_ARROW_END\": 38, \"classDef\": 39, \"CLASSDEF_ID\": 40, \"CLASSDEF_STYLEOPTS\": 41, \"DEFAULT\": 42, \"class\": 43, \"CLASSENTITY_IDS\": 44, \"STYLECLASS\": 45, \"style\": 46, \"STYLE_ENTITY_IDS\": 47, \"STYLE_DEFINITION_DATA\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACELINE\", 5: \"NL\", 7: \"SPACE\", 8: \"EOF\", 10: \"BLOCK_DIAGRAM_KEY\", 15: \"LINK\", 16: \"START_LINK\", 17: \"LINK_LABEL\", 18: \"STR\", 21: \"SPACE_BLOCK\", 27: \"SIZE\", 28: \"COLUMNS\", 29: \"id-block\", 30: \"end\", 31: \"NODE_ID\", 34: \"DIR\", 35: \"NODE_DSTART\", 36: \"NODE_DEND\", 37: \"BLOCK_ARROW_START\", 38: \"BLOCK_ARROW_END\", 39: \"classDef\", 40: \"CLASSDEF_ID\", 41: \"CLASSDEF_STYLEOPTS\", 42: \"DEFAULT\", 43: \"class\", 44: \"CLASSENTITY_IDS\", 45: \"STYLECLASS\", 46: \"style\", 47: \"STYLE_ENTITY_IDS\", 48: \"STYLE_DEFINITION_DATA\" },\n productions_: [0, [3, 1], [3, 2], [3, 2], [6, 1], [6, 1], [6, 1], [9, 3], [12, 1], [12, 1], [12, 2], [12, 2], [11, 1], [11, 2], [14, 1], [14, 4], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [19, 3], [19, 2], [19, 1], [20, 1], [22, 4], [22, 3], [26, 1], [26, 2], [33, 1], [33, 2], [32, 3], [32, 4], [23, 3], [23, 3], [24, 3], [25, 3]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.getLogger().debug(\"Rule: separator (NL) \");\n break;\n case 5:\n yy.getLogger().debug(\"Rule: separator (Space) \");\n break;\n case 6:\n yy.getLogger().debug(\"Rule: separator (EOF) \");\n break;\n case 7:\n yy.getLogger().debug(\"Rule: hierarchy: \", $$[$0 - 1]);\n yy.setHierarchy($$[$0 - 1]);\n break;\n case 8:\n yy.getLogger().debug(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().debug(\"Stop EOF \");\n break;\n case 10:\n yy.getLogger().debug(\"Stop NL2 \");\n break;\n case 11:\n yy.getLogger().debug(\"Stop EOF2 \");\n break;\n case 12:\n yy.getLogger().debug(\"Rule: statement: \", $$[$0]);\n typeof $$[$0].length === \"number\" ? this.$ = $$[$0] : this.$ = [$$[$0]];\n break;\n case 13:\n yy.getLogger().debug(\"Rule: statement #2: \", $$[$0 - 1]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 14:\n yy.getLogger().debug(\"Rule: link: \", $$[$0], yytext);\n this.$ = { edgeTypeStr: $$[$0], label: \"\" };\n break;\n case 15:\n yy.getLogger().debug(\"Rule: LABEL link: \", $$[$0 - 3], $$[$0 - 1], $$[$0]);\n this.$ = { edgeTypeStr: $$[$0], label: $$[$0 - 1] };\n break;\n case 18:\n const num = parseInt($$[$0]);\n const spaceId = yy.generateId();\n this.$ = { id: spaceId, type: \"space\", label: \"\", width: num, children: [] };\n break;\n case 23:\n yy.getLogger().debug(\"Rule: (nodeStatement link node) \", $$[$0 - 2], $$[$0 - 1], $$[$0], \" typestr: \", $$[$0 - 1].edgeTypeStr);\n const edgeData = yy.edgeStrToEdgeData($$[$0 - 1].edgeTypeStr);\n this.$ = [\n { id: $$[$0 - 2].id, label: $$[$0 - 2].label, type: $$[$0 - 2].type, directions: $$[$0 - 2].directions },\n { id: $$[$0 - 2].id + \"-\" + $$[$0].id, start: $$[$0 - 2].id, end: $$[$0].id, label: $$[$0 - 1].label, type: \"edge\", directions: $$[$0].directions, arrowTypeEnd: edgeData, arrowTypeStart: \"arrow_open\" },\n { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions }\n ];\n break;\n case 24:\n yy.getLogger().debug(\"Rule: nodeStatement (abc88 node size) \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1].id, label: $$[$0 - 1].label, type: yy.typeStr2Type($$[$0 - 1].typeStr), directions: $$[$0 - 1].directions, widthInColumns: parseInt($$[$0], 10) };\n break;\n case 25:\n yy.getLogger().debug(\"Rule: nodeStatement (node) \", $$[$0]);\n this.$ = { id: $$[$0].id, label: $$[$0].label, type: yy.typeStr2Type($$[$0].typeStr), directions: $$[$0].directions, widthInColumns: 1 };\n break;\n case 26:\n yy.getLogger().debug(\"APA123\", this ? this : \"na\");\n yy.getLogger().debug(\"COLUMNS: \", $$[$0]);\n this.$ = { type: \"column-setting\", columns: $$[$0] === \"auto\" ? -1 : parseInt($$[$0]) };\n break;\n case 27:\n yy.getLogger().debug(\"Rule: id-block statement : \", $$[$0 - 2], $$[$0 - 1]);\n const id2 = yy.generateId();\n this.$ = { ...$$[$0 - 2], type: \"composite\", children: $$[$0 - 1] };\n break;\n case 28:\n yy.getLogger().debug(\"Rule: blockStatement : \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n const id = yy.generateId();\n this.$ = { id, type: \"composite\", label: \"\", children: $$[$0 - 1] };\n break;\n case 29:\n yy.getLogger().debug(\"Rule: node (NODE_ID separator): \", $$[$0]);\n this.$ = { id: $$[$0] };\n break;\n case 30:\n yy.getLogger().debug(\"Rule: node (NODE_ID nodeShapeNLabel separator): \", $$[$0 - 1], $$[$0]);\n this.$ = { id: $$[$0 - 1], label: $$[$0].label, typeStr: $$[$0].typeStr, directions: $$[$0].directions };\n break;\n case 31:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0]);\n this.$ = [$$[$0]];\n break;\n case 32:\n yy.getLogger().debug(\"Rule: dirList: \", $$[$0 - 1], $$[$0]);\n this.$ = [$$[$0 - 1]].concat($$[$0]);\n break;\n case 33:\n yy.getLogger().debug(\"Rule: nodeShapeNLabel: \", $$[$0 - 2], $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 2] + $$[$0], label: $$[$0 - 1] };\n break;\n case 34:\n yy.getLogger().debug(\"Rule: BLOCK_ARROW nodeShapeNLabel: \", $$[$0 - 3], $$[$0 - 2], \" #3:\", $$[$0 - 1], $$[$0]);\n this.$ = { typeStr: $$[$0 - 3] + $$[$0], label: $$[$0 - 2], directions: $$[$0 - 1] };\n break;\n case 35:\n case 36:\n this.$ = { type: \"classDef\", id: $$[$0 - 1].trim(), css: $$[$0].trim() };\n break;\n case 37:\n this.$ = { type: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n this.$ = { type: \"applyStyles\", id: $$[$0 - 1].trim(), stylesStr: $$[$0].trim() };\n break;\n }\n }, \"anonymous\"),\n table: [{ 9: 1, 10: [1, 2] }, { 1: [3] }, { 10: $V0, 11: 3, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 8: [1, 20] }, o($V8, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 10: $V0, 21: $V1, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }), o($V9, [2, 16], { 14: 22, 15: $Va, 16: $Vb }), o($V9, [2, 17]), o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), o($V9, [2, 21]), o($V9, [2, 22]), o($Vc, [2, 25], { 27: [1, 25] }), o($V9, [2, 26]), { 19: 26, 26: 12, 31: $V4 }, { 10: $V0, 11: 27, 13: 4, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 40: [1, 28], 42: [1, 29] }, { 44: [1, 30] }, { 47: [1, 31] }, o($Vd, [2, 29], { 32: 32, 35: [1, 33], 37: [1, 34] }), { 1: [2, 7] }, o($V8, [2, 13]), { 26: 35, 31: $V4 }, { 31: [2, 14] }, { 17: [1, 36] }, o($Vc, [2, 24]), { 10: $V0, 11: 37, 13: 4, 14: 22, 15: $Va, 16: $Vb, 19: 5, 20: 6, 21: $V1, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: $V2, 29: $V3, 31: $V4, 39: $V5, 43: $V6, 46: $V7 }, { 30: [1, 38] }, { 41: [1, 39] }, { 41: [1, 40] }, { 45: [1, 41] }, { 48: [1, 42] }, o($Vd, [2, 30]), { 18: [1, 43] }, { 18: [1, 44] }, o($Vc, [2, 23]), { 18: [1, 45] }, { 30: [1, 46] }, o($V9, [2, 28]), o($V9, [2, 35]), o($V9, [2, 36]), o($V9, [2, 37]), o($V9, [2, 38]), { 36: [1, 47] }, { 33: 48, 34: $Ve }, { 15: [1, 50] }, o($V9, [2, 27]), o($Vd, [2, 33]), { 38: [1, 51] }, { 33: 52, 34: $Ve, 38: [2, 31] }, { 31: [2, 15] }, o($Vd, [2, 34]), { 38: [2, 32] }],\n defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: {},\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().debug(\"Found block-beta\");\n return 10;\n break;\n case 1:\n yy.getLogger().debug(\"Found id-block\");\n return 29;\n break;\n case 2:\n yy.getLogger().debug(\"Found block\");\n return 10;\n break;\n case 3:\n yy.getLogger().debug(\".\", yy_.yytext);\n break;\n case 4:\n yy.getLogger().debug(\"_\", yy_.yytext);\n break;\n case 5:\n return 5;\n break;\n case 6:\n yy_.yytext = -1;\n return 28;\n break;\n case 7:\n yy_.yytext = yy_.yytext.replace(/columns\\s+/, \"\");\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 28;\n break;\n case 8:\n this.pushState(\"md_string\");\n break;\n case 9:\n return \"MD_STR\";\n break;\n case 10:\n this.popState();\n break;\n case 11:\n this.pushState(\"string\");\n break;\n case 12:\n yy.getLogger().debug(\"LEX: POPPING STR:\", yy_.yytext);\n this.popState();\n break;\n case 13:\n yy.getLogger().debug(\"LEX: STR end:\", yy_.yytext);\n return \"STR\";\n break;\n case 14:\n yy_.yytext = yy_.yytext.replace(/space\\:/, \"\");\n yy.getLogger().debug(\"SPACE NUM (LEX)\", yy_.yytext);\n return 21;\n break;\n case 15:\n yy_.yytext = \"1\";\n yy.getLogger().debug(\"COLUMNS (LEX)\", yy_.yytext);\n return 21;\n break;\n case 16:\n return 42;\n break;\n case 17:\n return \"LINKSTYLE\";\n break;\n case 18:\n return \"INTERPOLATE\";\n break;\n case 19:\n this.pushState(\"CLASSDEF\");\n return 39;\n break;\n case 20:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 21:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 40;\n break;\n case 22:\n this.popState();\n return 41;\n break;\n case 23:\n this.pushState(\"CLASS\");\n return 43;\n break;\n case 24:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 44;\n break;\n case 25:\n this.popState();\n return 45;\n break;\n case 26:\n this.pushState(\"STYLE_STMNT\");\n return 46;\n break;\n case 27:\n this.popState();\n this.pushState(\"STYLE_DEFINITION\");\n return 47;\n break;\n case 28:\n this.popState();\n return 48;\n break;\n case 29:\n this.pushState(\"acc_title\");\n return \"acc_title\";\n break;\n case 30:\n this.popState();\n return \"acc_title_value\";\n break;\n case 31:\n this.pushState(\"acc_descr\");\n return \"acc_descr\";\n break;\n case 32:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 33:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return \"acc_descr_multiline_value\";\n break;\n case 36:\n return 30;\n break;\n case 37:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 38:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 39:\n this.popState();\n yy.getLogger().debug(\"Lex: ))\");\n return \"NODE_DEND\";\n break;\n case 40:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 41:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 42:\n this.popState();\n yy.getLogger().debug(\"Lex: (-\");\n return \"NODE_DEND\";\n break;\n case 43:\n this.popState();\n yy.getLogger().debug(\"Lex: -)\");\n return \"NODE_DEND\";\n break;\n case 44:\n this.popState();\n yy.getLogger().debug(\"Lex: ((\");\n return \"NODE_DEND\";\n break;\n case 45:\n this.popState();\n yy.getLogger().debug(\"Lex: ]]\");\n return \"NODE_DEND\";\n break;\n case 46:\n this.popState();\n yy.getLogger().debug(\"Lex: (\");\n return \"NODE_DEND\";\n break;\n case 47:\n this.popState();\n yy.getLogger().debug(\"Lex: ])\");\n return \"NODE_DEND\";\n break;\n case 48:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 49:\n this.popState();\n yy.getLogger().debug(\"Lex: /]\");\n return \"NODE_DEND\";\n break;\n case 50:\n this.popState();\n yy.getLogger().debug(\"Lex: )]\");\n return \"NODE_DEND\";\n break;\n case 51:\n this.popState();\n yy.getLogger().debug(\"Lex: )\");\n return \"NODE_DEND\";\n break;\n case 52:\n this.popState();\n yy.getLogger().debug(\"Lex: ]>\");\n return \"NODE_DEND\";\n break;\n case 53:\n this.popState();\n yy.getLogger().debug(\"Lex: ]\");\n return \"NODE_DEND\";\n break;\n case 54:\n yy.getLogger().debug(\"Lexa: -)\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 55:\n yy.getLogger().debug(\"Lexa: (-\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 56:\n yy.getLogger().debug(\"Lexa: ))\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 57:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 58:\n yy.getLogger().debug(\"Lex: (((\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 59:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 60:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 61:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 62:\n yy.getLogger().debug(\"Lexc: >\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 63:\n yy.getLogger().debug(\"Lexa: ([\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 64:\n yy.getLogger().debug(\"Lexa: )\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 65:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 66:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 67:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 68:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 69:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 70:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 71:\n this.pushState(\"NODE\");\n return 35;\n break;\n case 72:\n yy.getLogger().debug(\"Lexa: [\");\n this.pushState(\"NODE\");\n return 35;\n break;\n case 73:\n this.pushState(\"BLOCK_ARROW\");\n yy.getLogger().debug(\"LEX ARR START\");\n return 37;\n break;\n case 74:\n yy.getLogger().debug(\"Lex: NODE_ID\", yy_.yytext);\n return 31;\n break;\n case 75:\n yy.getLogger().debug(\"Lex: EOF\", yy_.yytext);\n return 8;\n break;\n case 76:\n this.pushState(\"md_string\");\n break;\n case 77:\n this.pushState(\"md_string\");\n break;\n case 78:\n return \"NODE_DESCR\";\n break;\n case 79:\n this.popState();\n break;\n case 80:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n break;\n case 81:\n yy.getLogger().debug(\"LEX ARR: Starting string\");\n this.pushState(\"string\");\n break;\n case 82:\n yy.getLogger().debug(\"LEX: NODE_DESCR:\", yy_.yytext);\n return \"NODE_DESCR\";\n break;\n case 83:\n yy.getLogger().debug(\"LEX POPPING\");\n this.popState();\n break;\n case 84:\n yy.getLogger().debug(\"Lex: =>BAE\");\n this.pushState(\"ARROW_DIR\");\n break;\n case 85:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (right): dir:\", yy_.yytext);\n return \"DIR\";\n break;\n case 86:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (left):\", yy_.yytext);\n return \"DIR\";\n break;\n case 87:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (x):\", yy_.yytext);\n return \"DIR\";\n break;\n case 88:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (y):\", yy_.yytext);\n return \"DIR\";\n break;\n case 89:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (up):\", yy_.yytext);\n return \"DIR\";\n break;\n case 90:\n yy_.yytext = yy_.yytext.replace(/^,\\s*/, \"\");\n yy.getLogger().debug(\"Lex (down):\", yy_.yytext);\n return \"DIR\";\n break;\n case 91:\n yy_.yytext = \"]>\";\n yy.getLogger().debug(\"Lex (ARROW_DIR end):\", yy_.yytext);\n this.popState();\n this.popState();\n return \"BLOCK_ARROW_END\";\n break;\n case 92:\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 93:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 94:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 95:\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 96:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 97:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 98:\n yy.getLogger().debug(\"Lex: START_LINK\", yy_.yytext);\n this.pushState(\"LLABEL\");\n return 16;\n break;\n case 99:\n this.pushState(\"md_string\");\n break;\n case 100:\n yy.getLogger().debug(\"Lex: Starting string\");\n this.pushState(\"string\");\n return \"LINK_LABEL\";\n break;\n case 101:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", \"#\" + yy_.yytext + \"#\");\n return 15;\n break;\n case 102:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 103:\n this.popState();\n yy.getLogger().debug(\"Lex: LINK\", yy_.yytext);\n return 15;\n break;\n case 104:\n yy.getLogger().debug(\"Lex: COLON\", yy_.yytext);\n yy_.yytext = yy_.yytext.slice(1);\n return 27;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:block-beta\\b)/, /^(?:block:)/, /^(?:block\\b)/, /^(?:[\\s]+)/, /^(?:[\\n]+)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:columns\\s+auto\\b)/, /^(?:columns\\s+[\\d]+)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:space[:]\\d+)/, /^(?:space\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\s+)/, /^(?:DEFAULT\\s+)/, /^(?:\\w+\\s+)/, /^(?:[^\\n]*)/, /^(?:class\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:style\\s+)/, /^(?:(\\w+)+((,\\s*\\w+)*))/, /^(?:[^\\n]*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:end\\b\\s*)/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:[\\)]\\))/, /^(?:\\}\\})/, /^(?:\\})/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\()/, /^(?:\\]\\])/, /^(?:\\()/, /^(?:\\]\\))/, /^(?:\\\\\\])/, /^(?:\\/\\])/, /^(?:\\)\\])/, /^(?:[\\)])/, /^(?:\\]>)/, /^(?:[\\]])/, /^(?:-\\))/, /^(?:\\(-)/, /^(?:\\)\\))/, /^(?:\\))/, /^(?:\\(\\(\\()/, /^(?:\\(\\()/, /^(?:\\{\\{)/, /^(?:\\{)/, /^(?:>)/, /^(?:\\(\\[)/, /^(?:\\()/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\[\\\\)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:\\[)/, /^(?:<\\[)/, /^(?:[^\\(\\[\\n\\-\\)\\{\\}\\s\\<\\>:]+)/, /^(?:$)/, /^(?:[\"][`])/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:\\]>\\s*\\()/, /^(?:,?\\s*right\\s*)/, /^(?:,?\\s*left\\s*)/, /^(?:,?\\s*x\\s*)/, /^(?:,?\\s*y\\s*)/, /^(?:,?\\s*up\\s*)/, /^(?:,?\\s*down\\s*)/, /^(?:\\)\\s*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[\"][`])/, /^(?:[\"])/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?::\\d+)/],\n conditions: { \"STYLE_DEFINITION\": { \"rules\": [28], \"inclusive\": false }, \"STYLE_STMNT\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [22], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [20, 21], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [25], \"inclusive\": false }, \"CLASS\": { \"rules\": [24], \"inclusive\": false }, \"LLABEL\": { \"rules\": [99, 100, 101, 102, 103], \"inclusive\": false }, \"ARROW_DIR\": { \"rules\": [85, 86, 87, 88, 89, 90, 91], \"inclusive\": false }, \"BLOCK_ARROW\": { \"rules\": [76, 81, 84], \"inclusive\": false }, \"NODE\": { \"rules\": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 77, 80], \"inclusive\": false }, \"md_string\": { \"rules\": [9, 10, 78, 79], \"inclusive\": false }, \"space\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [12, 13, 82, 83], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [34, 35], \"inclusive\": false }, \"acc_descr\": { \"rules\": [32], \"inclusive\": false }, \"acc_title\": { \"rules\": [30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 14, 15, 16, 17, 18, 19, 23, 26, 29, 31, 33, 36, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 92, 93, 94, 95, 96, 97, 98, 104], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar block_default = parser;\n\n// src/diagrams/block/blockDB.ts\nimport clone from \"lodash-es/clone.js\";\nvar blockDatabase = /* @__PURE__ */ new Map();\nvar edgeList = [];\nvar edgeCount = /* @__PURE__ */ new Map();\nvar COLOR_KEYWORD = \"color\";\nvar FILL_KEYWORD = \"fill\";\nvar BG_FILL = \"bgFill\";\nvar STYLECLASS_SEP = \",\";\nvar config = getConfig2();\nvar classes = /* @__PURE__ */ new Map();\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => common_default.sanitizeText(txt, config), \"sanitizeText\");\nvar addStyleClass = /* @__PURE__ */ __name(function(id, styleAttributes = \"\") {\n let foundClass = classes.get(id);\n if (!foundClass) {\n foundClass = { id, styles: [], textStyles: [] };\n classes.set(id, foundClass);\n }\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n}, \"addStyleClass\");\nvar addStyle2Node = /* @__PURE__ */ __name(function(id, styles = \"\") {\n const foundBlock = blockDatabase.get(id);\n if (styles !== void 0 && styles !== null) {\n foundBlock.styles = styles.split(STYLECLASS_SEP);\n }\n}, \"addStyle2Node\");\nvar setCssClass = /* @__PURE__ */ __name(function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundBlock = blockDatabase.get(id);\n if (foundBlock === void 0) {\n const trimmedId = id.trim();\n foundBlock = { id: trimmedId, type: \"na\", children: [] };\n blockDatabase.set(trimmedId, foundBlock);\n }\n if (!foundBlock.classes) {\n foundBlock.classes = [];\n }\n foundBlock.classes.push(cssClassName);\n });\n}, \"setCssClass\");\nvar populateBlockDatabase = /* @__PURE__ */ __name((_blockList, parent) => {\n const blockList = _blockList.flat();\n const children = [];\n const columnSettingBlock = blockList.find((b) => b?.type === \"column-setting\");\n const column = columnSettingBlock?.columns ?? -1;\n for (const block of blockList) {\n if (typeof column === \"number\" && column > 0 && block.type !== \"column-setting\" && typeof block.widthInColumns === \"number\" && block.widthInColumns > column) {\n log.warn(\n `Block ${block.id} width ${block.widthInColumns} exceeds configured column width ${column}`\n );\n }\n if (block.label) {\n block.label = sanitizeText2(block.label);\n }\n if (block.type === \"classDef\") {\n addStyleClass(block.id, block.css);\n continue;\n }\n if (block.type === \"applyClass\") {\n setCssClass(block.id, block?.styleClass ?? \"\");\n continue;\n }\n if (block.type === \"applyStyles\") {\n if (block?.stylesStr) {\n addStyle2Node(block.id, block?.stylesStr);\n }\n continue;\n }\n if (block.type === \"column-setting\") {\n parent.columns = block.columns ?? -1;\n } else if (block.type === \"edge\") {\n const count = (edgeCount.get(block.id) ?? 0) + 1;\n edgeCount.set(block.id, count);\n block.id = count + \"-\" + block.id;\n edgeList.push(block);\n } else {\n if (!block.label) {\n if (block.type === \"composite\") {\n block.label = \"\";\n } else {\n block.label = block.id;\n }\n }\n const existingBlock = blockDatabase.get(block.id);\n if (existingBlock === void 0) {\n blockDatabase.set(block.id, block);\n } else {\n if (block.type !== \"na\") {\n existingBlock.type = block.type;\n }\n if (block.label !== block.id) {\n existingBlock.label = block.label;\n }\n }\n if (block.children) {\n populateBlockDatabase(block.children, block);\n }\n if (block.type === \"space\") {\n const w = block.width ?? 1;\n for (let j = 0; j < w; j++) {\n const newBlock = clone(block);\n newBlock.id = newBlock.id + \"-\" + j;\n blockDatabase.set(newBlock.id, newBlock);\n children.push(newBlock);\n }\n } else if (existingBlock === void 0) {\n children.push(block);\n }\n }\n }\n parent.children = children;\n}, \"populateBlockDatabase\");\nvar blocks = [];\nvar rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\nvar clear2 = /* @__PURE__ */ __name(() => {\n log.debug(\"Clear called\");\n clear();\n rootBlock = { id: \"root\", type: \"composite\", children: [], columns: -1 };\n blockDatabase = /* @__PURE__ */ new Map([[\"root\", rootBlock]]);\n blocks = [];\n classes = /* @__PURE__ */ new Map();\n edgeList = [];\n edgeCount = /* @__PURE__ */ new Map();\n}, \"clear\");\nfunction typeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"[]\":\n return \"square\";\n case \"()\":\n log.debug(\"we have a round\");\n return \"round\";\n case \"(())\":\n return \"circle\";\n case \">]\":\n return \"rect_left_inv_arrow\";\n case \"{}\":\n return \"diamond\";\n case \"{{}}\":\n return \"hexagon\";\n case \"([])\":\n return \"stadium\";\n case \"[[]]\":\n return \"subroutine\";\n case \"[()]\":\n return \"cylinder\";\n case \"((()))\":\n return \"doublecircle\";\n case \"[//]\":\n return \"lean_right\";\n case \"[\\\\\\\\]\":\n return \"lean_left\";\n case \"[/\\\\]\":\n return \"trapezoid\";\n case \"[\\\\/]\":\n return \"inv_trapezoid\";\n case \"<[]>\":\n return \"block_arrow\";\n default:\n return \"na\";\n }\n}\n__name(typeStr2Type, \"typeStr2Type\");\nfunction edgeTypeStr2Type(typeStr) {\n log.debug(\"typeStr2Type\", typeStr);\n switch (typeStr) {\n case \"==\":\n return \"thick\";\n default:\n return \"normal\";\n }\n}\n__name(edgeTypeStr2Type, \"edgeTypeStr2Type\");\nfunction edgeStrToEdgeData(typeStr) {\n switch (typeStr.replace(/^[\\s-]+|[\\s-]+$/g, \"\")) {\n case \"x\":\n return \"arrow_cross\";\n case \"o\":\n return \"arrow_circle\";\n case \">\":\n return \"arrow_point\";\n default:\n return \"\";\n }\n}\n__name(edgeStrToEdgeData, \"edgeStrToEdgeData\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nvar setHierarchy = /* @__PURE__ */ __name((block) => {\n rootBlock.children = block;\n populateBlockDatabase(block, rootBlock);\n blocks = rootBlock.children;\n}, \"setHierarchy\");\nvar getColumns = /* @__PURE__ */ __name((blockId) => {\n const block = blockDatabase.get(blockId);\n if (!block) {\n return -1;\n }\n if (block.columns) {\n return block.columns;\n }\n if (!block.children) {\n return -1;\n }\n return block.children.length;\n}, \"getColumns\");\nvar getBlocksFlat = /* @__PURE__ */ __name(() => {\n return [...blockDatabase.values()];\n}, \"getBlocksFlat\");\nvar getBlocks = /* @__PURE__ */ __name(() => {\n return blocks || [];\n}, \"getBlocks\");\nvar getEdges = /* @__PURE__ */ __name(() => {\n return edgeList;\n}, \"getEdges\");\nvar getBlock = /* @__PURE__ */ __name((id) => {\n return blockDatabase.get(id);\n}, \"getBlock\");\nvar setBlock = /* @__PURE__ */ __name((block) => {\n blockDatabase.set(block.id, block);\n}, \"setBlock\");\nvar getLogger = /* @__PURE__ */ __name(() => log, \"getLogger\");\nvar getClasses = /* @__PURE__ */ __name(function() {\n return classes;\n}, \"getClasses\");\nvar db = {\n getConfig: /* @__PURE__ */ __name(() => getConfig().block, \"getConfig\"),\n typeStr2Type,\n edgeTypeStr2Type,\n edgeStrToEdgeData,\n getLogger,\n getBlocksFlat,\n getBlocks,\n getEdges,\n setHierarchy,\n getBlock,\n setBlock,\n getColumns,\n getClasses,\n clear: clear2,\n generateId\n};\nvar blockDB_default = db;\n\n// src/diagrams/block/styles.ts\nimport * as khroma from \"khroma\";\nvar fade = /* @__PURE__ */ __name((color, opacity) => {\n const channel2 = khroma.channel;\n const r = channel2(color, \"r\");\n const g = channel2(color, \"g\");\n const b = channel2(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n}, \"fade\");\nvar getStyles = /* @__PURE__ */ __name((options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${fade(options.mainBkg, 0.5)};\n fill: ${fade(options.clusterBkg, 0.5)};\n stroke: ${fade(options.clusterBorder, 0.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n ${getIconStyles()}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/block/blockRenderer.ts\nimport { select as d3select } from \"d3\";\n\n// src/dagre-wrapper/markers.js\nvar insertMarkers = /* @__PURE__ */ __name((elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n}, \"insertMarkers\");\nvar extension = /* @__PURE__ */ __name((elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n}, \"extension\");\nvar composition = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"composition\");\nvar aggregation = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n}, \"aggregation\");\nvar dependency = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 6).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n}, \"dependency\");\nvar lollipop = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 13).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 1).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"transparent\").attr(\"cx\", 7).attr(\"cy\", 7).attr(\"r\", 6);\n}, \"lollipop\");\nvar point = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 6).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 4.5).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"point\");\nvar circle = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n}, \"circle\");\nvar cross = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n}, \"cross\");\nvar barb = /* @__PURE__ */ __name((elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n}, \"barb\");\nvar markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle,\n cross,\n barb\n};\nvar markers_default = insertMarkers;\n\n// src/diagrams/block/layout.ts\nvar padding = getConfig2()?.block?.padding ?? 8;\nfunction calculateBlockPosition(columns, position) {\n if (columns === 0 || !Number.isInteger(columns)) {\n throw new Error(\"Columns must be an integer !== 0.\");\n }\n if (position < 0 || !Number.isInteger(position)) {\n throw new Error(\"Position must be a non-negative integer.\" + position);\n }\n if (columns < 0) {\n return { px: position, py: 0 };\n }\n if (columns === 1) {\n return { px: 0, py: position };\n }\n const px = position % columns;\n const py = Math.floor(position / columns);\n return { px, py };\n}\n__name(calculateBlockPosition, \"calculateBlockPosition\");\nvar getMaxChildSize = /* @__PURE__ */ __name((block) => {\n let maxWidth = 0;\n let maxHeight = 0;\n for (const child of block.children) {\n const { width, height, x, y } = child.size ?? { width: 0, height: 0, x: 0, y: 0 };\n log.debug(\n \"getMaxChildSize abc95 child:\",\n child.id,\n \"width:\",\n width,\n \"height:\",\n height,\n \"x:\",\n x,\n \"y:\",\n y,\n child.type\n );\n if (child.type === \"space\") {\n continue;\n }\n if (width > maxWidth) {\n maxWidth = width / (block.widthInColumns ?? 1);\n }\n if (height > maxHeight) {\n maxHeight = height;\n }\n }\n return { width: maxWidth, height: maxHeight };\n}, \"getMaxChildSize\");\nfunction setBlockSizes(block, db2, siblingWidth = 0, siblingHeight = 0) {\n log.debug(\n \"setBlockSizes abc95 (start)\",\n block.id,\n block?.size?.x,\n \"block width =\",\n block?.size,\n \"siblingWidth\",\n siblingWidth\n );\n if (!block?.size?.width) {\n block.size = {\n width: siblingWidth,\n height: siblingHeight,\n x: 0,\n y: 0\n };\n }\n let maxWidth = 0;\n let maxHeight = 0;\n if (block.children?.length > 0) {\n for (const child of block.children) {\n setBlockSizes(child, db2);\n }\n const childSize = getMaxChildSize(block);\n maxWidth = childSize.width;\n maxHeight = childSize.height;\n log.debug(\"setBlockSizes abc95 maxWidth of\", block.id, \":s children is \", maxWidth, maxHeight);\n for (const child of block.children) {\n if (child.size) {\n log.debug(\n `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}`\n );\n child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1);\n child.size.height = maxHeight;\n child.size.x = 0;\n child.size.y = 0;\n log.debug(\n `abc95 updating size of ${block.id} children child:${child.id} maxWidth:${maxWidth} maxHeight:${maxHeight}`\n );\n }\n }\n for (const child of block.children) {\n setBlockSizes(child, db2, maxWidth, maxHeight);\n }\n const columns = block.columns ?? -1;\n let numItems = 0;\n for (const child of block.children) {\n numItems += child.widthInColumns ?? 1;\n }\n let xSize = block.children.length;\n if (columns > 0 && columns < numItems) {\n xSize = columns;\n }\n const ySize = Math.ceil(numItems / xSize);\n let width = xSize * (maxWidth + padding) + padding;\n let height = ySize * (maxHeight + padding) + padding;\n if (width < siblingWidth) {\n log.debug(\n `Detected to small sibling: abc95 ${block.id} siblingWidth ${siblingWidth} siblingHeight ${siblingHeight} width ${width}`\n );\n width = siblingWidth;\n height = siblingHeight;\n const childWidth = (siblingWidth - xSize * padding - padding) / xSize;\n const childHeight = (siblingHeight - ySize * padding - padding) / ySize;\n log.debug(\"Size indata abc88\", block.id, \"childWidth\", childWidth, \"maxWidth\", maxWidth);\n log.debug(\"Size indata abc88\", block.id, \"childHeight\", childHeight, \"maxHeight\", maxHeight);\n log.debug(\"Size indata abc88 xSize\", xSize, \"padding\", padding);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n child.size.height = childHeight;\n child.size.x = 0;\n child.size.y = 0;\n }\n }\n }\n log.debug(\n `abc95 (finale calc) ${block.id} xSize ${xSize} ySize ${ySize} columns ${columns}${block.children.length} width=${Math.max(width, block.size?.width || 0)}`\n );\n if (width < (block?.size?.width || 0)) {\n width = block?.size?.width || 0;\n const num = columns > 0 ? Math.min(block.children.length, columns) : block.children.length;\n if (num > 0) {\n const childWidth = (width - num * padding - padding) / num;\n log.debug(\"abc95 (growing to fit) width\", block.id, width, block.size?.width, childWidth);\n for (const child of block.children) {\n if (child.size) {\n child.size.width = childWidth;\n }\n }\n }\n }\n block.size = {\n width,\n height,\n x: 0,\n y: 0\n };\n }\n log.debug(\n \"setBlockSizes abc94 (done)\",\n block.id,\n block?.size?.x,\n block?.size?.width,\n block?.size?.y,\n block?.size?.height\n );\n}\n__name(setBlockSizes, \"setBlockSizes\");\nfunction layoutBlocks(block, db2) {\n log.debug(\n `abc85 layout blocks (=>layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n const columns = block.columns ?? -1;\n log.debug(\"layoutBlocks columns abc95\", block.id, \"=>\", columns, block);\n if (block.children && // find max width of children\n block.children.length > 0) {\n const width = block?.children[0]?.size?.width ?? 0;\n const widthOfChildren = block.children.length * width + (block.children.length - 1) * padding;\n log.debug(\"widthOfChildren 88\", widthOfChildren, \"posX\");\n let columnPos = 0;\n log.debug(\"abc91 block?.size?.x\", block.id, block?.size?.x);\n let startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n let rowPos = 0;\n for (const child of block.children) {\n const parent = block;\n if (!child.size) {\n continue;\n }\n const { width: width2, height } = child.size;\n const { px, py } = calculateBlockPosition(columns, columnPos);\n if (py != rowPos) {\n rowPos = py;\n startingPosX = block?.size?.x ? block?.size?.x + (-block?.size?.width / 2 || 0) : -padding;\n log.debug(\"New row in layout for block\", block.id, \" and child \", child.id, rowPos);\n }\n log.debug(\n `abc89 layout blocks (child) id: ${child.id} Pos: ${columnPos} (px, py) ${px},${py} (${parent?.size?.x},${parent?.size?.y}) parent: ${parent.id} width: ${width2}${padding}`\n );\n if (parent.size) {\n const halfWidth = width2 / 2;\n child.size.x = startingPosX + padding + halfWidth;\n log.debug(\n `abc91 layout blocks (calc) px, pyid:${child.id} startingPos=X${startingPosX} new startingPosX${child.size.x} ${halfWidth} padding=${padding} width=${width2} halfWidth=${halfWidth} => x:${child.size.x} y:${child.size.y} ${child.widthInColumns} (width * (child?.w || 1)) / 2 ${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n startingPosX = child.size.x + halfWidth;\n child.size.y = parent.size.y - parent.size.height / 2 + py * (height + padding) + height / 2 + padding;\n log.debug(\n `abc88 layout blocks (calc) px, pyid:${child.id}startingPosX${startingPosX}${padding}${halfWidth}=>x:${child.size.x}y:${child.size.y}${child.widthInColumns}(width * (child?.w || 1)) / 2${width2 * (child?.widthInColumns ?? 1) / 2}`\n );\n }\n if (child.children) {\n layoutBlocks(child, db2);\n }\n let columnsFilled = child?.widthInColumns ?? 1;\n if (columns > 0) {\n columnsFilled = Math.min(columnsFilled, columns - columnPos % columns);\n }\n columnPos += columnsFilled;\n log.debug(\"abc88 columnsPos\", child, columnPos);\n }\n }\n log.debug(\n `layout blocks (<==layoutBlocks) ${block.id} x: ${block?.size?.x} y: ${block?.size?.y} width: ${block?.size?.width}`\n );\n}\n__name(layoutBlocks, \"layoutBlocks\");\nfunction findBounds(block, { minX, minY, maxX, maxY } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {\n if (block.size && block.id !== \"root\") {\n const { x, y, width, height } = block.size;\n if (x - width / 2 < minX) {\n minX = x - width / 2;\n }\n if (y - height / 2 < minY) {\n minY = y - height / 2;\n }\n if (x + width / 2 > maxX) {\n maxX = x + width / 2;\n }\n if (y + height / 2 > maxY) {\n maxY = y + height / 2;\n }\n }\n if (block.children) {\n for (const child of block.children) {\n ({ minX, minY, maxX, maxY } = findBounds(child, { minX, minY, maxX, maxY }));\n }\n }\n return { minX, minY, maxX, maxY };\n}\n__name(findBounds, \"findBounds\");\nfunction layout(db2) {\n const root = db2.getBlock(\"root\");\n if (!root) {\n return;\n }\n setBlockSizes(root, db2, 0, 0);\n layoutBlocks(root, db2);\n log.debug(\"getBlocks\", JSON.stringify(root, null, 2));\n const { minX, minY, maxX, maxY } = findBounds(root);\n const height = maxY - minY;\n const width = maxX - minX;\n return { x: minX, y: minY, width, height };\n}\n__name(layout, \"layout\");\n\n// src/diagrams/block/renderHelpers.ts\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\n\n// src/dagre-wrapper/createLabel.js\nimport { select } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nfunction addHtmlLabel(node, config2) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const span = div.append(\"span\");\n span.html(sanitizeText(label, config2));\n applyStyle(span, node.labelStyle);\n span.attr(\"class\", labelClass);\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n const config2 = getConfig2();\n if (evaluate(config2.flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \" \");\n log.debug(\"vertexText\" + vertexText);\n const label = await replaceIconSubstring(decodeEntities(vertexText));\n const node = {\n isNode,\n label,\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node, config2);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n| /gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select as select2 } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name(async (elem, edge) => {\n const config2 = getConfig2();\n const useHtmlLabels = evaluate(config2.flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n },\n config2\n ) : await createLabel_default(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select2(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = await createLabel_default(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = await createLabel_default(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = await createLabel_default(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = await createLabel_default(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getConfig2().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig2();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = getUrl(true);\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select4 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding2 = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding2, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding2 },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding2, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding2 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n // top left corner of arrow\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n // Two points, the right corners\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select3 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || evaluate(config2.flowchart.htmlLabels);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n {\n useHtmlLabels,\n width: node.width || config2.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config2\n );\n } else {\n text = textNode.appendChild(\n await createLabel_default(\n sanitizeText(decodeEntities(labelText), config2),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(config2.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select3(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/ ]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config2.fontSize ? config2.fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig2().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select4(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\" \") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name(async (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(await createLabel_default(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select4(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig2().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(await createLabel_default(classTitleString, node.labelStyle, true, true));\n select4(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select4(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig2().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/ /g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n await createLabel_default(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select4(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach(async (member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig2().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n await createLabel_default(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select4(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select4(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select4(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select4(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select4(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl?.getBBox();\n verticalPos += (memberBBox?.height ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"class_box\");\nvar shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle: circle2,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note_default,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nvar nodeElems = {};\nvar insertNode = /* @__PURE__ */ __name(async (elem, node, renderOptions) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig2().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, renderOptions);\n } else {\n el = await shapes[node.shape](elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n}, \"insertNode\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding2 = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding2) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\n// src/diagrams/block/renderHelpers.ts\nfunction getNodeFromBlock(block, db2, positioned = false) {\n const vertex = block;\n let classStr = \"default\";\n if ((vertex?.classes?.length || 0) > 0) {\n classStr = (vertex?.classes ?? []).join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n let radius = 0;\n let shape = \"\";\n let padding2;\n switch (vertex.type) {\n case \"round\":\n radius = 5;\n shape = \"rect\";\n break;\n case \"composite\":\n radius = 0;\n shape = \"composite\";\n padding2 = 0;\n break;\n case \"square\":\n shape = \"rect\";\n break;\n case \"diamond\":\n shape = \"question\";\n break;\n case \"hexagon\":\n shape = \"hexagon\";\n break;\n case \"block_arrow\":\n shape = \"block_arrow\";\n break;\n case \"odd\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n shape = \"lean_right\";\n break;\n case \"lean_left\":\n shape = \"lean_left\";\n break;\n case \"trapezoid\":\n shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n shape = \"inv_trapezoid\";\n break;\n case \"rect_left_inv_arrow\":\n shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n shape = \"circle\";\n break;\n case \"ellipse\":\n shape = \"ellipse\";\n break;\n case \"stadium\":\n shape = \"stadium\";\n break;\n case \"subroutine\":\n shape = \"subroutine\";\n break;\n case \"cylinder\":\n shape = \"cylinder\";\n break;\n case \"group\":\n shape = \"rect\";\n break;\n case \"doublecircle\":\n shape = \"doublecircle\";\n break;\n default:\n shape = \"rect\";\n }\n const styles = getStylesFromArray(vertex?.styles ?? []);\n const vertexText = vertex.label;\n const bounds = vertex.size ?? { width: 0, height: 0, x: 0, y: 0 };\n const node = {\n labelStyle: styles.labelStyle,\n shape,\n labelText: vertexText,\n rx: radius,\n ry: radius,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n directions: vertex.directions,\n width: bounds.width,\n height: bounds.height,\n x: bounds.x,\n y: bounds.y,\n positioned,\n intersect: void 0,\n type: vertex.type,\n padding: padding2 ?? getConfig()?.block?.padding ?? 0\n };\n return node;\n}\n__name(getNodeFromBlock, \"getNodeFromBlock\");\nasync function calculateBlockSize(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, false);\n if (node.type === \"group\") {\n return;\n }\n const config2 = getConfig();\n const nodeEl = await insertNode(elem, node, { config: config2 });\n const boundingBox = nodeEl.node().getBBox();\n const obj = db2.getBlock(node.id);\n obj.size = { width: boundingBox.width, height: boundingBox.height, x: 0, y: 0, node: nodeEl };\n db2.setBlock(obj);\n nodeEl.remove();\n}\n__name(calculateBlockSize, \"calculateBlockSize\");\nasync function insertBlockPositioned(elem, block, db2) {\n const node = getNodeFromBlock(block, db2, true);\n const obj = db2.getBlock(node.id);\n if (obj.type !== \"space\") {\n const config2 = getConfig();\n await insertNode(elem, node, { config: config2 });\n block.intersect = node?.intersect;\n positionNode(node);\n }\n}\n__name(insertBlockPositioned, \"insertBlockPositioned\");\nasync function performOperations(elem, blocks2, db2, operation) {\n for (const block of blocks2) {\n await operation(elem, block, db2);\n if (block.children) {\n await performOperations(elem, block.children, db2, operation);\n }\n }\n}\n__name(performOperations, \"performOperations\");\nasync function calculateBlockSizes(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, calculateBlockSize);\n}\n__name(calculateBlockSizes, \"calculateBlockSizes\");\nasync function insertBlocks(elem, blocks2, db2) {\n await performOperations(elem, blocks2, db2, insertBlockPositioned);\n}\n__name(insertBlocks, \"insertBlocks\");\nasync function insertEdges(elem, edges, blocks2, db2, id) {\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n });\n g.setGraph({\n rankdir: \"TB\",\n nodesep: 10,\n ranksep: 10,\n marginx: 8,\n marginy: 8\n });\n for (const block of blocks2) {\n if (block.size) {\n g.setNode(block.id, {\n width: block.size.width,\n height: block.size.height,\n intersect: block.intersect\n });\n }\n }\n for (const edge of edges) {\n if (edge.start && edge.end) {\n const startBlock = db2.getBlock(edge.start);\n const endBlock = db2.getBlock(edge.end);\n if (startBlock?.size && endBlock?.size) {\n const start2 = startBlock.size;\n const end2 = endBlock.size;\n const points = [\n { x: start2.x, y: start2.y },\n { x: start2.x + (end2.x - start2.x) / 2, y: start2.y + (end2.y - start2.y) / 2 },\n { x: end2.x, y: end2.y }\n ];\n insertEdge(\n elem,\n { v: edge.start, w: edge.end, name: edge.id },\n {\n ...edge,\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n },\n void 0,\n \"block\",\n g,\n id\n );\n if (edge.label) {\n await insertEdgeLabel(elem, {\n ...edge,\n label: edge.label,\n labelStyle: \"stroke: #333; stroke-width: 1.5px;fill:none;\",\n arrowTypeEnd: edge.arrowTypeEnd,\n arrowTypeStart: edge.arrowTypeStart,\n points,\n classes: \"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1\"\n });\n positionEdgeLabel(\n { ...edge, x: points[1].x, y: points[1].y },\n {\n originalPath: points\n }\n );\n }\n }\n }\n }\n}\n__name(insertEdges, \"insertEdges\");\n\n// src/diagrams/block/blockRenderer.ts\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagObj) {\n return diagObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diagObj) {\n const { securityLevel, block: conf } = getConfig();\n const db2 = diagObj.db;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = d3select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? d3select(sandboxElement.nodes()[0].contentDocument.body) : d3select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : d3select(`[id=\"${id}\"]`);\n const markers2 = [\"point\", \"circle\", \"cross\"];\n markers_default(svg, markers2, diagObj.type, id);\n const bl = db2.getBlocks();\n const blArr = db2.getBlocksFlat();\n const edges = db2.getEdges();\n const nodes = svg.insert(\"g\").attr(\"class\", \"block\");\n await calculateBlockSizes(nodes, bl, db2);\n const bounds = layout(db2);\n await insertBlocks(nodes, bl, db2);\n await insertEdges(nodes, edges, blArr, db2, id);\n if (bounds) {\n const bounds2 = bounds;\n const magicFactor = Math.max(1, Math.round(0.125 * (bounds2.width / bounds2.height)));\n const height = bounds2.height + magicFactor + 10;\n const width = bounds2.width + 10;\n const { useMaxWidth } = conf;\n configureSvgSize(svg, height, width, !!useMaxWidth);\n log.debug(\"Here Bounds\", bounds, bounds2);\n svg.attr(\n \"viewBox\",\n `${bounds2.x - 5} ${bounds2.y - 5} ${bounds2.width + 10} ${bounds2.height + 10}`\n );\n }\n}, \"draw\");\nvar blockRenderer_default = {\n draw,\n getClasses: getClasses2\n};\n\n// src/diagrams/block/blockDiagram.ts\nvar diagram = {\n parser: block_default,\n db: blockDB_default,\n renderer: blockRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],
+ "mappings": "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",
+ "names": ["parser", "o", "__name", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "num", "spaceId", "edgeData", "id2", "id", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "block_default", "blockDatabase", "edgeList", "edgeCount", "COLOR_KEYWORD", "FILL_KEYWORD", "BG_FILL", "STYLECLASS_SEP", "config", "getConfig2", "classes", "sanitizeText2", "txt", "common_default", "addStyleClass", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "addStyle2Node", "styles", "foundBlock", "setCssClass", "itemIds", "cssClassName", "trimmedId", "populateBlockDatabase", "_blockList", "parent", "blockList", "children", "column", "b", "block", "log", "count", "existingBlock", "w", "j", "newBlock", "clone_default", "blocks", "rootBlock", "clear2", "clear", "typeStr2Type", "typeStr", "edgeTypeStr2Type", "edgeStrToEdgeData", "cnt", "generateId", "setHierarchy", "getColumns", "blockId", "getBlocksFlat", "getBlocks", "getEdges", "getBlock", "setBlock", "getLogger", "getClasses", "db", "getConfig", "blockDB_default", "fade", "color", "opacity", "channel2", "channel_default", "g", "rgba_default", "getStyles", "options", "getIconStyles", "styles_default", "insertMarkers", "elem", "markerArray", "type", "markerName", "markers", "extension", "composition", "aggregation", "dependency", "lollipop", "point", "circle", "cross", "barb", "markers_default", "padding", "calculateBlockPosition", "columns", "position", "px", "py", "getMaxChildSize", "maxWidth", "maxHeight", "child", "width", "height", "x", "y", "setBlockSizes", "db2", "siblingWidth", "siblingHeight", "childSize", "numItems", "xSize", "ySize", "childWidth", "childHeight", "layoutBlocks", "widthOfChildren", "columnPos", "startingPosX", "rowPos", "width2", "halfWidth", "columnsFilled", "findBounds", "minX", "minY", "maxX", "maxY", "layout", "root", "applyStyle", "dom", "styleFn", "addHtmlLabel", "node", "config2", "fo", "select_default", "div", "label", "labelClass", "span", "sanitizeText", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "evaluate", "replaceIconSubstring", "decodeEntities", "svgLabel", "rows", "row", "tspan", "createLabel_default", "addEdgeMarkers", "svgPath", "edge", "url", "diagramType", "addEdgeMarker", "arrowTypesMap", "arrowType", "endMarkerType", "suffix", "edgeLabels", "terminalLabels", "insertEdgeLabel", "useHtmlLabels", "labelElement", "createText", "edgeLabel", "bbox", "dv", "startLabelElement", "startEdgeLabelLeft", "inner", "slBox", "setTerminalWidth", "startEdgeLabelRight", "endLabelElement", "endEdgeLabelLeft", "endEdgeLabelRight", "value", "positionEdgeLabel", "paths", "path", "siteConfig", "subGraphTitleTotalMargin", "getSubGraphTitleMargins", "el", "pos", "utils_default", "outsideNode", "point2", "dx", "dy", "h", "intersection", "outsidePoint", "insidePoint", "Q", "R", "q", "res", "_x", "_y", "cutPathAtIntersect", "_points", "boundaryNode", "points", "lastPointOutside", "isInside", "inter", "pointPresent", "e", "insertEdge", "clusterDb", "graph", "pointsHasChanged", "tail", "head", "lineData", "curve", "basis_default", "getLineFunctionsWithOffset", "lineFunction", "line_default", "strokeClasses", "getUrl", "expandAndDeduplicateDirections", "directions", "uniqueDirections", "direction", "getArrowPoints", "duplicatedDirections", "f", "midpoint", "padding2", "intersectNode", "intersect_node_default", "intersectEllipse", "rx", "ry", "cx", "cy", "det", "intersect_ellipse_default", "intersectCircle", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "sameSign", "intersect_line_default", "intersect_polygon_default", "intersectPolygon", "polyPoints", "x1", "y1", "intersections", "entry", "left", "top", "intersect", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "intersectRect", "sx", "sy", "intersect_rect_default", "intersect_default", "labelHelper", "_classes", "classes2", "shapeSvg", "labelText", "textNode", "text", "halfPadding", "images", "noImgText", "img", "setupImage", "bodyFontSize", "updateNodeBounds", "element", "insertPolygonShape", "d", "note", "rect2", "note_default", "formatClass", "getClassesFromNode", "otherClasses", "question", "s", "questionElem", "choice", "hexagon", "m", "hex", "block_arrow", "blockArrow", "rect_left_inv_arrow", "lean_right", "lean_left", "trapezoid", "inv_trapezoid", "rect_right_inv_arrow", "cylinder", "shape", "rect", "totalWidth", "totalHeight", "propKeys", "applyNodePropertyBorders", "propKey", "composite", "labelRect", "borders", "strokeDashArray", "addBorder", "length", "skipBorder", "rectWithTitle", "innerLine", "text2", "title", "textRows", "titleBox", "descr", "stadium", "circle2", "circle3", "doublecircle", "gap", "circleGroup", "outerCircle", "innerCircle", "subroutine", "start", "forkJoin", "dir", "end", "class_box", "rowPadding", "lineHeight", "topLine", "bottomLine", "labelContainer", "verticalPos", "hasInterface", "interfaceLabelText", "interfaceLabel", "interfaceBBox", "classTitleString", "classTitleLabel", "classTitleBBox", "classAttributes", "member", "parsedInfo", "parsedText", "lbl", "classMethods", "displayText", "diffX2", "diffX", "memberBBox", "shapes", "nodeElems", "insertNode", "renderOptions", "newEl", "target", "positionNode", "diff", "getNodeFromBlock", "positioned", "vertex", "classStr", "radius", "getStylesFromArray", "bounds", "calculateBlockSize", "nodeEl", "boundingBox", "obj", "insertBlockPositioned", "performOperations", "blocks2", "operation", "calculateBlockSizes", "insertBlocks", "insertEdges", "edges", "Graph", "startBlock", "endBlock", "start2", "end2", "getClasses2", "diagObj", "draw", "_version", "securityLevel", "conf", "sandboxElement", "svg", "bl", "blArr", "nodes", "bounds2", "magicFactor", "useMaxWidth", "configureSvgSize", "blockRenderer_default", "diagram"]
+}
diff --git a/docs/public/bootstrap-icons-CVBWLLHT.woff2 b/docs/public/bootstrap-icons-CVBWLLHT.woff2
new file mode 100755
index 0000000..4d8c490
Binary files /dev/null and b/docs/public/bootstrap-icons-CVBWLLHT.woff2 differ
diff --git a/docs/public/bootstrap-icons-VQNJTM6Q.woff b/docs/public/bootstrap-icons-VQNJTM6Q.woff
new file mode 100755
index 0000000..a4fa4f0
Binary files /dev/null and b/docs/public/bootstrap-icons-VQNJTM6Q.woff differ
diff --git a/docs/public/c4Diagram-YG6GDRKO-6JHP5GV7.min.js b/docs/public/c4Diagram-YG6GDRKO-6JHP5GV7.min.js
new file mode 100755
index 0000000..fb3a3f4
--- /dev/null
+++ b/docs/public/c4Diagram-YG6GDRKO-6JHP5GV7.min.js
@@ -0,0 +1,11 @@
+import{a as ke,f as Ee}from"./chunk-ZTFIXIRW.min.js";import{g as ve,h as ee,i as Ct}from"./chunk-QZZKR5JD.min.js";import{a as Fe}from"./chunk-CM5D5KZN.min.js";import{D as te,K as Yt,L as be,Q as ge,R as _e,S as xe,T as me,W as Ot,n as ye}from"./chunk-3EE2TK35.min.js";import"./chunk-E5F23VE2.min.js";import{b,d as $t,j as Dt}from"./chunk-6TVUEPFY.min.js";import{d as Ue}from"./chunk-OSRY5VT3.min.js";var Re=Ue(Fe(),1),Ut=(function(){var e=b(function(_t,x,m,v){for(m=m||{},v=_t.length;v--;m[_t[v]]=x);return m},"o"),t=[1,24],s=[1,25],o=[1,26],l=[1,27],a=[1,28],n=[1,63],r=[1,64],i=[1,65],u=[1,66],d=[1,67],y=[1,68],p=[1,69],k=[1,29],O=[1,30],S=[1,31],P=[1,32],M=[1,33],U=[1,34],H=[1,35],q=[1,36],G=[1,37],K=[1,38],J=[1,39],Z=[1,40],$=[1,41],tt=[1,42],et=[1,43],at=[1,44],it=[1,45],rt=[1,46],nt=[1,47],st=[1,48],lt=[1,50],ot=[1,51],ct=[1,52],ht=[1,53],ut=[1,54],dt=[1,55],ft=[1,56],pt=[1,57],yt=[1,58],bt=[1,59],gt=[1,60],wt=[14,42],Wt=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Rt=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],E=[1,82],A=[1,83],C=[1,84],w=[1,85],T=[12,14,42],ce=[12,14,33,42],It=[12,14,33,42,76,77,79,80],vt=[12,33],Qt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ht={trace:b(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:b(function(x,m,v,g,R,h,St){var f=h.length-1;switch(R){case 3:g.setDirection("TB");break;case 4:g.setDirection("BT");break;case 5:g.setDirection("RL");break;case 6:g.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:g.setC4Type(h[f-3]);break;case 19:g.setTitle(h[f].substring(6)),this.$=h[f].substring(6);break;case 20:g.setAccDescription(h[f].substring(15)),this.$=h[f].substring(15);break;case 21:this.$=h[f].trim(),g.setTitle(this.$);break;case 22:case 23:this.$=h[f].trim(),g.setAccDescription(this.$);break;case 28:h[f].splice(2,0,"ENTERPRISE"),g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 29:h[f].splice(2,0,"SYSTEM"),g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 30:g.addPersonOrSystemBoundary(...h[f]),this.$=h[f];break;case 31:h[f].splice(2,0,"CONTAINER"),g.addContainerBoundary(...h[f]),this.$=h[f];break;case 32:g.addDeploymentNode("node",...h[f]),this.$=h[f];break;case 33:g.addDeploymentNode("nodeL",...h[f]),this.$=h[f];break;case 34:g.addDeploymentNode("nodeR",...h[f]),this.$=h[f];break;case 35:g.popBoundaryParseStack();break;case 39:g.addPersonOrSystem("person",...h[f]),this.$=h[f];break;case 40:g.addPersonOrSystem("external_person",...h[f]),this.$=h[f];break;case 41:g.addPersonOrSystem("system",...h[f]),this.$=h[f];break;case 42:g.addPersonOrSystem("system_db",...h[f]),this.$=h[f];break;case 43:g.addPersonOrSystem("system_queue",...h[f]),this.$=h[f];break;case 44:g.addPersonOrSystem("external_system",...h[f]),this.$=h[f];break;case 45:g.addPersonOrSystem("external_system_db",...h[f]),this.$=h[f];break;case 46:g.addPersonOrSystem("external_system_queue",...h[f]),this.$=h[f];break;case 47:g.addContainer("container",...h[f]),this.$=h[f];break;case 48:g.addContainer("container_db",...h[f]),this.$=h[f];break;case 49:g.addContainer("container_queue",...h[f]),this.$=h[f];break;case 50:g.addContainer("external_container",...h[f]),this.$=h[f];break;case 51:g.addContainer("external_container_db",...h[f]),this.$=h[f];break;case 52:g.addContainer("external_container_queue",...h[f]),this.$=h[f];break;case 53:g.addComponent("component",...h[f]),this.$=h[f];break;case 54:g.addComponent("component_db",...h[f]),this.$=h[f];break;case 55:g.addComponent("component_queue",...h[f]),this.$=h[f];break;case 56:g.addComponent("external_component",...h[f]),this.$=h[f];break;case 57:g.addComponent("external_component_db",...h[f]),this.$=h[f];break;case 58:g.addComponent("external_component_queue",...h[f]),this.$=h[f];break;case 60:g.addRel("rel",...h[f]),this.$=h[f];break;case 61:g.addRel("birel",...h[f]),this.$=h[f];break;case 62:g.addRel("rel_u",...h[f]),this.$=h[f];break;case 63:g.addRel("rel_d",...h[f]),this.$=h[f];break;case 64:g.addRel("rel_l",...h[f]),this.$=h[f];break;case 65:g.addRel("rel_r",...h[f]),this.$=h[f];break;case 66:g.addRel("rel_b",...h[f]),this.$=h[f];break;case 67:h[f].splice(0,1),g.addRel("rel",...h[f]),this.$=h[f];break;case 68:g.updateElStyle("update_el_style",...h[f]),this.$=h[f];break;case 69:g.updateRelStyle("update_rel_style",...h[f]),this.$=h[f];break;case 70:g.updateLayoutConfig("update_layout_config",...h[f]),this.$=h[f];break;case 71:this.$=[h[f]];break;case 72:h[f].unshift(h[f-1]),this.$=h[f];break;case 73:case 75:this.$=h[f].trim();break;case 74:let kt={};kt[h[f-1].trim()]=h[f].trim(),this.$=kt;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:n,36:r,37:i,38:u,39:d,40:y,41:p,43:23,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:70,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:n,36:r,37:i,38:u,39:d,40:y,41:p,43:23,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:71,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:n,36:r,37:i,38:u,39:d,40:y,41:p,43:23,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:72,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:n,36:r,37:i,38:u,39:d,40:y,41:p,43:23,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{13:73,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:n,36:r,37:i,38:u,39:d,40:y,41:p,43:23,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{14:[1,74]},e(wt,[2,13],{43:23,29:49,30:61,32:62,20:75,34:n,36:r,37:i,38:u,39:d,40:y,41:p,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt}),e(wt,[2,14]),e(Wt,[2,16],{12:[1,76]}),e(wt,[2,36],{12:[1,77]}),e(Rt,[2,19]),e(Rt,[2,20]),{25:[1,78]},{27:[1,79]},e(Rt,[2,23]),{35:80,75:81,76:E,77:A,79:C,80:w},{35:86,75:81,76:E,77:A,79:C,80:w},{35:87,75:81,76:E,77:A,79:C,80:w},{35:88,75:81,76:E,77:A,79:C,80:w},{35:89,75:81,76:E,77:A,79:C,80:w},{35:90,75:81,76:E,77:A,79:C,80:w},{35:91,75:81,76:E,77:A,79:C,80:w},{35:92,75:81,76:E,77:A,79:C,80:w},{35:93,75:81,76:E,77:A,79:C,80:w},{35:94,75:81,76:E,77:A,79:C,80:w},{35:95,75:81,76:E,77:A,79:C,80:w},{35:96,75:81,76:E,77:A,79:C,80:w},{35:97,75:81,76:E,77:A,79:C,80:w},{35:98,75:81,76:E,77:A,79:C,80:w},{35:99,75:81,76:E,77:A,79:C,80:w},{35:100,75:81,76:E,77:A,79:C,80:w},{35:101,75:81,76:E,77:A,79:C,80:w},{35:102,75:81,76:E,77:A,79:C,80:w},{35:103,75:81,76:E,77:A,79:C,80:w},{35:104,75:81,76:E,77:A,79:C,80:w},e(T,[2,59]),{35:105,75:81,76:E,77:A,79:C,80:w},{35:106,75:81,76:E,77:A,79:C,80:w},{35:107,75:81,76:E,77:A,79:C,80:w},{35:108,75:81,76:E,77:A,79:C,80:w},{35:109,75:81,76:E,77:A,79:C,80:w},{35:110,75:81,76:E,77:A,79:C,80:w},{35:111,75:81,76:E,77:A,79:C,80:w},{35:112,75:81,76:E,77:A,79:C,80:w},{35:113,75:81,76:E,77:A,79:C,80:w},{35:114,75:81,76:E,77:A,79:C,80:w},{35:115,75:81,76:E,77:A,79:C,80:w},{20:116,29:49,30:61,32:62,34:n,36:r,37:i,38:u,39:d,40:y,41:p,43:23,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt},{12:[1,118],33:[1,117]},{35:119,75:81,76:E,77:A,79:C,80:w},{35:120,75:81,76:E,77:A,79:C,80:w},{35:121,75:81,76:E,77:A,79:C,80:w},{35:122,75:81,76:E,77:A,79:C,80:w},{35:123,75:81,76:E,77:A,79:C,80:w},{35:124,75:81,76:E,77:A,79:C,80:w},{35:125,75:81,76:E,77:A,79:C,80:w},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(wt,[2,15]),e(Wt,[2,17],{21:22,19:130,22:t,23:s,24:o,26:l,28:a}),e(wt,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:s,24:o,26:l,28:a,34:n,36:r,37:i,38:u,39:d,40:y,41:p,44:k,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:rt,62:nt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:bt,74:gt}),e(Rt,[2,21]),e(Rt,[2,22]),e(T,[2,39]),e(ce,[2,71],{75:81,35:132,76:E,77:A,79:C,80:w}),e(It,[2,73]),{78:[1,133]},e(It,[2,75]),e(It,[2,76]),e(T,[2,40]),e(T,[2,41]),e(T,[2,42]),e(T,[2,43]),e(T,[2,44]),e(T,[2,45]),e(T,[2,46]),e(T,[2,47]),e(T,[2,48]),e(T,[2,49]),e(T,[2,50]),e(T,[2,51]),e(T,[2,52]),e(T,[2,53]),e(T,[2,54]),e(T,[2,55]),e(T,[2,56]),e(T,[2,57]),e(T,[2,58]),e(T,[2,60]),e(T,[2,61]),e(T,[2,62]),e(T,[2,63]),e(T,[2,64]),e(T,[2,65]),e(T,[2,66]),e(T,[2,67]),e(T,[2,68]),e(T,[2,69]),e(T,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(vt,[2,28]),e(vt,[2,29]),e(vt,[2,30]),e(vt,[2,31]),e(vt,[2,32]),e(vt,[2,33]),e(vt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Wt,[2,18]),e(wt,[2,38]),e(ce,[2,72]),e(It,[2,74]),e(T,[2,24]),e(T,[2,35]),e(Qt,[2,25]),e(Qt,[2,26],{12:[1,138]}),e(Qt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:b(function(x,m){if(m.recoverable)this.trace(x);else{var v=new Error(x);throw v.hash=m,v}},"parseError"),parse:b(function(x){var m=this,v=[0],g=[],R=[null],h=[],St=this.table,f="",kt=0,he=0,ue=0,Le=2,de=1,Ne=h.slice.call(arguments,1),D=Object.create(this.lexer),Et={yy:{}};for(var qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,qt)&&(Et.yy[qt]=this.yy[qt]);D.setInput(x,Et.yy),Et.yy.lexer=D,Et.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Gt=D.yylloc;h.push(Gt);var Ye=D.options&&D.options.ranges;typeof Et.yy.parseError=="function"?this.parseError=Et.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function je(L){v.length=v.length-2*L,R.length=R.length-L,h.length=h.length-L}b(je,"popStack");function fe(){var L;return L=g.pop()||D.lex()||de,typeof L!="number"&&(L instanceof Array&&(g=L,L=g.pop()),L=m.symbols_[L]||L),L}b(fe,"lex");for(var B,Kt,At,N,M0,Jt,Tt={},Lt,W,pe,Nt;;){if(At=v[v.length-1],this.defaultActions[At]?N=this.defaultActions[At]:((B===null||typeof B>"u")&&(B=fe()),N=St[At]&&St[At][B]),typeof N>"u"||!N.length||!N[0]){var Zt="";Nt=[];for(Lt in St[At])this.terminals_[Lt]&&Lt>Le&&Nt.push("'"+this.terminals_[Lt]+"'");D.showPosition?Zt="Parse error on line "+(kt+1)+`:
+`+D.showPosition()+`
+Expecting `+Nt.join(", ")+", got '"+(this.terminals_[B]||B)+"'":Zt="Parse error on line "+(kt+1)+": Unexpected "+(B==de?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(Zt,{text:D.match,token:this.terminals_[B]||B,line:D.yylineno,loc:Gt,expected:Nt})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+At+", token: "+B);switch(N[0]){case 1:v.push(B),R.push(D.yytext),h.push(D.yylloc),v.push(N[1]),B=null,Kt?(B=Kt,Kt=null):(he=D.yyleng,f=D.yytext,kt=D.yylineno,Gt=D.yylloc,ue>0&&ue--);break;case 2:if(W=this.productions_[N[1]][1],Tt.$=R[R.length-W],Tt._$={first_line:h[h.length-(W||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(W||1)].first_column,last_column:h[h.length-1].last_column},Ye&&(Tt._$.range=[h[h.length-(W||1)].range[0],h[h.length-1].range[1]]),Jt=this.performAction.apply(Tt,[f,he,kt,Et.yy,N[1],R,h].concat(Ne)),typeof Jt<"u")return Jt;W&&(v=v.slice(0,-1*W*2),R=R.slice(0,-1*W),h=h.slice(0,-1*W)),v.push(this.productions_[N[1]][0]),R.push(Tt.$),h.push(Tt._$),pe=St[v[v.length-2]][v[v.length-1]],v.push(pe);break;case 3:return!0}}return!0},"parse")},Me=(function(){var _t={EOF:1,parseError:b(function(m,v){if(this.yy.parser)this.yy.parser.parseError(m,v);else throw new Error(m)},"parseError"),setInput:b(function(x,m){return this.yy=m||this.yy||{},this._input=x,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:b(function(){var x=this._input[0];this.yytext+=x,this.yyleng++,this.offset++,this.match+=x,this.matched+=x;var m=x.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),x},"input"),unput:b(function(x){var m=x.length,v=x.split(/(?:\r\n?|\n)/g);this._input=x+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),v.length-1&&(this.yylineno-=v.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:v?(v.length===g.length?this.yylloc.first_column:0)+g[g.length-v.length].length-v[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:b(function(){return this._more=!0,this},"more"),reject:b(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:b(function(x){this.unput(this.match.slice(x))},"less"),pastInput:b(function(){var x=this.matched.substr(0,this.matched.length-this.match.length);return(x.length>20?"...":"")+x.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:b(function(){var x=this.match;return x.length<20&&(x+=this._input.substr(0,20-x.length)),(x.substr(0,20)+(x.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:b(function(){var x=this.pastInput(),m=new Array(x.length+1).join("-");return x+this.upcomingInput()+`
+`+m+"^"},"showPosition"),test_match:b(function(x,m){var v,g,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),g=x[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+x[0].length},this.yytext+=x[0],this.match+=x[0],this.matches=x,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(x[0].length),this.matched+=x[0],v=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),v)return v;if(this._backtrack){for(var h in R)this[h]=R[h];return!1}return!1},"test_match"),next:b(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var x,m,v,g;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),h=0;hm[0].length)){if(m=v,g=h,this.options.backtrack_lexer){if(x=this.test_match(v,R[h]),x!==!1)return x;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(x=this.test_match(m,R[g]),x!==!1?x:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:b(function(){var m=this.next();return m||this.lex()},"lex"),begin:b(function(m){this.conditionStack.push(m)},"begin"),popState:b(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:b(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:b(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:b(function(m){this.begin(m)},"pushState"),stateStackSize:b(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:b(function(m,v,g,R){var h=R;switch(g){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return _t})();Ht.lexer=Me;function Mt(){this.yy={}}return b(Mt,"Parser"),Mt.prototype=Ht,Ht.Parser=Mt,new Mt})();Ut.parser=Ut;var Ve=Ut,V=[],xt=[""],I="global",F="",X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Bt=[],ne="",se=!1,Ft=4,Vt=2,we,ze=b(function(){return we},"getC4Type"),Xe=b(function(e){we=te(e,Ot())},"setC4Type"),We=b(function(e,t,s,o,l,a,n,r,i){if(e==null||t===void 0||t===null||s===void 0||s===null||o===void 0||o===null)return;let u={},d=Bt.find(y=>y.from===t&&y.to===s);if(d?u=d:Bt.push(u),u.type=e,u.from=t,u.to=s,u.label={text:o},l==null)u.techn={text:""};else if(typeof l=="object"){let[y,p]=Object.entries(l)[0];u[y]={text:p}}else u.techn={text:l};if(a==null)u.descr={text:""};else if(typeof a=="object"){let[y,p]=Object.entries(a)[0];u[y]={text:p}}else u.descr={text:a};if(typeof n=="object"){let[y,p]=Object.entries(n)[0];u[y]=p}else u.sprite=n;if(typeof r=="object"){let[y,p]=Object.entries(r)[0];u[y]=p}else u.tags=r;if(typeof i=="object"){let[y,p]=Object.entries(i)[0];u[y]=p}else u.link=i;u.wrap=mt()},"addRel"),Qe=b(function(e,t,s,o,l,a,n){if(t===null||s===null)return;let r={},i=V.find(u=>u.alias===t);if(i&&t===i.alias?r=i:(r.alias=t,V.push(r)),s==null?r.label={text:""}:r.label={text:s},o==null)r.descr={text:""};else if(typeof o=="object"){let[u,d]=Object.entries(o)[0];r[u]={text:d}}else r.descr={text:o};if(typeof l=="object"){let[u,d]=Object.entries(l)[0];r[u]=d}else r.sprite=l;if(typeof a=="object"){let[u,d]=Object.entries(a)[0];r[u]=d}else r.tags=a;if(typeof n=="object"){let[u,d]=Object.entries(n)[0];r[u]=d}else r.link=n;r.typeC4Shape={text:e},r.parentBoundary=I,r.wrap=mt()},"addPersonOrSystem"),He=b(function(e,t,s,o,l,a,n,r){if(t===null||s===null)return;let i={},u=V.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,V.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,y]=Object.entries(o)[0];i[d]={text:y}}else i.techn={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,y]=Object.entries(l)[0];i[d]={text:y}}else i.descr={text:l};if(typeof a=="object"){let[d,y]=Object.entries(a)[0];i[d]=y}else i.sprite=a;if(typeof n=="object"){let[d,y]=Object.entries(n)[0];i[d]=y}else i.tags=n;if(typeof r=="object"){let[d,y]=Object.entries(r)[0];i[d]=y}else i.link=r;i.wrap=mt(),i.typeC4Shape={text:e},i.parentBoundary=I},"addContainer"),qe=b(function(e,t,s,o,l,a,n,r){if(t===null||s===null)return;let i={},u=V.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,V.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,y]=Object.entries(o)[0];i[d]={text:y}}else i.techn={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,y]=Object.entries(l)[0];i[d]={text:y}}else i.descr={text:l};if(typeof a=="object"){let[d,y]=Object.entries(a)[0];i[d]=y}else i.sprite=a;if(typeof n=="object"){let[d,y]=Object.entries(n)[0];i[d]=y}else i.tags=n;if(typeof r=="object"){let[d,y]=Object.entries(r)[0];i[d]=y}else i.link=r;i.wrap=mt(),i.typeC4Shape={text:e},i.parentBoundary=I},"addComponent"),Ge=b(function(e,t,s,o,l){if(e===null||t===null)return;let a={},n=X.find(r=>r.alias===e);if(n&&e===n.alias?a=n:(a.alias=e,X.push(a)),t==null?a.label={text:""}:a.label={text:t},s==null)a.type={text:"system"};else if(typeof s=="object"){let[r,i]=Object.entries(s)[0];a[r]={text:i}}else a.type={text:s};if(typeof o=="object"){let[r,i]=Object.entries(o)[0];a[r]=i}else a.tags=o;if(typeof l=="object"){let[r,i]=Object.entries(l)[0];a[r]=i}else a.link=l;a.parentBoundary=I,a.wrap=mt(),F=I,I=e,xt.push(F)},"addPersonOrSystemBoundary"),Ke=b(function(e,t,s,o,l){if(e===null||t===null)return;let a={},n=X.find(r=>r.alias===e);if(n&&e===n.alias?a=n:(a.alias=e,X.push(a)),t==null?a.label={text:""}:a.label={text:t},s==null)a.type={text:"container"};else if(typeof s=="object"){let[r,i]=Object.entries(s)[0];a[r]={text:i}}else a.type={text:s};if(typeof o=="object"){let[r,i]=Object.entries(o)[0];a[r]=i}else a.tags=o;if(typeof l=="object"){let[r,i]=Object.entries(l)[0];a[r]=i}else a.link=l;a.parentBoundary=I,a.wrap=mt(),F=I,I=e,xt.push(F)},"addContainerBoundary"),Je=b(function(e,t,s,o,l,a,n,r){if(t===null||s===null)return;let i={},u=X.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,X.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.type={text:"node"};else if(typeof o=="object"){let[d,y]=Object.entries(o)[0];i[d]={text:y}}else i.type={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,y]=Object.entries(l)[0];i[d]={text:y}}else i.descr={text:l};if(typeof n=="object"){let[d,y]=Object.entries(n)[0];i[d]=y}else i.tags=n;if(typeof r=="object"){let[d,y]=Object.entries(r)[0];i[d]=y}else i.link=r;i.nodeType=e,i.parentBoundary=I,i.wrap=mt(),F=I,I=t,xt.push(F)},"addDeploymentNode"),Ze=b(function(){I=F,xt.pop(),F=xt.pop(),xt.push(F)},"popBoundaryParseStack"),$e=b(function(e,t,s,o,l,a,n,r,i,u,d){let y=V.find(p=>p.alias===t);if(!(y===void 0&&(y=X.find(p=>p.alias===t),y===void 0))){if(s!=null)if(typeof s=="object"){let[p,k]=Object.entries(s)[0];y[p]=k}else y.bgColor=s;if(o!=null)if(typeof o=="object"){let[p,k]=Object.entries(o)[0];y[p]=k}else y.fontColor=o;if(l!=null)if(typeof l=="object"){let[p,k]=Object.entries(l)[0];y[p]=k}else y.borderColor=l;if(a!=null)if(typeof a=="object"){let[p,k]=Object.entries(a)[0];y[p]=k}else y.shadowing=a;if(n!=null)if(typeof n=="object"){let[p,k]=Object.entries(n)[0];y[p]=k}else y.shape=n;if(r!=null)if(typeof r=="object"){let[p,k]=Object.entries(r)[0];y[p]=k}else y.sprite=r;if(i!=null)if(typeof i=="object"){let[p,k]=Object.entries(i)[0];y[p]=k}else y.techn=i;if(u!=null)if(typeof u=="object"){let[p,k]=Object.entries(u)[0];y[p]=k}else y.legendText=u;if(d!=null)if(typeof d=="object"){let[p,k]=Object.entries(d)[0];y[p]=k}else y.legendSprite=d}},"updateElStyle"),t0=b(function(e,t,s,o,l,a,n){let r=Bt.find(i=>i.from===t&&i.to===s);if(r!==void 0){if(o!=null)if(typeof o=="object"){let[i,u]=Object.entries(o)[0];r[i]=u}else r.textColor=o;if(l!=null)if(typeof l=="object"){let[i,u]=Object.entries(l)[0];r[i]=u}else r.lineColor=l;if(a!=null)if(typeof a=="object"){let[i,u]=Object.entries(a)[0];r[i]=parseInt(u)}else r.offsetX=parseInt(a);if(n!=null)if(typeof n=="object"){let[i,u]=Object.entries(n)[0];r[i]=parseInt(u)}else r.offsetY=parseInt(n)}},"updateRelStyle"),e0=b(function(e,t,s){let o=Ft,l=Vt;if(typeof t=="object"){let a=Object.values(t)[0];o=parseInt(a)}else o=parseInt(t);if(typeof s=="object"){let a=Object.values(s)[0];l=parseInt(a)}else l=parseInt(s);o>=1&&(Ft=o),l>=1&&(Vt=l)},"updateLayoutConfig"),a0=b(function(){return Ft},"getC4ShapeInRow"),i0=b(function(){return Vt},"getC4BoundaryInRow"),r0=b(function(){return I},"getCurrentBoundaryParse"),n0=b(function(){return F},"getParentBoundaryParse"),Te=b(function(e){return e==null?V:V.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),s0=b(function(e){return V.find(t=>t.alias===e)},"getC4Shape"),l0=b(function(e){return Object.keys(Te(e))},"getC4ShapeKeys"),Oe=b(function(e){return e==null?X:X.filter(t=>t.parentBoundary===e)},"getBoundaries"),o0=Oe,c0=b(function(){return Bt},"getRels"),h0=b(function(){return ne},"getTitle"),u0=b(function(e){se=e},"setWrap"),mt=b(function(){return se},"autoWrap"),d0=b(function(){V=[],X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],F="",I="global",xt=[""],Bt=[],xt=[""],ne="",se=!1,Ft=4,Vt=2},"clear"),f0={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},p0={FILLED:0,OPEN:1},y0={LEFTOF:0,RIGHTOF:1,OVER:2},b0=b(function(e){ne=te(e,Ot())},"setTitle"),ae={addPersonOrSystem:Qe,addPersonOrSystemBoundary:Ge,addContainer:He,addContainerBoundary:Ke,addComponent:qe,addDeploymentNode:Je,popBoundaryParseStack:Ze,addRel:We,updateElStyle:$e,updateRelStyle:t0,updateLayoutConfig:e0,autoWrap:mt,setWrap:u0,getC4ShapeArray:Te,getC4Shape:s0,getC4ShapeKeys:l0,getBoundaries:Oe,getBoundarys:o0,getCurrentBoundaryParse:r0,getParentBoundaryParse:n0,getRels:c0,getTitle:h0,getC4Type:ze,getC4ShapeInRow:a0,getC4BoundaryInRow:i0,setAccTitle:ge,getAccTitle:_e,getAccDescription:me,setAccDescription:xe,getConfig:b(()=>Ot().c4,"getConfig"),clear:d0,LINETYPE:f0,ARROWTYPE:p0,PLACEMENT:y0,setTitle:b0,setC4Type:Xe},le=b(function(e,t){return ke(e,t)},"drawRect"),Se=b(function(e,t,s,o,l,a){let n=e.append("image");n.attr("width",t),n.attr("height",s),n.attr("x",o),n.attr("y",l);let r=a.startsWith("data:image/png;base64")?a:(0,Re.sanitizeUrl)(a);n.attr("xlink:href",r)},"drawImage"),g0=b((e,t,s)=>{let o=e.append("g"),l=0;for(let a of t){let n=a.textColor?a.textColor:"#444444",r=a.lineColor?a.lineColor:"#444444",i=a.offsetX?parseInt(a.offsetX):0,u=a.offsetY?parseInt(a.offsetY):0,d="";if(l===0){let p=o.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",r),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+d+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+d+"#arrowend)"),l=-1}else{let p=o.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",r).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&p.attr("marker-end","url("+d+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+d+"#arrowend)")}let y=s.messageFont();Q(s)(a.label.text,o,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+i,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+u,a.label.width,a.label.height,{fill:n},y),a.techn&&a.techn.text!==""&&(y=s.messageFont(),Q(s)("["+a.techn.text+"]",o,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+i,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+s.messageFontSize+5+u,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:n,"font-style":"italic"},y))}},"drawRels"),_0=b(function(e,t,s){let o=e.append("g"),l=t.bgColor?t.bgColor:"none",a=t.borderColor?t.borderColor:"#444444",n=t.fontColor?t.fontColor:"black",r={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(r={"stroke-width":1});let i={x:t.x,y:t.y,fill:l,stroke:a,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:r};le(o,i);let u=s.boundaryFont();u.fontWeight="bold",u.fontSize=u.fontSize+2,u.fontColor=n,Q(s)(t.label.text,o,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},u),t.type&&t.type.text!==""&&(u=s.boundaryFont(),u.fontColor=n,Q(s)(t.type.text,o,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},u)),t.descr&&t.descr.text!==""&&(u=s.boundaryFont(),u.fontSize=u.fontSize-2,u.fontColor=n,Q(s)(t.descr.text,o,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},u))},"drawBoundary"),x0=b(function(e,t,s){let o=t.bgColor?t.bgColor:s[t.typeC4Shape.text+"_bg_color"],l=t.borderColor?t.borderColor:s[t.typeC4Shape.text+"_border_color"],a=t.fontColor?t.fontColor:"#FFFFFF",n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let r=e.append("g");r.attr("class","person-man");let i=Ee();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":i.x=t.x,i.y=t.y,i.fill=o,i.width=t.width,i.height=t.height,i.stroke=l,i.rx=2.5,i.ry=2.5,i.attrs={"stroke-width":.5},le(r,i);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":r.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),r.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":r.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),r.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let u=O0(s,t.typeC4Shape.text);switch(r.append("text").attr("fill",a).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":Se(r,48,48,t.x+t.width/2-24,t.y+t.image.Y,n);break}let d=s[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=a,Q(s)(t.label.text,r,t.x,t.y+t.label.Y,t.width,t.height,{fill:a},d),d=s[t.typeC4Shape.text+"Font"](),d.fontColor=a,t.techn&&t.techn?.text!==""?Q(s)(t.techn.text,r,t.x,t.y+t.techn.Y,t.width,t.height,{fill:a,"font-style":"italic"},d):t.type&&t.type.text!==""&&Q(s)(t.type.text,r,t.x,t.y+t.type.Y,t.width,t.height,{fill:a,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=s.personFont(),d.fontColor=a,Q(s)(t.descr.text,r,t.x,t.y+t.descr.Y,t.width,t.height,{fill:a},d)),t.height},"drawC4Shape"),m0=b(function(e){e.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),v0=b(function(e){e.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),k0=b(function(e){e.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),E0=b(function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),A0=b(function(e){e.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),C0=b(function(e){e.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),w0=b(function(e){e.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),T0=b(function(e){let s=e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);s.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),s.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),O0=b((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),Q=(function(){function e(l,a,n,r,i,u,d){let y=a.append("text").attr("x",n+i/2).attr("y",r+u/2+5).style("text-anchor","middle").text(l);o(y,d)}b(e,"byText");function t(l,a,n,r,i,u,d,y){let{fontSize:p,fontFamily:k,fontWeight:O}=y,S=l.split(Yt.lineBreakRegex);for(let P=0;P=this.data.widthLimit||s>=this.data.widthLimit||this.nextData.cnt>De)&&(t=this.nextData.startx+e.margin+_.nextLinePaddingX,o=this.nextData.stopy+e.margin*2,this.nextData.stopx=s=t+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=l=o+e.height,this.nextData.cnt=1),e.x=t,e.y=o,this.updateVal(this.data,"startx",t,Math.min),this.updateVal(this.data,"starty",o,Math.min),this.updateVal(this.data,"stopx",s,Math.max),this.updateVal(this.data,"stopy",l,Math.max),this.updateVal(this.nextData,"startx",t,Math.min),this.updateVal(this.nextData,"starty",o,Math.min),this.updateVal(this.nextData,"stopx",s,Math.max),this.updateVal(this.nextData,"stopy",l,Math.max)}init(e){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},re(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},re=b(function(e){ye(_,e),e.fontFamily&&(_.personFontFamily=_.systemFontFamily=_.messageFontFamily=e.fontFamily),e.fontSize&&(_.personFontSize=_.systemFontSize=_.messageFontSize=e.fontSize),e.fontWeight&&(_.personFontWeight=_.systemFontWeight=_.messageFontWeight=e.fontWeight)},"setConf"),Pt=b((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),jt=b(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),R0=b(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");function j(e,t,s,o,l){if(!t[e].width)if(s)t[e].text=ve(t[e].text,l,o),t[e].textLines=t[e].text.split(Yt.lineBreakRegex).length,t[e].width=l,t[e].height=ee(t[e].text,o);else{let a=t[e].text.split(Yt.lineBreakRegex);t[e].textLines=a.length;let n=0;t[e].height=0,t[e].width=0;for(let r of a)t[e].width=Math.max(Ct(r,o),t[e].width),n=ee(r,o),t[e].height=t[e].height+n}}b(j,"calcC4ShapeTextWH");var Be=b(function(e,t,s){t.x=s.data.startx,t.y=s.data.starty,t.width=s.data.stopx-s.data.startx,t.height=s.data.stopy-s.data.starty,t.label.y=_.c4ShapeMargin-35;let o=t.wrap&&_.wrap,l=jt(_);l.fontSize=l.fontSize+2,l.fontWeight="bold";let a=Ct(t.label.text,l);j("label",t,o,l,a),z.drawBoundary(e,t,_)},"drawBoundary"),Ie=b(function(e,t,s,o){let l=0;for(let a of o){l=0;let n=s[a],r=Pt(_,n.typeC4Shape.text);switch(r.fontSize=r.fontSize-2,n.typeC4Shape.width=Ct("\xAB"+n.typeC4Shape.text+"\xBB",r),n.typeC4Shape.height=r.fontSize+2,n.typeC4Shape.Y=_.c4ShapePadding,l=n.typeC4Shape.Y+n.typeC4Shape.height-4,n.image={width:0,height:0,Y:0},n.typeC4Shape.text){case"person":case"external_person":n.image.width=48,n.image.height=48,n.image.Y=l,l=n.image.Y+n.image.height;break}n.sprite&&(n.image.width=48,n.image.height=48,n.image.Y=l,l=n.image.Y+n.image.height);let i=n.wrap&&_.wrap,u=_.width-_.c4ShapePadding*2,d=Pt(_,n.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",j("label",n,i,d,u),n.label.Y=l+8,l=n.label.Y+n.label.height,n.type&&n.type.text!==""){n.type.text="["+n.type.text+"]";let k=Pt(_,n.typeC4Shape.text);j("type",n,i,k,u),n.type.Y=l+5,l=n.type.Y+n.type.height}else if(n.techn&&n.techn.text!==""){n.techn.text="["+n.techn.text+"]";let k=Pt(_,n.techn.text);j("techn",n,i,k,u),n.techn.Y=l+5,l=n.techn.Y+n.techn.height}let y=l,p=n.label.width;if(n.descr&&n.descr.text!==""){let k=Pt(_,n.typeC4Shape.text);j("descr",n,i,k,u),n.descr.Y=l+20,l=n.descr.Y+n.descr.height,p=Math.max(n.label.width,n.descr.width),y=l-n.descr.textLines*5}p=p+_.c4ShapePadding,n.width=Math.max(n.width||_.width,p,_.width),n.height=Math.max(n.height||_.height,y,_.height),n.margin=n.margin||_.c4ShapeMargin,e.insert(n),z.drawC4Shape(t,n,_)}e.bumpLastMargin(_.c4ShapeMargin)},"drawC4ShapeArray"),Y=class{static{b(this,"Point")}constructor(e,t){this.x=e,this.y=t}},Ae=b(function(e,t){let s=e.x,o=e.y,l=t.x,a=t.y,n=s+e.width/2,r=o+e.height/2,i=Math.abs(s-l),u=Math.abs(o-a),d=u/i,y=e.height/e.width,p=null;return o==a&&sl?p=new Y(s,r):s==l&&oa&&(p=new Y(n,o)),s>l&&o =d?p=new Y(s,r+d*e.width/2):p=new Y(n-i/u*e.height/2,o+e.height):s=d?p=new Y(s+e.width,r+d*e.width/2):p=new Y(n+i/u*e.height/2,o+e.height):sa?y>=d?p=new Y(s+e.width,r-d*e.width/2):p=new Y(n+e.height/2*i/u,o):s>l&&o>a&&(y>=d?p=new Y(s,r-e.width/2*d):p=new Y(n-e.height/2*i/u,o)),p},"getIntersectPoint"),S0=b(function(e,t){let s={x:0,y:0};s.x=t.x+t.width/2,s.y=t.y+t.height/2;let o=Ae(e,s);s.x=e.x+e.width/2,s.y=e.y+e.height/2;let l=Ae(t,s);return{startPoint:o,endPoint:l}},"getIntersectPoints"),D0=b(function(e,t,s,o){let l=0;for(let a of t){l=l+1;let n=a.wrap&&_.wrap,r=R0(_);o.db.getC4Type()==="C4Dynamic"&&(a.label.text=l+": "+a.label.text);let u=Ct(a.label.text,r);j("label",a,n,r,u),a.techn&&a.techn.text!==""&&(u=Ct(a.techn.text,r),j("techn",a,n,r,u)),a.descr&&a.descr.text!==""&&(u=Ct(a.descr.text,r),j("descr",a,n,r,u));let d=s(a.from),y=s(a.to),p=S0(d,y);a.startPoint=p.startPoint,a.endPoint=p.endPoint}z.drawRels(e,t,_)},"drawRels");function oe(e,t,s,o,l){let a=new Pe(l);a.data.widthLimit=s.data.widthLimit/Math.min(ie,o.length);for(let[n,r]of o.entries()){let i=0;r.image={width:0,height:0,Y:0},r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=i,i=r.image.Y+r.image.height);let u=r.wrap&&_.wrap,d=jt(_);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",j("label",r,u,d,a.data.widthLimit),r.label.Y=i+8,i=r.label.Y+r.label.height,r.type&&r.type.text!==""){r.type.text="["+r.type.text+"]";let O=jt(_);j("type",r,u,O,a.data.widthLimit),r.type.Y=i+5,i=r.type.Y+r.type.height}if(r.descr&&r.descr.text!==""){let O=jt(_);O.fontSize=O.fontSize-2,j("descr",r,u,O,a.data.widthLimit),r.descr.Y=i+20,i=r.descr.Y+r.descr.height}if(n==0||n%ie===0){let O=s.data.startx+_.diagramMarginX,S=s.data.stopy+_.diagramMarginY+i;a.setData(O,O,S,S)}else{let O=a.data.stopx!==a.data.startx?a.data.stopx+_.diagramMarginX:a.data.startx,S=a.data.starty;a.setData(O,O,S,S)}a.name=r.alias;let y=l.db.getC4ShapeArray(r.alias),p=l.db.getC4ShapeKeys(r.alias);p.length>0&&Ie(a,e,y,p),t=r.alias;let k=l.db.getBoundaries(t);k.length>0&&oe(e,t,a,k,l),r.alias!=="global"&&Be(e,r,a),s.data.stopy=Math.max(a.data.stopy+_.c4ShapeMargin,s.data.stopy),s.data.stopx=Math.max(a.data.stopx+_.c4ShapeMargin,s.data.stopx),zt=Math.max(zt,s.data.stopx),Xt=Math.max(Xt,s.data.stopy)}}b(oe,"drawInsideBoundary");var P0=b(function(e,t,s,o){_=Ot().c4;let l=Ot().securityLevel,a;l==="sandbox"&&(a=Dt("#i"+t));let n=l==="sandbox"?Dt(a.nodes()[0].contentDocument.body):Dt("body"),r=o.db;o.db.setWrap(_.wrap),De=r.getC4ShapeInRow(),ie=r.getC4BoundaryInRow(),$t.debug(`C:${JSON.stringify(_,null,2)}`);let i=l==="sandbox"?n.select(`[id="${t}"]`):Dt(`[id="${t}"]`);z.insertComputerIcon(i),z.insertDatabaseIcon(i),z.insertClockIcon(i);let u=new Pe(o);u.setData(_.diagramMarginX,_.diagramMarginX,_.diagramMarginY,_.diagramMarginY),u.data.widthLimit=screen.availWidth,zt=_.diagramMarginX,Xt=_.diagramMarginY;let d=o.db.getTitle(),y=o.db.getBoundaries("");oe(i,"",u,y,o),z.insertArrowHead(i),z.insertArrowEnd(i),z.insertArrowCrossHead(i),z.insertArrowFilledHead(i),D0(i,o.db.getRels(),o.db.getC4Shape,o),u.data.stopx=zt,u.data.stopy=Xt;let p=u.data,O=p.stopy-p.starty+2*_.diagramMarginY,P=p.stopx-p.startx+2*_.diagramMarginX;d&&i.append("text").text(d).attr("x",(p.stopx-p.startx)/2-4*_.diagramMarginX).attr("y",p.starty+_.diagramMarginY),be(i,O,P,_.useMaxWidth);let M=d?60:0;i.attr("viewBox",p.startx-_.diagramMarginX+" -"+(_.diagramMarginY+M)+" "+P+" "+(O+M)),$t.debug("models:",p)},"draw"),Ce={drawPersonOrSystemArray:Ie,drawBoundary:Be,setConf:re,draw:P0},B0=b(e=>`.person {
+ stroke: ${e.personBorder};
+ fill: ${e.personBkg};
+ }
+`,"getStyles"),I0=B0,F0={parser:Ve,db:ae,renderer:Ce,styles:I0,init:b(({c4:e,wrap:t})=>{Ce.setConf(e),ae.setWrap(t)},"init")};export{F0 as diagram};
+//# sourceMappingURL=c4Diagram-YG6GDRKO-6JHP5GV7.min.js.map
diff --git a/docs/public/c4Diagram-YG6GDRKO-6JHP5GV7.min.js.map b/docs/public/c4Diagram-YG6GDRKO-6JHP5GV7.min.js.map
new file mode 100755
index 0000000..5a6eba9
--- /dev/null
+++ b/docs/public/c4Diagram-YG6GDRKO-6JHP5GV7.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-YG6GDRKO.mjs"],
+ "sourcesContent": ["import {\n drawRect,\n getNoteRect\n} from \"./chunk-TZMSLE5B.mjs\";\nimport {\n calculateTextHeight,\n calculateTextWidth,\n wrapLabel\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n assignWithDepth_default,\n common_default,\n configureSvgSize,\n getAccDescription,\n getAccTitle,\n getConfig2 as getConfig,\n sanitizeText,\n setAccDescription,\n setAccTitle\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/c4/parser/c4Diagram.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"direction\": 5, \"direction_tb\": 6, \"direction_bt\": 7, \"direction_rl\": 8, \"direction_lr\": 9, \"graphConfig\": 10, \"C4_CONTEXT\": 11, \"NEWLINE\": 12, \"statements\": 13, \"EOF\": 14, \"C4_CONTAINER\": 15, \"C4_COMPONENT\": 16, \"C4_DYNAMIC\": 17, \"C4_DEPLOYMENT\": 18, \"otherStatements\": 19, \"diagramStatements\": 20, \"otherStatement\": 21, \"title\": 22, \"accDescription\": 23, \"acc_title\": 24, \"acc_title_value\": 25, \"acc_descr\": 26, \"acc_descr_value\": 27, \"acc_descr_multiline_value\": 28, \"boundaryStatement\": 29, \"boundaryStartStatement\": 30, \"boundaryStopStatement\": 31, \"boundaryStart\": 32, \"LBRACE\": 33, \"ENTERPRISE_BOUNDARY\": 34, \"attributes\": 35, \"SYSTEM_BOUNDARY\": 36, \"BOUNDARY\": 37, \"CONTAINER_BOUNDARY\": 38, \"NODE\": 39, \"NODE_L\": 40, \"NODE_R\": 41, \"RBRACE\": 42, \"diagramStatement\": 43, \"PERSON\": 44, \"PERSON_EXT\": 45, \"SYSTEM\": 46, \"SYSTEM_DB\": 47, \"SYSTEM_QUEUE\": 48, \"SYSTEM_EXT\": 49, \"SYSTEM_EXT_DB\": 50, \"SYSTEM_EXT_QUEUE\": 51, \"CONTAINER\": 52, \"CONTAINER_DB\": 53, \"CONTAINER_QUEUE\": 54, \"CONTAINER_EXT\": 55, \"CONTAINER_EXT_DB\": 56, \"CONTAINER_EXT_QUEUE\": 57, \"COMPONENT\": 58, \"COMPONENT_DB\": 59, \"COMPONENT_QUEUE\": 60, \"COMPONENT_EXT\": 61, \"COMPONENT_EXT_DB\": 62, \"COMPONENT_EXT_QUEUE\": 63, \"REL\": 64, \"BIREL\": 65, \"REL_U\": 66, \"REL_D\": 67, \"REL_L\": 68, \"REL_R\": 69, \"REL_B\": 70, \"REL_INDEX\": 71, \"UPDATE_EL_STYLE\": 72, \"UPDATE_REL_STYLE\": 73, \"UPDATE_LAYOUT_CONFIG\": 74, \"attribute\": 75, \"STR\": 76, \"STR_KEY\": 77, \"STR_VALUE\": 78, \"ATTRIBUTE\": 79, \"ATTRIBUTE_EMPTY\": 80, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"direction_tb\", 7: \"direction_bt\", 8: \"direction_rl\", 9: \"direction_lr\", 11: \"C4_CONTEXT\", 12: \"NEWLINE\", 14: \"EOF\", 15: \"C4_CONTAINER\", 16: \"C4_COMPONENT\", 17: \"C4_DYNAMIC\", 18: \"C4_DEPLOYMENT\", 22: \"title\", 23: \"accDescription\", 24: \"acc_title\", 25: \"acc_title_value\", 26: \"acc_descr\", 27: \"acc_descr_value\", 28: \"acc_descr_multiline_value\", 33: \"LBRACE\", 34: \"ENTERPRISE_BOUNDARY\", 36: \"SYSTEM_BOUNDARY\", 37: \"BOUNDARY\", 38: \"CONTAINER_BOUNDARY\", 39: \"NODE\", 40: \"NODE_L\", 41: \"NODE_R\", 42: \"RBRACE\", 44: \"PERSON\", 45: \"PERSON_EXT\", 46: \"SYSTEM\", 47: \"SYSTEM_DB\", 48: \"SYSTEM_QUEUE\", 49: \"SYSTEM_EXT\", 50: \"SYSTEM_EXT_DB\", 51: \"SYSTEM_EXT_QUEUE\", 52: \"CONTAINER\", 53: \"CONTAINER_DB\", 54: \"CONTAINER_QUEUE\", 55: \"CONTAINER_EXT\", 56: \"CONTAINER_EXT_DB\", 57: \"CONTAINER_EXT_QUEUE\", 58: \"COMPONENT\", 59: \"COMPONENT_DB\", 60: \"COMPONENT_QUEUE\", 61: \"COMPONENT_EXT\", 62: \"COMPONENT_EXT_DB\", 63: \"COMPONENT_EXT_QUEUE\", 64: \"REL\", 65: \"BIREL\", 66: \"REL_U\", 67: \"REL_D\", 68: \"REL_L\", 69: \"REL_R\", 70: \"REL_B\", 71: \"REL_INDEX\", 72: \"UPDATE_EL_STYLE\", 73: \"UPDATE_REL_STYLE\", 74: \"UPDATE_LAYOUT_CONFIG\", 76: \"STR\", 77: \"STR_KEY\", 78: \"STR_VALUE\", 79: \"ATTRIBUTE\", 80: \"ATTRIBUTE_EMPTY\" },\n productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setDirection(\"TB\");\n break;\n case 4:\n yy.setDirection(\"BT\");\n break;\n case 5:\n yy.setDirection(\"RL\");\n break;\n case 6:\n yy.setDirection(\"LR\");\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n yy.setC4Type($$[$0 - 3]);\n break;\n case 19:\n yy.setTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 20:\n yy.setAccDescription($$[$0].substring(15));\n this.$ = $$[$0].substring(15);\n break;\n case 21:\n this.$ = $$[$0].trim();\n yy.setTitle(this.$);\n break;\n case 22:\n case 23:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 28:\n $$[$0].splice(2, 0, \"ENTERPRISE\");\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 29:\n $$[$0].splice(2, 0, \"SYSTEM\");\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 30:\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0].splice(2, 0, \"CONTAINER\");\n yy.addContainerBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 32:\n yy.addDeploymentNode(\"node\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 33:\n yy.addDeploymentNode(\"nodeL\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 34:\n yy.addDeploymentNode(\"nodeR\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 35:\n yy.popBoundaryParseStack();\n break;\n case 39:\n yy.addPersonOrSystem(\"person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 40:\n yy.addPersonOrSystem(\"external_person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 41:\n yy.addPersonOrSystem(\"system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 42:\n yy.addPersonOrSystem(\"system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 43:\n yy.addPersonOrSystem(\"system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 44:\n yy.addPersonOrSystem(\"external_system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 45:\n yy.addPersonOrSystem(\"external_system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 46:\n yy.addPersonOrSystem(\"external_system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 47:\n yy.addContainer(\"container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 48:\n yy.addContainer(\"container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 49:\n yy.addContainer(\"container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 50:\n yy.addContainer(\"external_container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 51:\n yy.addContainer(\"external_container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 52:\n yy.addContainer(\"external_container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 53:\n yy.addComponent(\"component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 54:\n yy.addComponent(\"component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 55:\n yy.addComponent(\"component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 56:\n yy.addComponent(\"external_component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 57:\n yy.addComponent(\"external_component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 58:\n yy.addComponent(\"external_component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 60:\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 61:\n yy.addRel(\"birel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 62:\n yy.addRel(\"rel_u\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 63:\n yy.addRel(\"rel_d\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 64:\n yy.addRel(\"rel_l\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 65:\n yy.addRel(\"rel_r\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 66:\n yy.addRel(\"rel_b\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 67:\n $$[$0].splice(0, 1);\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 68:\n yy.updateElStyle(\"update_el_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 69:\n yy.updateRelStyle(\"update_rel_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 70:\n yy.updateLayoutConfig(\"update_layout_config\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 71:\n this.$ = [$$[$0]];\n break;\n case 72:\n $$[$0].unshift($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 73:\n case 75:\n this.$ = $$[$0].trim();\n break;\n case 74:\n let kv = {};\n kv[$$[$0 - 1].trim()] = $$[$0].trim();\n this.$ = kv;\n break;\n case 76:\n this.$ = \"\";\n break;\n }\n }, \"anonymous\"),\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VH, [2, 14]), o($VI, [2, 16], { 12: [1, 76] }), o($VH, [2, 36], { 12: [1, 77] }), o($VJ, [2, 19]), o($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o($VH, [2, 15]), o($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VJ, [2, 21]), o($VJ, [2, 22]), o($VO, [2, 39]), o($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o($VQ, [2, 73]), { 78: [1, 133] }, o($VQ, [2, 75]), o($VQ, [2, 76]), o($VO, [2, 40]), o($VO, [2, 41]), o($VO, [2, 42]), o($VO, [2, 43]), o($VO, [2, 44]), o($VO, [2, 45]), o($VO, [2, 46]), o($VO, [2, 47]), o($VO, [2, 48]), o($VO, [2, 49]), o($VO, [2, 50]), o($VO, [2, 51]), o($VO, [2, 52]), o($VO, [2, 53]), o($VO, [2, 54]), o($VO, [2, 55]), o($VO, [2, 56]), o($VO, [2, 57]), o($VO, [2, 58]), o($VO, [2, 60]), o($VO, [2, 61]), o($VO, [2, 62]), o($VO, [2, 63]), o($VO, [2, 64]), o($VO, [2, 65]), o($VO, [2, 66]), o($VO, [2, 67]), o($VO, [2, 68]), o($VO, [2, 69]), o($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o($VR, [2, 28]), o($VR, [2, 29]), o($VR, [2, 30]), o($VR, [2, 31]), o($VR, [2, 32]), o($VR, [2, 33]), o($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o($VI, [2, 18]), o($VH, [2, 38]), o($VP, [2, 72]), o($VQ, [2, 74]), o($VO, [2, 24]), o($VO, [2, 35]), o($VS, [2, 25]), o($VS, [2, 26], { 12: [1, 138] }), o($VS, [2, 27])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c2 = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c2 + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: {},\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n return 6;\n break;\n case 1:\n return 7;\n break;\n case 2:\n return 8;\n break;\n case 3:\n return 9;\n break;\n case 4:\n return 22;\n break;\n case 5:\n return 23;\n break;\n case 6:\n this.begin(\"acc_title\");\n return 24;\n break;\n case 7:\n this.popState();\n return \"acc_title_value\";\n break;\n case 8:\n this.begin(\"acc_descr\");\n return 26;\n break;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n break;\n case 13:\n break;\n case 14:\n c;\n break;\n case 15:\n return 12;\n break;\n case 16:\n break;\n case 17:\n return 11;\n break;\n case 18:\n return 15;\n break;\n case 19:\n return 16;\n break;\n case 20:\n return 17;\n break;\n case 21:\n return 18;\n break;\n case 22:\n this.begin(\"person_ext\");\n return 45;\n break;\n case 23:\n this.begin(\"person\");\n return 44;\n break;\n case 24:\n this.begin(\"system_ext_queue\");\n return 51;\n break;\n case 25:\n this.begin(\"system_ext_db\");\n return 50;\n break;\n case 26:\n this.begin(\"system_ext\");\n return 49;\n break;\n case 27:\n this.begin(\"system_queue\");\n return 48;\n break;\n case 28:\n this.begin(\"system_db\");\n return 47;\n break;\n case 29:\n this.begin(\"system\");\n return 46;\n break;\n case 30:\n this.begin(\"boundary\");\n return 37;\n break;\n case 31:\n this.begin(\"enterprise_boundary\");\n return 34;\n break;\n case 32:\n this.begin(\"system_boundary\");\n return 36;\n break;\n case 33:\n this.begin(\"container_ext_queue\");\n return 57;\n break;\n case 34:\n this.begin(\"container_ext_db\");\n return 56;\n break;\n case 35:\n this.begin(\"container_ext\");\n return 55;\n break;\n case 36:\n this.begin(\"container_queue\");\n return 54;\n break;\n case 37:\n this.begin(\"container_db\");\n return 53;\n break;\n case 38:\n this.begin(\"container\");\n return 52;\n break;\n case 39:\n this.begin(\"container_boundary\");\n return 38;\n break;\n case 40:\n this.begin(\"component_ext_queue\");\n return 63;\n break;\n case 41:\n this.begin(\"component_ext_db\");\n return 62;\n break;\n case 42:\n this.begin(\"component_ext\");\n return 61;\n break;\n case 43:\n this.begin(\"component_queue\");\n return 60;\n break;\n case 44:\n this.begin(\"component_db\");\n return 59;\n break;\n case 45:\n this.begin(\"component\");\n return 58;\n break;\n case 46:\n this.begin(\"node\");\n return 39;\n break;\n case 47:\n this.begin(\"node\");\n return 39;\n break;\n case 48:\n this.begin(\"node_l\");\n return 40;\n break;\n case 49:\n this.begin(\"node_r\");\n return 41;\n break;\n case 50:\n this.begin(\"rel\");\n return 64;\n break;\n case 51:\n this.begin(\"birel\");\n return 65;\n break;\n case 52:\n this.begin(\"rel_u\");\n return 66;\n break;\n case 53:\n this.begin(\"rel_u\");\n return 66;\n break;\n case 54:\n this.begin(\"rel_d\");\n return 67;\n break;\n case 55:\n this.begin(\"rel_d\");\n return 67;\n break;\n case 56:\n this.begin(\"rel_l\");\n return 68;\n break;\n case 57:\n this.begin(\"rel_l\");\n return 68;\n break;\n case 58:\n this.begin(\"rel_r\");\n return 69;\n break;\n case 59:\n this.begin(\"rel_r\");\n return 69;\n break;\n case 60:\n this.begin(\"rel_b\");\n return 70;\n break;\n case 61:\n this.begin(\"rel_index\");\n return 71;\n break;\n case 62:\n this.begin(\"update_el_style\");\n return 72;\n break;\n case 63:\n this.begin(\"update_rel_style\");\n return 73;\n break;\n case 64:\n this.begin(\"update_layout_config\");\n return 74;\n break;\n case 65:\n return \"EOF_IN_STRUCT\";\n break;\n case 66:\n this.begin(\"attribute\");\n return \"ATTRIBUTE_EMPTY\";\n break;\n case 67:\n this.begin(\"attribute\");\n break;\n case 68:\n this.popState();\n this.popState();\n break;\n case 69:\n return 80;\n break;\n case 70:\n break;\n case 71:\n return 80;\n break;\n case 72:\n this.begin(\"string\");\n break;\n case 73:\n this.popState();\n break;\n case 74:\n return \"STR\";\n break;\n case 75:\n this.begin(\"string_kv\");\n break;\n case 76:\n this.begin(\"string_kv_key\");\n return \"STR_KEY\";\n break;\n case 77:\n this.popState();\n this.begin(\"string_kv_value\");\n break;\n case 78:\n return \"STR_VALUE\";\n break;\n case 79:\n this.popState();\n this.popState();\n break;\n case 80:\n return \"STR\";\n break;\n case 81:\n return \"LBRACE\";\n break;\n case 82:\n return \"RBRACE\";\n break;\n case 83:\n return \"SPACE\";\n break;\n case 84:\n return \"EOL\";\n break;\n case 85:\n return 14;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:title\\s[^#\\n;]+)/, /^(?:accDescription\\s[^#\\n;]+)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:C4Context\\b)/, /^(?:C4Container\\b)/, /^(?:C4Component\\b)/, /^(?:C4Dynamic\\b)/, /^(?:C4Deployment\\b)/, /^(?:Person_Ext\\b)/, /^(?:Person\\b)/, /^(?:SystemQueue_Ext\\b)/, /^(?:SystemDb_Ext\\b)/, /^(?:System_Ext\\b)/, /^(?:SystemQueue\\b)/, /^(?:SystemDb\\b)/, /^(?:System\\b)/, /^(?:Boundary\\b)/, /^(?:Enterprise_Boundary\\b)/, /^(?:System_Boundary\\b)/, /^(?:ContainerQueue_Ext\\b)/, /^(?:ContainerDb_Ext\\b)/, /^(?:Container_Ext\\b)/, /^(?:ContainerQueue\\b)/, /^(?:ContainerDb\\b)/, /^(?:Container\\b)/, /^(?:Container_Boundary\\b)/, /^(?:ComponentQueue_Ext\\b)/, /^(?:ComponentDb_Ext\\b)/, /^(?:Component_Ext\\b)/, /^(?:ComponentQueue\\b)/, /^(?:ComponentDb\\b)/, /^(?:Component\\b)/, /^(?:Deployment_Node\\b)/, /^(?:Node\\b)/, /^(?:Node_L\\b)/, /^(?:Node_R\\b)/, /^(?:Rel\\b)/, /^(?:BiRel\\b)/, /^(?:Rel_Up\\b)/, /^(?:Rel_U\\b)/, /^(?:Rel_Down\\b)/, /^(?:Rel_D\\b)/, /^(?:Rel_Left\\b)/, /^(?:Rel_L\\b)/, /^(?:Rel_Right\\b)/, /^(?:Rel_R\\b)/, /^(?:Rel_Back\\b)/, /^(?:RelIndex\\b)/, /^(?:UpdateElementStyle\\b)/, /^(?:UpdateRelStyle\\b)/, /^(?:UpdateLayoutConfig\\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*[\"][\"])/, /^(?:[ ]*[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[ ]*[\\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[^,]+)/, /^(?:\\{)/, /^(?:\\})/, /^(?:[\\s]+)/, /^(?:[\\n\\r]+)/, /^(?:$)/],\n conditions: { \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"string_kv_value\": { \"rules\": [78, 79], \"inclusive\": false }, \"string_kv_key\": { \"rules\": [77], \"inclusive\": false }, \"string_kv\": { \"rules\": [76], \"inclusive\": false }, \"string\": { \"rules\": [73, 74], \"inclusive\": false }, \"attribute\": { \"rules\": [68, 69, 70, 71, 72, 75, 80], \"inclusive\": false }, \"update_layout_config\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_rel_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_el_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_b\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_d\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_u\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_bi\": { \"rules\": [], \"inclusive\": false }, \"rel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"index\": { \"rules\": [], \"inclusive\": false }, \"rel_index\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"component_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"birel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"enterprise_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar c4Diagram_default = parser;\n\n// src/diagrams/c4/c4Db.js\nvar c4ShapeArray = [];\nvar boundaryParseStack = [\"\"];\nvar currentBoundaryParse = \"global\";\nvar parentBoundaryParse = \"\";\nvar boundaries = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n];\nvar rels = [];\nvar title = \"\";\nvar wrapEnabled = false;\nvar c4ShapeInRow = 4;\nvar c4BoundaryInRow = 2;\nvar c4Type;\nvar getC4Type = /* @__PURE__ */ __name(function() {\n return c4Type;\n}, \"getC4Type\");\nvar setC4Type = /* @__PURE__ */ __name(function(c4TypeParam) {\n let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n c4Type = sanitizedText;\n}, \"setC4Type\");\nvar addRel = /* @__PURE__ */ __name(function(type, from, to, label, techn, descr, sprite, tags, link) {\n if (type === void 0 || type === null || from === void 0 || from === null || to === void 0 || to === null || label === void 0 || label === null) {\n return;\n }\n let rel = {};\n const old = rels.find((rel2) => rel2.from === from && rel2.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n if (techn === void 0 || techn === null) {\n rel.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n rel.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n}, \"addRel\");\nvar addPersonOrSystem = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n if (label === void 0 || label === null) {\n personOrSystem.label = { text: \"\" };\n } else {\n personOrSystem.label = { text: label };\n }\n if (descr === void 0 || descr === null) {\n personOrSystem.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n}, \"addPersonOrSystem\");\nvar addContainer = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let container = {};\n const old = c4ShapeArray.find((container2) => container2.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n if (label === void 0 || label === null) {\n container.label = { text: \"\" };\n } else {\n container.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n container.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n container.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n}, \"addContainer\");\nvar addComponent = /* @__PURE__ */ __name(function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let component = {};\n const old = c4ShapeArray.find((component2) => component2.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n if (label === void 0 || label === null) {\n component.label = { text: \"\" };\n } else {\n component.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n component.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n component.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n}, \"addComponent\");\nvar addPersonOrSystemBoundary = /* @__PURE__ */ __name(function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundaries.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"system\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n}, \"addPersonOrSystemBoundary\");\nvar addContainerBoundary = /* @__PURE__ */ __name(function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundaries.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"container\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n}, \"addContainerBoundary\");\nvar addDeploymentNode = /* @__PURE__ */ __name(function(nodeType, alias, label, type, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundaries.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundaries.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"node\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (descr === void 0 || descr === null) {\n boundary.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n}, \"addDeploymentNode\");\nvar popBoundaryParseStack = /* @__PURE__ */ __name(function() {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n}, \"popBoundaryParseStack\");\nvar updateElStyle = /* @__PURE__ */ __name(function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === void 0) {\n old = boundaries.find((element) => element.alias === elementName);\n if (old === void 0) {\n return;\n }\n }\n if (bgColor !== void 0 && bgColor !== null) {\n if (typeof bgColor === \"object\") {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== void 0 && fontColor !== null) {\n if (typeof fontColor === \"object\") {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== void 0 && borderColor !== null) {\n if (typeof borderColor === \"object\") {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== void 0 && shadowing !== null) {\n if (typeof shadowing === \"object\") {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== void 0 && shape !== null) {\n if (typeof shape === \"object\") {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== void 0 && sprite !== null) {\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== void 0 && techn !== null) {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== void 0 && legendText !== null) {\n if (typeof legendText === \"object\") {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== void 0 && legendSprite !== null) {\n if (typeof legendSprite === \"object\") {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n}, \"updateElStyle\");\nvar updateRelStyle = /* @__PURE__ */ __name(function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === void 0) {\n return;\n }\n if (textColor !== void 0 && textColor !== null) {\n if (typeof textColor === \"object\") {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== void 0 && lineColor !== null) {\n if (typeof lineColor === \"object\") {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== void 0 && offsetX !== null) {\n if (typeof offsetX === \"object\") {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== void 0 && offsetY !== null) {\n if (typeof offsetY === \"object\") {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n}, \"updateRelStyle\");\nvar updateLayoutConfig = /* @__PURE__ */ __name(function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow;\n let c4BoundaryInRowValue = c4BoundaryInRow;\n if (typeof c4ShapeInRowParam === \"object\") {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === \"object\") {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow = c4BoundaryInRowValue;\n }\n}, \"updateLayoutConfig\");\nvar getC4ShapeInRow = /* @__PURE__ */ __name(function() {\n return c4ShapeInRow;\n}, \"getC4ShapeInRow\");\nvar getC4BoundaryInRow = /* @__PURE__ */ __name(function() {\n return c4BoundaryInRow;\n}, \"getC4BoundaryInRow\");\nvar getCurrentBoundaryParse = /* @__PURE__ */ __name(function() {\n return currentBoundaryParse;\n}, \"getCurrentBoundaryParse\");\nvar getParentBoundaryParse = /* @__PURE__ */ __name(function() {\n return parentBoundaryParse;\n}, \"getParentBoundaryParse\");\nvar getC4ShapeArray = /* @__PURE__ */ __name(function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n}, \"getC4ShapeArray\");\nvar getC4Shape = /* @__PURE__ */ __name(function(alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n}, \"getC4Shape\");\nvar getC4ShapeKeys = /* @__PURE__ */ __name(function(parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n}, \"getC4ShapeKeys\");\nvar getBoundaries = /* @__PURE__ */ __name(function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundaries;\n } else {\n return boundaries.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n}, \"getBoundaries\");\nvar getBoundarys = getBoundaries;\nvar getRels = /* @__PURE__ */ __name(function() {\n return rels;\n}, \"getRels\");\nvar getTitle = /* @__PURE__ */ __name(function() {\n return title;\n}, \"getTitle\");\nvar setWrap = /* @__PURE__ */ __name(function(wrapSetting) {\n wrapEnabled = wrapSetting;\n}, \"setWrap\");\nvar autoWrap = /* @__PURE__ */ __name(function() {\n return wrapEnabled;\n}, \"autoWrap\");\nvar clear = /* @__PURE__ */ __name(function() {\n c4ShapeArray = [];\n boundaries = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n ];\n parentBoundaryParse = \"\";\n currentBoundaryParse = \"global\";\n boundaryParseStack = [\"\"];\n rels = [];\n boundaryParseStack = [\"\"];\n title = \"\";\n wrapEnabled = false;\n c4ShapeInRow = 4;\n c4BoundaryInRow = 2;\n}, \"clear\");\nvar LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25\n};\nvar ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nvar PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nvar setTitle = /* @__PURE__ */ __name(function(txt) {\n let sanitizedText = sanitizeText(txt, getConfig());\n title = sanitizedText;\n}, \"setTitle\");\nvar c4Db_default = {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundaries,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: /* @__PURE__ */ __name(() => getConfig().c4, \"getConfig\"),\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type\n // apply,\n};\n\n// src/diagrams/c4/c4Renderer.js\nimport { select } from \"d3\";\n\n// src/diagrams/c4/svgDraw.js\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nvar drawRect2 = /* @__PURE__ */ __name(function(elem, rectData) {\n return drawRect(elem, rectData);\n}, \"drawRect\");\nvar drawImage = /* @__PURE__ */ __name(function(elem, width, height, x, y, link) {\n const imageElem = elem.append(\"image\");\n imageElem.attr(\"width\", width);\n imageElem.attr(\"height\", height);\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n let sanitizedLink = link.startsWith(\"data:image/png;base64\") ? link : sanitizeUrl(link);\n imageElem.attr(\"xlink:href\", sanitizedLink);\n}, \"drawImage\");\nvar drawRels = /* @__PURE__ */ __name((elem, rels2, conf2) => {\n const relsElem = elem.append(\"g\");\n let i = 0;\n for (let rel of rels2) {\n let textColor = rel.textColor ? rel.textColor : \"#444444\";\n let strokeColor = rel.lineColor ? rel.lineColor : \"#444444\";\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n let url = \"\";\n if (i === 0) {\n let line = relsElem.append(\"line\");\n line.attr(\"x1\", rel.startPoint.x);\n line.attr(\"y1\", rel.startPoint.y);\n line.attr(\"x2\", rel.endPoint.x);\n line.attr(\"y2\", rel.endPoint.y);\n line.attr(\"stroke-width\", \"1\");\n line.attr(\"stroke\", strokeColor);\n line.style(\"fill\", \"none\");\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n i = -1;\n } else {\n let line = relsElem.append(\"path\");\n line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\n \"controlx\",\n rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4\n ).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y)\n );\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n }\n let messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n if (rel.techn && rel.techn.text !== \"\") {\n messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n \"[\" + rel.techn.text + \"]\",\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, \"font-style\": \"italic\" },\n messageConf\n );\n }\n }\n}, \"drawRels\");\nvar drawBoundary = /* @__PURE__ */ __name(function(elem, boundary, conf2) {\n const boundaryElem = elem.append(\"g\");\n let fillColor = boundary.bgColor ? boundary.bgColor : \"none\";\n let strokeColor = boundary.borderColor ? boundary.borderColor : \"#444444\";\n let fontColor = boundary.fontColor ? boundary.fontColor : \"black\";\n let attrsValue = { \"stroke-width\": 1, \"stroke-dasharray\": \"7.0,7.0\" };\n if (boundary.nodeType) {\n attrsValue = { \"stroke-width\": 1 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue\n };\n drawRect2(boundaryElem, rectData);\n let boundaryConf = conf2.boundaryFont();\n boundaryConf.fontWeight = \"bold\";\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n if (boundary.type && boundary.type.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n if (boundary.descr && boundary.descr.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n}, \"drawBoundary\");\nvar drawC4Shape = /* @__PURE__ */ __name(function(elem, c4Shape, conf2) {\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf2[c4Shape.typeC4Shape.text + \"_bg_color\"];\n let strokeColor = c4Shape.borderColor ? c4Shape.borderColor : conf2[c4Shape.typeC4Shape.text + \"_border_color\"];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : \"#FFFFFF\";\n let personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n break;\n case \"external_person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\";\n break;\n }\n const c4ShapeElem = elem.append(\"g\");\n c4ShapeElem.attr(\"class\", \"person-man\");\n const rect = getNoteRect();\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n case \"system\":\n case \"external_system\":\n case \"container\":\n case \"external_container\":\n case \"component\":\n case \"external_component\":\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { \"stroke-width\": 0.5 };\n drawRect2(c4ShapeElem, rect);\n break;\n case \"system_db\":\n case \"external_system_db\":\n case \"container_db\":\n case \"external_container_db\":\n case \"component_db\":\n case \"external_component_db\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2).replaceAll(\"height\", c4Shape.height)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2)\n );\n break;\n case \"system_queue\":\n case \"external_system_queue\":\n case \"container_queue\":\n case \"external_container_queue\":\n case \"component_queue\":\n case \"external_component_queue\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"width\", c4Shape.width).replaceAll(\"half\", c4Shape.height / 2)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\".replaceAll(\"startx\", c4Shape.x + c4Shape.width).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.height / 2)\n );\n break;\n }\n let c4ShapeFontConf = getC4ShapeFont(conf2, c4Shape.typeC4Shape.text);\n c4ShapeElem.append(\"text\").attr(\"fill\", fontColor).attr(\"font-family\", c4ShapeFontConf.fontFamily).attr(\"font-size\", c4ShapeFontConf.fontSize - 2).attr(\"font-style\", \"italic\").attr(\"lengthAdjust\", \"spacing\").attr(\"textLength\", c4Shape.typeC4Shape.width).attr(\"x\", c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2).attr(\"y\", c4Shape.y + c4Shape.typeC4Shape.Y).text(\"<<\" + c4Shape.typeC4Shape.text + \">>\");\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n let textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontWeight = \"bold\";\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontColor = fontColor;\n if (c4Shape.techn && c4Shape.techn?.text !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n }\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n textFontConf = conf2.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n return c4Shape.height;\n}, \"drawC4Shape\");\nvar insertDatabaseIcon = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n}, \"insertDatabaseIcon\");\nvar insertComputerIcon = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n}, \"insertComputerIcon\");\nvar insertClockIcon = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n}, \"insertClockIcon\");\nvar insertArrowHead = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n}, \"insertArrowHead\");\nvar insertArrowEnd = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowend\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\");\n}, \"insertArrowEnd\");\nvar insertArrowFilledHead = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n}, \"insertArrowFilledHead\");\nvar insertDynamicNumber = /* @__PURE__ */ __name(function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n}, \"insertDynamicNumber\");\nvar insertArrowCrossHead = /* @__PURE__ */ __name(function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 16).attr(\"refY\", 4);\n marker.append(\"path\").attr(\"fill\", \"black\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 9,2 V 6 L16,4 Z\");\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 0,1 L 6,7 M 6,1 L 0,7\");\n}, \"insertArrowCrossHead\");\nvar getC4ShapeFont = /* @__PURE__ */ __name((cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n}, \"getC4ShapeFont\");\nvar _drawTextCandidateFunc = /* @__PURE__ */ (function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n __name(byText, \"byText\");\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { fontSize, fontFamily, fontWeight } = conf2;\n const lines = content.split(common_default.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - fontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"font-size\", fontSize).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily);\n text.append(\"tspan\").attr(\"dy\", dy).text(lines[i]).attr(\"alignment-baseline\", \"mathematical\");\n _setTextAttrs(text, textAttrs);\n }\n }\n __name(byTspan, \"byTspan\");\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n __name(byFo, \"byFo\");\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n __name(_setTextAttrs, \"_setTextAttrs\");\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n})();\nvar svgDraw_default = {\n drawRect: drawRect2,\n drawBoundary,\n drawC4Shape,\n drawRels,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertDynamicNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon\n};\n\n// src/diagrams/c4/c4Renderer.js\nvar globalBoundaryMaxX = 0;\nvar globalBoundaryMaxY = 0;\nvar c4ShapeInRow2 = 4;\nvar c4BoundaryInRow2 = 2;\nparser.yy = c4Db_default;\nvar conf = {};\nvar Bounds = class {\n static {\n __name(this, \"Bounds\");\n }\n constructor(diagObj) {\n this.name = \"\";\n this.data = {};\n this.data.startx = void 0;\n this.data.stopx = void 0;\n this.data.starty = void 0;\n this.data.stopy = void 0;\n this.data.widthLimit = void 0;\n this.nextData = {};\n this.nextData.startx = void 0;\n this.nextData.stopx = void 0;\n this.nextData.starty = void 0;\n this.nextData.stopy = void 0;\n this.nextData.cnt = 0;\n setConf(diagObj.db.getConfig());\n }\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n updateVal(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + c4Shape.margin : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (_startx >= this.data.widthLimit || _stopx >= this.data.widthLimit || this.nextData.cnt > c4ShapeInRow2) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n this.updateVal(this.data, \"startx\", _startx, Math.min);\n this.updateVal(this.data, \"starty\", _starty, Math.min);\n this.updateVal(this.data, \"stopx\", _stopx, Math.max);\n this.updateVal(this.data, \"stopy\", _stopy, Math.max);\n this.updateVal(this.nextData, \"startx\", _startx, Math.min);\n this.updateVal(this.nextData, \"starty\", _starty, Math.min);\n this.updateVal(this.nextData, \"stopx\", _stopx, Math.max);\n this.updateVal(this.nextData, \"stopy\", _stopy, Math.max);\n }\n init(diagObj) {\n this.name = \"\";\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n widthLimit: void 0\n };\n this.nextData = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n cnt: 0\n };\n setConf(diagObj.db.getConfig());\n }\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n};\nvar setConf = /* @__PURE__ */ __name(function(cnf) {\n assignWithDepth_default(conf, cnf);\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n}, \"setConf\");\nvar c4ShapeFont = /* @__PURE__ */ __name((cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n}, \"c4ShapeFont\");\nvar boundaryFont = /* @__PURE__ */ __name((cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight\n };\n}, \"boundaryFont\");\nvar messageFont = /* @__PURE__ */ __name((cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n}, \"messageFont\");\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(common_default.lineBreakRegex).length;\n c4Shape[textType].width = textLimitWidth;\n c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(common_default.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n calculateTextWidth(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = calculateTextHeight(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n }\n }\n}\n__name(calcC4ShapeTextWH, \"calcC4ShapeTextWH\");\nvar drawBoundary2 = /* @__PURE__ */ __name(function(diagram2, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n boundary.label.y = conf.c4ShapeMargin - 35;\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = \"bold\";\n let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n svgDraw_default.drawBoundary(diagram2, boundary, conf);\n}, \"drawBoundary\");\nvar drawC4ShapeArray = /* @__PURE__ */ __name(function(currentBounds, diagram2, c4ShapeArray2, c4ShapeKeys) {\n let Y = 0;\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray2[c4ShapeKey];\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = calculateTextWidth(\n \"\\xAB\" + c4Shape.typeC4Shape.text + \"\\xBB\",\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\"label\", c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape.label.Y = Y + 8;\n Y = c4Shape.label.Y + c4Shape.label.height;\n if (c4Shape.type && c4Shape.type.text !== \"\") {\n c4Shape.type.text = \"[\" + c4Shape.type.text + \"]\";\n let c4ShapeTypeConf2 = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"type\", c4Shape, c4ShapeTextWrap, c4ShapeTypeConf2, textLimitWidth);\n c4Shape.type.Y = Y + 5;\n Y = c4Shape.type.Y + c4Shape.type.height;\n } else if (c4Shape.techn && c4Shape.techn.text !== \"\") {\n c4Shape.techn.text = \"[\" + c4Shape.techn.text + \"]\";\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH(\"techn\", c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape.techn.Y = Y + 5;\n Y = c4Shape.techn.Y + c4Shape.techn.height;\n }\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"descr\", c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape.descr.Y = Y + 20;\n Y = c4Shape.descr.Y + c4Shape.descr.height;\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape.descr.textLines * 5;\n }\n rectWidth = rectWidth + conf.c4ShapePadding;\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n currentBounds.insert(c4Shape);\n svgDraw_default.drawC4Shape(diagram2, c4Shape, conf);\n }\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n}, \"drawC4ShapeArray\");\nvar Point = class {\n static {\n __name(this, \"Point\");\n }\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n};\nvar getIntersectPoint = /* @__PURE__ */ __name(function(fromNode, endPoint) {\n let x1 = fromNode.x;\n let y1 = fromNode.y;\n let x2 = endPoint.x;\n let y2 = endPoint.y;\n let fromCenterX = x1 + fromNode.width / 2;\n let fromCenterY = y1 + fromNode.height / 2;\n let dx = Math.abs(x1 - x2);\n let dy = Math.abs(y1 - y2);\n let tanDYX = dy / dx;\n let fromDYX = fromNode.height / fromNode.width;\n let returnPoint = null;\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n }\n }\n return returnPoint;\n}, \"getIntersectPoint\");\nvar getIntersectPoints = /* @__PURE__ */ __name(function(fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint, endPoint };\n}, \"getIntersectPoints\");\nvar drawRels2 = /* @__PURE__ */ __name(function(diagram2, rels2, getC4ShapeObj, diagObj) {\n let i = 0;\n for (let rel of rels2) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === \"C4Dynamic\") {\n rel.label.text = i + \": \" + rel.label.text;\n }\n let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n if (rel.techn && rel.techn.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n }\n if (rel.descr && rel.descr.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n }\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw_default.drawRels(diagram2, rels2, conf);\n}, \"drawRels\");\nfunction drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n let currentBounds = new Bounds(diagObj);\n currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow2, currentBoundaries.length);\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\n \"label\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.label.Y = Y + 8;\n Y = currentBoundary.label.Y + currentBoundary.label.height;\n if (currentBoundary.type && currentBoundary.type.text !== \"\") {\n currentBoundary.type.text = \"[\" + currentBoundary.type.text + \"]\";\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n \"type\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.type.Y = Y + 5;\n Y = currentBoundary.type.Y + currentBoundary.type.height;\n }\n if (currentBoundary.descr && currentBoundary.descr.text !== \"\") {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n \"descr\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary.descr.Y = Y + 20;\n Y = currentBoundary.descr.Y + currentBoundary.descr.height;\n }\n if (i == 0 || i % c4BoundaryInRow2 === 0) {\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + conf.diagramMarginX : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram2,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundaries = diagObj.db.getBoundaries(parentBoundaryAlias);\n if (nextCurrentBoundaries.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundaries,\n diagObj\n );\n }\n if (currentBoundary.alias !== \"global\") {\n drawBoundary2(diagram2, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\n__name(drawInsideBoundary, \"drawInsideBoundary\");\nvar draw = /* @__PURE__ */ __name(function(_text, id, _version, diagObj) {\n conf = getConfig().c4;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n let db = diagObj.db;\n diagObj.db.setWrap(conf.wrap);\n c4ShapeInRow2 = db.getC4ShapeInRow();\n c4BoundaryInRow2 = db.getC4BoundaryInRow();\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n svgDraw_default.insertComputerIcon(diagram2);\n svgDraw_default.insertDatabaseIcon(diagram2);\n svgDraw_default.insertClockIcon(diagram2);\n let screenBounds = new Bounds(diagObj);\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n const title2 = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundaries(\"\");\n drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n svgDraw_default.insertArrowHead(diagram2);\n svgDraw_default.insertArrowEnd(diagram2);\n svgDraw_default.insertArrowCrossHead(diagram2);\n svgDraw_default.insertArrowFilledHead(diagram2);\n drawRels2(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n const box = screenBounds.data;\n let boxHeight = box.stopy - box.starty;\n let height = boxHeight + 2 * conf.diagramMarginY;\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title2) {\n diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr(\"y\", box.starty + conf.diagramMarginY);\n }\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title2 ? 60 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n log.debug(`models:`, box);\n}, \"draw\");\nvar c4Renderer_default = {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary: drawBoundary2,\n setConf,\n draw\n};\n\n// src/diagrams/c4/styles.js\nvar getStyles = /* @__PURE__ */ __name((options) => `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/c4/c4Diagram.ts\nvar diagram = {\n parser: c4Diagram_default,\n db: c4Db_default,\n renderer: c4Renderer_default,\n styles: styles_default,\n init: /* @__PURE__ */ __name(({ c4, wrap }) => {\n c4Renderer_default.setConf(c4);\n c4Db_default.setWrap(wrap);\n }, \"init\")\n};\nexport {\n diagram\n};\n"],
+ "mappings": "gZAkrDA,IAAAA,GAA4B,WAxpDxBC,IAAU,UAAW,CACvB,IAAIC,EAAoBC,EAAO,SAASC,GAAGC,EAAGC,EAAIC,EAAG,CACnD,IAAKD,EAAKA,GAAM,CAAC,EAAGC,EAAIH,GAAE,OAAQG,IAAKD,EAAGF,GAAEG,CAAC,CAAC,EAAIF,EAAG,CACrD,OAAOC,CACT,EAAG,GAAG,EAAGE,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,EAAG,EAAE,EAAGC,GAAM,CAAC,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,EAAG,EAAE,EAAGC,EAAM,CAAC,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,EAAE,EAAGC,GAAM,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAC3yCC,GAAU,CACZ,MAAuB5D,EAAO,UAAiB,CAC/C,EAAG,OAAO,EACV,GAAI,CAAC,EACL,SAAU,CAAE,MAAS,EAAG,MAAS,EAAG,WAAc,EAAG,UAAa,EAAG,aAAgB,EAAG,aAAgB,EAAG,aAAgB,EAAG,aAAgB,EAAG,YAAe,GAAI,WAAc,GAAI,QAAW,GAAI,WAAc,GAAI,IAAO,GAAI,aAAgB,GAAI,aAAgB,GAAI,WAAc,GAAI,cAAiB,GAAI,gBAAmB,GAAI,kBAAqB,GAAI,eAAkB,GAAI,MAAS,GAAI,eAAkB,GAAI,UAAa,GAAI,gBAAmB,GAAI,UAAa,GAAI,gBAAmB,GAAI,0BAA6B,GAAI,kBAAqB,GAAI,uBAA0B,GAAI,sBAAyB,GAAI,cAAiB,GAAI,OAAU,GAAI,oBAAuB,GAAI,WAAc,GAAI,gBAAmB,GAAI,SAAY,GAAI,mBAAsB,GAAI,KAAQ,GAAI,OAAU,GAAI,OAAU,GAAI,OAAU,GAAI,iBAAoB,GAAI,OAAU,GAAI,WAAc,GAAI,OAAU,GAAI,UAAa,GAAI,aAAgB,GAAI,WAAc,GAAI,cAAiB,GAAI,iBAAoB,GAAI,UAAa,GAAI,aAAgB,GAAI,gBAAmB,GAAI,cAAiB,GAAI,iBAAoB,GAAI,oBAAuB,GAAI,UAAa,GAAI,aAAgB,GAAI,gBAAmB,GAAI,cAAiB,GAAI,iBAAoB,GAAI,oBAAuB,GAAI,IAAO,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,MAAS,GAAI,UAAa,GAAI,gBAAmB,GAAI,iBAAoB,GAAI,qBAAwB,GAAI,UAAa,GAAI,IAAO,GAAI,QAAW,GAAI,UAAa,GAAI,UAAa,GAAI,gBAAmB,GAAI,QAAW,EAAG,KAAQ,CAAE,EACzgD,WAAY,CAAE,EAAG,QAAS,EAAG,eAAgB,EAAG,eAAgB,EAAG,eAAgB,EAAG,eAAgB,GAAI,aAAc,GAAI,UAAW,GAAI,MAAO,GAAI,eAAgB,GAAI,eAAgB,GAAI,aAAc,GAAI,gBAAiB,GAAI,QAAS,GAAI,iBAAkB,GAAI,YAAa,GAAI,kBAAmB,GAAI,YAAa,GAAI,kBAAmB,GAAI,4BAA6B,GAAI,SAAU,GAAI,sBAAuB,GAAI,kBAAmB,GAAI,WAAY,GAAI,qBAAsB,GAAI,OAAQ,GAAI,SAAU,GAAI,SAAU,GAAI,SAAU,GAAI,SAAU,GAAI,aAAc,GAAI,SAAU,GAAI,YAAa,GAAI,eAAgB,GAAI,aAAc,GAAI,gBAAiB,GAAI,mBAAoB,GAAI,YAAa,GAAI,eAAgB,GAAI,kBAAmB,GAAI,gBAAiB,GAAI,mBAAoB,GAAI,sBAAuB,GAAI,YAAa,GAAI,eAAgB,GAAI,kBAAmB,GAAI,gBAAiB,GAAI,mBAAoB,GAAI,sBAAuB,GAAI,MAAO,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,YAAa,GAAI,kBAAmB,GAAI,mBAAoB,GAAI,uBAAwB,GAAI,MAAO,GAAI,UAAW,GAAI,YAAa,GAAI,YAAa,GAAI,iBAAkB,EACtrC,aAAc,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,CAAC,EACrrB,cAA+BA,EAAO,SAAmB6D,EAAQC,EAAQC,EAAUC,EAAIC,EAASC,EAAIC,GAAI,CACtG,IAAIC,EAAKF,EAAG,OAAS,EACrB,OAAQD,EAAS,CACf,IAAK,GACHD,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACHA,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACHA,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACHA,EAAG,aAAa,IAAI,EACpB,MACF,IAAK,GACL,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACHA,EAAG,UAAUE,EAAGE,EAAK,CAAC,CAAC,EACvB,MACF,IAAK,IACHJ,EAAG,SAASE,EAAGE,CAAE,EAAE,UAAU,CAAC,CAAC,EAC/B,KAAK,EAAIF,EAAGE,CAAE,EAAE,UAAU,CAAC,EAC3B,MACF,IAAK,IACHJ,EAAG,kBAAkBE,EAAGE,CAAE,EAAE,UAAU,EAAE,CAAC,EACzC,KAAK,EAAIF,EAAGE,CAAE,EAAE,UAAU,EAAE,EAC5B,MACF,IAAK,IACH,KAAK,EAAIF,EAAGE,CAAE,EAAE,KAAK,EACrBJ,EAAG,SAAS,KAAK,CAAC,EAClB,MACF,IAAK,IACL,IAAK,IACH,KAAK,EAAIE,EAAGE,CAAE,EAAE,KAAK,EACrBJ,EAAG,kBAAkB,KAAK,CAAC,EAC3B,MACF,IAAK,IACHE,EAAGE,CAAE,EAAE,OAAO,EAAG,EAAG,YAAY,EAChCJ,EAAG,0BAA0B,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,OAAO,EAAG,EAAG,QAAQ,EAC5BJ,EAAG,0BAA0B,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,0BAA0B,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,OAAO,EAAG,EAAG,WAAW,EAC/BJ,EAAG,qBAAqB,GAAGE,EAAGE,CAAE,CAAC,EACjC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,OAAQ,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,QAAS,GAAGE,EAAGE,CAAE,CAAC,EACvC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,QAAS,GAAGE,EAAGE,CAAE,CAAC,EACvC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,sBAAsB,EACzB,MACF,IAAK,IACHA,EAAG,kBAAkB,SAAU,GAAGE,EAAGE,CAAE,CAAC,EACxC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EACjD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,SAAU,GAAGE,EAAGE,CAAE,CAAC,EACxC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,YAAa,GAAGE,EAAGE,CAAE,CAAC,EAC3C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,eAAgB,GAAGE,EAAGE,CAAE,CAAC,EAC9C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EACjD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,qBAAsB,GAAGE,EAAGE,CAAE,CAAC,EACpD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,kBAAkB,wBAAyB,GAAGE,EAAGE,CAAE,CAAC,EACvD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,YAAa,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,eAAgB,GAAGE,EAAGE,CAAE,CAAC,EACzC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EAC5C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,qBAAsB,GAAGE,EAAGE,CAAE,CAAC,EAC/C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,wBAAyB,GAAGE,EAAGE,CAAE,CAAC,EAClD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,2BAA4B,GAAGE,EAAGE,CAAE,CAAC,EACrD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,YAAa,GAAGE,EAAGE,CAAE,CAAC,EACtC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,eAAgB,GAAGE,EAAGE,CAAE,CAAC,EACzC,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EAC5C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,qBAAsB,GAAGE,EAAGE,CAAE,CAAC,EAC/C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,wBAAyB,GAAGE,EAAGE,CAAE,CAAC,EAClD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,aAAa,2BAA4B,GAAGE,EAAGE,CAAE,CAAC,EACrD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,MAAO,GAAGE,EAAGE,CAAE,CAAC,EAC1B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,OAAO,QAAS,GAAGE,EAAGE,CAAE,CAAC,EAC5B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,OAAO,EAAG,CAAC,EAClBJ,EAAG,OAAO,MAAO,GAAGE,EAAGE,CAAE,CAAC,EAC1B,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,cAAc,kBAAmB,GAAGE,EAAGE,CAAE,CAAC,EAC7C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,eAAe,mBAAoB,GAAGE,EAAGE,CAAE,CAAC,EAC/C,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACHJ,EAAG,mBAAmB,uBAAwB,GAAGE,EAAGE,CAAE,CAAC,EACvD,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACH,KAAK,EAAI,CAACF,EAAGE,CAAE,CAAC,EAChB,MACF,IAAK,IACHF,EAAGE,CAAE,EAAE,QAAQF,EAAGE,EAAK,CAAC,CAAC,EACzB,KAAK,EAAIF,EAAGE,CAAE,EACd,MACF,IAAK,IACL,IAAK,IACH,KAAK,EAAIF,EAAGE,CAAE,EAAE,KAAK,EACrB,MACF,IAAK,IACH,IAAIC,GAAK,CAAC,EACVA,GAAGH,EAAGE,EAAK,CAAC,EAAE,KAAK,CAAC,EAAIF,EAAGE,CAAE,EAAE,KAAK,EACpC,KAAK,EAAIC,GACT,MACF,IAAK,IACH,KAAK,EAAI,GACT,KACJ,CACF,EAAG,WAAW,EACd,MAAO,CAAC,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,GAAI,EAAG,GAAI,CAAC,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAE,EAAG,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,EAAG,CAAC,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,EAAG,CAAC,EAAG,CAAC,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,CAAC,EAAG,EAAE,CAAE,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIhE,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,EAAI,EAAG,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI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,GACP,MACF,IAAK,IACH,YAAK,MAAM,eAAe,EACnB,GACP,MACF,IAAK,IACH,YAAK,MAAM,YAAY,EAChB,GACP,MACF,IAAK,IACH,YAAK,MAAM,cAAc,EAClB,GACP,MACF,IAAK,IACH,YAAK,MAAM,WAAW,EACf,GACP,MACF,IAAK,IACH,YAAK,MAAM,QAAQ,EACZ,GACP,MACF,IAAK,IACH,YAAK,MAAM,UAAU,EACd,GACP,MACF,IAAK,IACH,YAAK,MAAM,qBAAqB,EACzB,GACP,MACF,IAAK,IACH,YAAK,MAAM,iBAAiB,EACrB,GACP,MACF,IAAK,IACH,YAAK,MAAM,qBAAqB,EACzB,GACP,MACF,IAAK,IACH,YAAK,MAAM,kBAAkB,EACtB,GACP,MACF,IAAK,IACH,YAAK,MAAM,eAAe,EACnB,GACP,MACF,IAAK,IACH,YAAK,MAAM,iBAAiB,EACrB,GACP,MACF,IAAK,IACH,YAAK,MAAM,cAAc,EAClB,GACP,MACF,IAAK,IACH,YAAK,MAAM,WAAW,EACf,GACP,MACF,IAAK,IACH,YAAK,MAAM,oBAAoB,EACxB,GACP,MACF,IAAK,IACH,YAAK,MAAM,qBAAqB,EACzB,GACP,MACF,IAAK,IACH,YAAK,MAAM,kBAAkB,EACtB,GACP,MACF,IAAK,IACH,YAAK,MAAM,eAAe,EACnB,GACP,MACF,IAAK,IACH,YAAK,MAAM,iBAAiB,EACrB,GACP,MACF,IAAK,IACH,YAAK,MAAM,cAAc,EAClB,GACP,MACF,IAAK,IACH,YAAK,MAAM,WAAW,EACf,GACP,MACF,IAAK,IACH,YAAK,MAAM,MAAM,EACV,GACP,MACF,IAAK,IACH,YAAK,MAAM,MAAM,EACV,GACP,MACF,IAAK,IACH,YAAK,MAAM,QAAQ,EACZ,GACP,MACF,IAAK,IACH,YAAK,MAAM,QAAQ,EACZ,GACP,MACF,IAAK,IACH,YAAK,MAAM,KAAK,EACT,GACP,MACF,IAAK,IACH,YAAK,MAAM,OAAO,EACX,GACP,MACF,IAAK,IACH,YAAK,MAAM,OAAO,EACX,GACP,MACF,IAAK,IACH,YAAK,MAAM,OAAO,EACX,GACP,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",
+ "names": ["import_sanitize_url", "parser", "o", "__name", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "kv", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "c2", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "c4Diagram_default", "c4ShapeArray", "boundaryParseStack", "currentBoundaryParse", "parentBoundaryParse", "boundaries", "rels", "title", "wrapEnabled", "c4ShapeInRow", "c4BoundaryInRow", "c4Type", "getC4Type", "setC4Type", "c4TypeParam", "sanitizeText", "getConfig2", "addRel", "type", "from", "to", "label", "techn", "descr", "sprite", "tags", "link", "rel", "old", "rel2", "key", "value", "autoWrap", "addPersonOrSystem", "typeC4Shape", "alias", "personOrSystem", "personOrSystem2", "addContainer", "container", "container2", "addComponent", "component", "component2", "addPersonOrSystemBoundary", "boundary", "boundary2", "addContainerBoundary", "addDeploymentNode", "nodeType", "popBoundaryParseStack", "updateElStyle", "elementName", "bgColor", "fontColor", "borderColor", "shadowing", "shape", "legendText", "legendSprite", "element", "updateRelStyle", "textColor", "lineColor", "offsetX", "offsetY", "updateLayoutConfig", "c4ShapeInRowParam", "c4BoundaryInRowParam", "c4ShapeInRowValue", "c4BoundaryInRowValue", "getC4ShapeInRow", "getC4BoundaryInRow", "getCurrentBoundaryParse", "getParentBoundaryParse", "getC4ShapeArray", "parentBoundary", "getC4Shape", "getC4ShapeKeys", "getBoundaries", "getBoundarys", "getRels", "getTitle", "setWrap", "wrapSetting", "clear", "LINETYPE", "ARROWTYPE", "PLACEMENT", "setTitle", "txt", "c4Db_default", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "drawRect2", "elem", "rectData", "drawRect", "drawImage", "width", "height", "x", "y", "imageElem", "sanitizedLink", "drawRels", "rels2", "conf2", "relsElem", "strokeColor", "url", "line", "messageConf", "_drawTextCandidateFunc", "drawBoundary", "boundaryElem", "fillColor", "attrsValue", "boundaryConf", "drawC4Shape", "c4Shape", "personImg", "c4ShapeElem", "rect", "getNoteRect", "c4ShapeFontConf", "getC4ShapeFont", "textFontConf", "insertDatabaseIcon", "insertComputerIcon", "insertClockIcon", "insertArrowHead", "insertArrowEnd", "insertArrowFilledHead", "insertDynamicNumber", "insertArrowCrossHead", "marker", "cnf", "byText", "content", "g", "textAttrs", "text", "_setTextAttrs", "byTspan", "fontSize", "fontFamily", "fontWeight", "common_default", "dy", "byFo", "s", "toText", "fromTextAttrsDict", "svgDraw_default", "globalBoundaryMaxX", "globalBoundaryMaxY", "c4ShapeInRow2", "c4BoundaryInRow2", "conf", "Bounds", "diagObj", "setConf", "startx", "stopx", "starty", "stopy", "obj", "val", "fun", "_startx", "_stopx", "_starty", "_stopy", "margin", "assignWithDepth_default", "c4ShapeFont", "boundaryFont", "messageFont", "calcC4ShapeTextWH", "textType", "c4ShapeTextWrap", "textConf", "textLimitWidth", "wrapLabel", "calculateTextHeight", "lineHeight", "calculateTextWidth", "drawBoundary2", "diagram2", "bounds", "boundaryTextWrap", "boundaryLabelConf", "drawC4ShapeArray", "currentBounds", "c4ShapeArray2", "c4ShapeKeys", "Y", "c4ShapeKey", "c4ShapeTypeConf", "c4ShapeLabelConf", "c4ShapeTypeConf2", "c4ShapeTechnConf", "rectHeight", "rectWidth", "c4ShapeDescrConf", "Point", "getIntersectPoint", "fromNode", "endPoint", "x1", "y1", "x2", "y2", "fromCenterX", "fromCenterY", "dx", "tanDYX", "fromDYX", "returnPoint", "getIntersectPoints", "endNode", "endIntersectPoint", "startPoint", "drawRels2", "getC4ShapeObj", "relTextWrap", "relConf", "points", "drawInsideBoundary", "parentBoundaryAlias", "parentBounds", "currentBoundaries", "currentBoundary", "currentBoundaryTextWrap", "currentBoundaryLabelConf", "currentBoundaryTypeConf", "currentBoundaryDescrConf", "_x", "_y", "currentPersonOrSystemArray", "currentPersonOrSystemKeys", "nextCurrentBoundaries", "draw", "_text", "id", "_version", "securityLevel", "sandboxElement", "select_default", "root", "db", "log", "screenBounds", "title2", "box", "configureSvgSize", "extraVertForTitle", "c4Renderer_default", "getStyles", "options", "styles_default", "diagram", "c4", "wrap"]
+}
diff --git a/docs/public/chunk-3EE2TK35.min.js b/docs/public/chunk-3EE2TK35.min.js
new file mode 100755
index 0000000..71bee59
--- /dev/null
+++ b/docs/public/chunk-3EE2TK35.min.js
@@ -0,0 +1,86 @@
+import{b as l,c as di,d as M,e as ui}from"./chunk-6TVUEPFY.min.js";var Nt={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<.16666666666666666?t+(e-t)*6*i:i<.5?e:i<.6666666666666666?t+(e-t)*(.6666666666666666-i)*6:t),hsl2rgb:({h:t,s:e,l:i},a)=>{if(!e)return i*2.55;t/=360,e/=100,i/=100;let s=i<.5?i*(1+e):i+e-i*e,c=2*i-s;switch(a){case"r":return Nt.hue2rgb(c,s,t+.3333333333333333)*255;case"g":return Nt.hue2rgb(c,s,t)*255;case"b":return Nt.hue2rgb(c,s,t-.3333333333333333)*255}},rgb2hsl:({r:t,g:e,b:i},a)=>{t/=255,e/=255,i/=255;let s=Math.max(t,e,i),c=Math.min(t,e,i),f=(s+c)/2;if(a==="l")return f*100;if(s===c)return 0;let x=s-c,_=f>.5?x/(2-s-c):x/(s+c);if(a==="s")return _*100;switch(s){case t:return((e-i)/x+(ee>i?Math.min(e,Math.max(i,t)):Math.min(i,Math.max(e,t)),round:t=>Math.round(t*1e10)/1e10},Ci=gr;var Cr={dec2hex:t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}},mi=Cr;var mr={channel:gi,lang:Ci,unit:mi},C=mr;var K={};for(let t=0;t<=255;t++)K[t]=C.unit.dec2hex(t);var k={ALL:0,RGB:1,HSL:2};var Te=class{constructor(){this.type=k.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=k.ALL}is(e){return this.type===e}},pi=Te;var ke=class{constructor(e,i){this.color=i,this.changed=!1,this.data=e,this.type=new pi}set(e,i){return this.color=i,this.changed=!1,this.data=e,this.type.type=k.ALL,this}_ensureHSL(){let e=this.data,{h:i,s:a,l:s}=e;i===void 0&&(e.h=C.channel.rgb2hsl(e,"h")),a===void 0&&(e.s=C.channel.rgb2hsl(e,"s")),s===void 0&&(e.l=C.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r:i,g:a,b:s}=e;i===void 0&&(e.r=C.channel.hsl2rgb(e,"r")),a===void 0&&(e.g=C.channel.hsl2rgb(e,"g")),s===void 0&&(e.b=C.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,i=e.r;return!this.type.is(k.HSL)&&i!==void 0?i:(this._ensureHSL(),C.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,i=e.g;return!this.type.is(k.HSL)&&i!==void 0?i:(this._ensureHSL(),C.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,i=e.b;return!this.type.is(k.HSL)&&i!==void 0?i:(this._ensureHSL(),C.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,i=e.h;return!this.type.is(k.RGB)&&i!==void 0?i:(this._ensureRGB(),C.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,i=e.s;return!this.type.is(k.RGB)&&i!==void 0?i:(this._ensureRGB(),C.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,i=e.l;return!this.type.is(k.RGB)&&i!==void 0?i:(this._ensureRGB(),C.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(k.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(k.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(k.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(k.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(k.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(k.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},fi=ke;var pr=new fi({r:0,g:0,b:0,a:0},"transparent"),tt=pr;var xi={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(xi.re);if(!e)return;let i=e[1],a=parseInt(i,16),s=i.length,c=s%4===0,f=s>4,x=f?1:17,_=f?8:4,L=c?0:-1,H=f?255:15;return tt.set({r:(a>>_*(L+3)&H)*x,g:(a>>_*(L+2)&H)*x,b:(a>>_*(L+1)&H)*x,a:c?(a&H)*x/255:1},t)},stringify:t=>{let{r:e,g:i,b:a,a:s}=t;return s<1?`#${K[Math.round(e)]}${K[Math.round(i)]}${K[Math.round(a)]}${K[Math.round(s*255)]}`:`#${K[Math.round(e)]}${K[Math.round(i)]}${K[Math.round(a)]}`}},rt=xi;var Ht={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{let e=t.match(Ht.hueRe);if(e){let[,i,a]=e;switch(a){case"grad":return C.channel.clamp.h(parseFloat(i)*.9);case"rad":return C.channel.clamp.h(parseFloat(i)*180/Math.PI);case"turn":return C.channel.clamp.h(parseFloat(i)*360)}}return C.channel.clamp.h(parseFloat(t))},parse:t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let i=t.match(Ht.re);if(!i)return;let[,a,s,c,f,x]=i;return tt.set({h:Ht._hue2deg(a),s:C.channel.clamp.s(parseFloat(s)),l:C.channel.clamp.l(parseFloat(c)),a:f?C.channel.clamp.a(x?parseFloat(f)/100:parseFloat(f)):1},t)},stringify:t=>{let{h:e,s:i,l:a,a:s}=t;return s<1?`hsla(${C.lang.round(e)}, ${C.lang.round(i)}%, ${C.lang.round(a)}%, ${s})`:`hsl(${C.lang.round(e)}, ${C.lang.round(i)}%, ${C.lang.round(a)}%)`}},Ft=Ht;var Ut={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();let e=Ut.colors[t];if(e)return rt.parse(e)},stringify:t=>{let e=rt.stringify(t);for(let i in Ut.colors)if(Ut.colors[i]===e)return i}},Be=Ut;var yi={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let i=t.match(yi.re);if(!i)return;let[,a,s,c,f,x,_,L,H]=i;return tt.set({r:C.channel.clamp.r(s?parseFloat(a)*2.55:parseFloat(a)),g:C.channel.clamp.g(f?parseFloat(c)*2.55:parseFloat(c)),b:C.channel.clamp.b(_?parseFloat(x)*2.55:parseFloat(x)),a:L?C.channel.clamp.a(H?parseFloat(L)/100:parseFloat(L)):1},t)},stringify:t=>{let{r:e,g:i,b:a,a:s}=t;return s<1?`rgba(${C.lang.round(e)}, ${C.lang.round(i)}, ${C.lang.round(a)}, ${C.lang.round(s)})`:`rgb(${C.lang.round(e)}, ${C.lang.round(i)}, ${C.lang.round(a)})`}},_t=yi;var fr={format:{keyword:Be,hex:rt,rgb:_t,rgba:_t,hsl:Ft,hsla:Ft},parse:t=>{if(typeof t!="string")return t;let e=rt.parse(t)||_t.parse(t)||Ft.parse(t)||Be.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(k.HSL)||t.data.r===void 0?Ft.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?_t.stringify(t):rt.stringify(t)},B=fr;var xr=(t,e)=>{let i=B.parse(t);for(let a in e)i[a]=C.channel.clamp[a](e[a]);return B.stringify(i)},Gt=xr;var yr=(t,e,i=0,a=1)=>{if(typeof t!="number")return Gt(t,{a:e});let s=tt.set({r:C.channel.clamp.r(t),g:C.channel.clamp.g(e),b:C.channel.clamp.b(i),a:C.channel.clamp.a(a)});return B.stringify(s)},Z=yr;var br=(t,e)=>C.lang.round(B.parse(t)[e]),Tr=br;var kr=t=>{let{r:e,g:i,b:a}=B.parse(t),s=.2126*C.channel.toLinear(e)+.7152*C.channel.toLinear(i)+.0722*C.channel.toLinear(a);return C.lang.round(s)},bi=kr;var Br=t=>bi(t)>=.5,Ti=Br;var Sr=t=>!Ti(t),U=Sr;var Fr=(t,e,i)=>{let a=B.parse(t),s=a[e],c=C.channel.clamp[e](s+i);return s!==c&&(a[e]=c),B.stringify(a)},$t=Fr;var _r=(t,e)=>$t(t,"l",e),d=_r;var Lr=(t,e)=>$t(t,"l",-e),u=Lr;var Ar=(t,e)=>{let i=B.parse(t),a={};for(let s in e)e[s]&&(a[s]=i[s]+e[s]);return Gt(t,a)},o=Ar;var Er=(t,e,i=50)=>{let{r:a,g:s,b:c,a:f}=B.parse(t),{r:x,g:_,b:L,a:H}=B.parse(e),yt=i/100,at=yt*2-1,Q=f-H,lt=((at*Q===-1?at:(at+Q)/(1+at*Q))+1)/2,bt=1-lt,oe=a*lt+x*bt,ae=s*lt+_*bt,nt=c*lt+L*bt,A=f*yt+H*(1-yt);return Z(oe,ae,nt,A)},ki=Er;var vr=(t,e=100)=>{let i=B.parse(t);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,ki(i,t,e)},h=vr;var{entries:Oi,setPrototypeOf:Bi,isFrozen:Or,getPrototypeOf:Mr,getOwnPropertyDescriptor:wr}=Object,{freeze:z,seal:N,create:Mi}=Object,{apply:ve,construct:Oe}=typeof Reflect<"u"&&Reflect;z||(z=function(e){return e});N||(N=function(e){return e});ve||(ve=function(e,i){for(var a=arguments.length,s=new Array(a>2?a-2:0),c=2;c1?i-1:0),s=1;s1?i-1:0),s=1;s2&&arguments[2]!==void 0?arguments[2]:Yt;Bi&&Bi(t,null);let a=e.length;for(;a--;){let s=e[a];if(typeof s=="string"){let c=i(s);c!==s&&(Or(e)||(e[a]=c),s=c)}t[s]=!0}return t}function Wr(t){for(let e=0;e/gm),Gr=N(/\$\{[\w\W]*/gm),$r=N(/^data-[\-\w.\u00B7-\uFFFF]+$/),jr=N(/^aria-[\-\w]+$/),wi=N(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Vr=N(/^(?:\w+script|data):/i),Yr=N(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Di=N(/^html$/i),Xr=N(/^[a-z][.\w]*(-[.\w]+)+$/i),Ei=Object.freeze({__proto__:null,ARIA_ATTR:jr,ATTR_WHITESPACE:Yr,CUSTOM_ELEMENT:Xr,DATA_ATTR:$r,DOCTYPE_NAME:Di,ERB_EXPR:Ur,IS_ALLOWED_URI:wi,IS_SCRIPT_OR_DATA:Vr,MUSTACHE_EXPR:Hr,TMPLIT_EXPR:Gr}),Ot={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Kr=function(){return typeof window>"u"?null:window},Zr=function(e,i){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let a=null,s="data-tt-policy-suffix";i&&i.hasAttribute(s)&&(a=i.getAttribute(s));let c="dompurify"+(a?"#"+a:"");try{return e.createPolicy(c,{createHTML(f){return f},createScriptURL(f){return f}})}catch{return console.warn("TrustedTypes policy "+c+" could not be created."),null}},vi=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Ii(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Kr(),e=m=>Ii(m);if(e.version="3.2.7",e.removed=[],!t||!t.document||t.document.nodeType!==Ot.document||!t.Element)return e.isSupported=!1,e;let{document:i}=t,a=i,s=a.currentScript,{DocumentFragment:c,HTMLTemplateElement:f,Node:x,Element:_,NodeFilter:L,NamedNodeMap:H=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:yt,DOMParser:at,trustedTypes:Q}=t,st=_.prototype,lt=vt(st,"cloneNode"),bt=vt(st,"remove"),oe=vt(st,"nextSibling"),ae=vt(st,"childNodes"),nt=vt(st,"parentNode");if(typeof f=="function"){let m=i.createElement("template");m.content&&m.content.ownerDocument&&(i=m.content.ownerDocument)}let A,Tt="",{implementation:se,createNodeIterator:Zi,createDocumentFragment:Ji,getElementsByTagName:Qi}=i,{importNode:tr}=a,D=vi();e.isSupported=typeof Oi=="function"&&typeof nt=="function"&&se&&se.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:le,ERB_EXPR:ne,TMPLIT_EXPR:he,DATA_ATTR:er,ARIA_ATTR:ir,IS_SCRIPT_OR_DATA:rr,ATTR_WHITESPACE:Pe,CUSTOM_ELEMENT:or}=Ei,{IS_ALLOWED_URI:Ne}=Ei,S=null,He=p({},[...Fi,..._e,...Le,...Ae,..._i]),E=null,Ue=p({},[...Li,...Ee,...Ai,...Vt]),b=Object.seal(Mi(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),kt=null,ce=null,Ge=!0,de=!0,$e=!1,je=!0,ht=!1,Dt=!0,et=!1,ue=!1,ge=!1,ct=!1,It=!1,zt=!1,Ve=!0,Ye=!1,ar="user-content-",Ce=!0,Bt=!1,dt={},ut=null,Xe=p({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ke=null,Ze=p({},["audio","video","img","source","image","track"]),me=null,Je=p({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),qt="http://www.w3.org/1998/Math/MathML",Rt="http://www.w3.org/2000/svg",V="http://www.w3.org/1999/xhtml",gt=V,pe=!1,fe=null,sr=p({},[qt,Rt,V],Se),Wt=p({},["mi","mo","mn","ms","mtext"]),Pt=p({},["annotation-xml"]),lr=p({},["title","style","font","a","script"]),St=null,nr=["application/xhtml+xml","text/html"],hr="text/html",F=null,Ct=null,cr=i.createElement("form"),Qe=function(r){return r instanceof RegExp||r instanceof Function},xe=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Ct&&Ct===r)){if((!r||typeof r!="object")&&(r={}),r=J(r),St=nr.indexOf(r.PARSER_MEDIA_TYPE)===-1?hr:r.PARSER_MEDIA_TYPE,F=St==="application/xhtml+xml"?Se:Yt,S=G(r,"ALLOWED_TAGS")?p({},r.ALLOWED_TAGS,F):He,E=G(r,"ALLOWED_ATTR")?p({},r.ALLOWED_ATTR,F):Ue,fe=G(r,"ALLOWED_NAMESPACES")?p({},r.ALLOWED_NAMESPACES,Se):sr,me=G(r,"ADD_URI_SAFE_ATTR")?p(J(Je),r.ADD_URI_SAFE_ATTR,F):Je,Ke=G(r,"ADD_DATA_URI_TAGS")?p(J(Ze),r.ADD_DATA_URI_TAGS,F):Ze,ut=G(r,"FORBID_CONTENTS")?p({},r.FORBID_CONTENTS,F):Xe,kt=G(r,"FORBID_TAGS")?p({},r.FORBID_TAGS,F):J({}),ce=G(r,"FORBID_ATTR")?p({},r.FORBID_ATTR,F):J({}),dt=G(r,"USE_PROFILES")?r.USE_PROFILES:!1,Ge=r.ALLOW_ARIA_ATTR!==!1,de=r.ALLOW_DATA_ATTR!==!1,$e=r.ALLOW_UNKNOWN_PROTOCOLS||!1,je=r.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ht=r.SAFE_FOR_TEMPLATES||!1,Dt=r.SAFE_FOR_XML!==!1,et=r.WHOLE_DOCUMENT||!1,ct=r.RETURN_DOM||!1,It=r.RETURN_DOM_FRAGMENT||!1,zt=r.RETURN_TRUSTED_TYPE||!1,ge=r.FORCE_BODY||!1,Ve=r.SANITIZE_DOM!==!1,Ye=r.SANITIZE_NAMED_PROPS||!1,Ce=r.KEEP_CONTENT!==!1,Bt=r.IN_PLACE||!1,Ne=r.ALLOWED_URI_REGEXP||wi,gt=r.NAMESPACE||V,Wt=r.MATHML_TEXT_INTEGRATION_POINTS||Wt,Pt=r.HTML_INTEGRATION_POINTS||Pt,b=r.CUSTOM_ELEMENT_HANDLING||{},r.CUSTOM_ELEMENT_HANDLING&&Qe(r.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(b.tagNameCheck=r.CUSTOM_ELEMENT_HANDLING.tagNameCheck),r.CUSTOM_ELEMENT_HANDLING&&Qe(r.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(b.attributeNameCheck=r.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),r.CUSTOM_ELEMENT_HANDLING&&typeof r.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(b.allowCustomizedBuiltInElements=r.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ht&&(de=!1),It&&(ct=!0),dt&&(S=p({},_i),E=[],dt.html===!0&&(p(S,Fi),p(E,Li)),dt.svg===!0&&(p(S,_e),p(E,Ee),p(E,Vt)),dt.svgFilters===!0&&(p(S,Le),p(E,Ee),p(E,Vt)),dt.mathMl===!0&&(p(S,Ae),p(E,Ai),p(E,Vt))),r.ADD_TAGS&&(S===He&&(S=J(S)),p(S,r.ADD_TAGS,F)),r.ADD_ATTR&&(E===Ue&&(E=J(E)),p(E,r.ADD_ATTR,F)),r.ADD_URI_SAFE_ATTR&&p(me,r.ADD_URI_SAFE_ATTR,F),r.FORBID_CONTENTS&&(ut===Xe&&(ut=J(ut)),p(ut,r.FORBID_CONTENTS,F)),Ce&&(S["#text"]=!0),et&&p(S,["html","head","body"]),S.table&&(p(S,["tbody"]),delete kt.tbody),r.TRUSTED_TYPES_POLICY){if(typeof r.TRUSTED_TYPES_POLICY.createHTML!="function")throw Et('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof r.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Et('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');A=r.TRUSTED_TYPES_POLICY,Tt=A.createHTML("")}else A===void 0&&(A=Zr(Q,s)),A!==null&&typeof Tt=="string"&&(Tt=A.createHTML(""));z&&z(r),Ct=r}},ti=p({},[..._e,...Le,...Pr]),ei=p({},[...Ae,...Nr]),dr=function(r){let n=nt(r);(!n||!n.tagName)&&(n={namespaceURI:gt,tagName:"template"});let g=Yt(r.tagName),y=Yt(n.tagName);return fe[r.namespaceURI]?r.namespaceURI===Rt?n.namespaceURI===V?g==="svg":n.namespaceURI===qt?g==="svg"&&(y==="annotation-xml"||Wt[y]):!!ti[g]:r.namespaceURI===qt?n.namespaceURI===V?g==="math":n.namespaceURI===Rt?g==="math"&&Pt[y]:!!ei[g]:r.namespaceURI===V?n.namespaceURI===Rt&&!Pt[y]||n.namespaceURI===qt&&!Wt[y]?!1:!ei[g]&&(lr[g]||!ti[g]):!!(St==="application/xhtml+xml"&&fe[r.namespaceURI]):!1},$=function(r){Lt(e.removed,{element:r});try{nt(r).removeChild(r)}catch{bt(r)}},it=function(r,n){try{Lt(e.removed,{attribute:n.getAttributeNode(r),from:n})}catch{Lt(e.removed,{attribute:null,from:n})}if(n.removeAttribute(r),r==="is")if(ct||It)try{$(n)}catch{}else try{n.setAttribute(r,"")}catch{}},ii=function(r){let n=null,g=null;if(ge)r=" "+r;else{let T=Fe(r,/^[\r\n\t ]+/);g=T&&T[0]}St==="application/xhtml+xml"&>===V&&(r=''+r+"");let y=A?A.createHTML(r):r;if(gt===V)try{n=new at().parseFromString(y,St)}catch{}if(!n||!n.documentElement){n=se.createDocument(gt,"template",null);try{n.documentElement.innerHTML=pe?Tt:y}catch{}}let O=n.body||n.documentElement;return r&&g&&O.insertBefore(i.createTextNode(g),O.childNodes[0]||null),gt===V?Qi.call(n,et?"html":"body")[0]:et?n.documentElement:O},ri=function(r){return Zi.call(r.ownerDocument||r,r,L.SHOW_ELEMENT|L.SHOW_COMMENT|L.SHOW_TEXT|L.SHOW_PROCESSING_INSTRUCTION|L.SHOW_CDATA_SECTION,null)},ye=function(r){return r instanceof yt&&(typeof r.nodeName!="string"||typeof r.textContent!="string"||typeof r.removeChild!="function"||!(r.attributes instanceof H)||typeof r.removeAttribute!="function"||typeof r.setAttribute!="function"||typeof r.namespaceURI!="string"||typeof r.insertBefore!="function"||typeof r.hasChildNodes!="function")},oi=function(r){return typeof x=="function"&&r instanceof x};function Y(m,r,n){jt(m,g=>{g.call(e,r,n,Ct)})}let ai=function(r){let n=null;if(Y(D.beforeSanitizeElements,r,null),ye(r))return $(r),!0;let g=F(r.nodeName);if(Y(D.uponSanitizeElement,r,{tagName:g,allowedTags:S}),Dt&&r.hasChildNodes()&&!oi(r.firstElementChild)&&I(/<[/\w!]/g,r.innerHTML)&&I(/<[/\w!]/g,r.textContent)||r.nodeType===Ot.progressingInstruction||Dt&&r.nodeType===Ot.comment&&I(/<[/\w]/g,r.data))return $(r),!0;if(!S[g]||kt[g]){if(!kt[g]&&li(g)&&(b.tagNameCheck instanceof RegExp&&I(b.tagNameCheck,g)||b.tagNameCheck instanceof Function&&b.tagNameCheck(g)))return!1;if(Ce&&!ut[g]){let y=nt(r)||r.parentNode,O=ae(r)||r.childNodes;if(O&&y){let T=O.length;for(let W=T-1;W>=0;--W){let X=lt(O[W],!0);X.__removalCount=(r.__removalCount||0)+1,y.insertBefore(X,oe(r))}}}return $(r),!0}return r instanceof _&&!dr(r)||(g==="noscript"||g==="noembed"||g==="noframes")&&I(/<\/no(script|embed|frames)/i,r.innerHTML)?($(r),!0):(ht&&r.nodeType===Ot.text&&(n=r.textContent,jt([le,ne,he],y=>{n=At(n,y," ")}),r.textContent!==n&&(Lt(e.removed,{element:r.cloneNode()}),r.textContent=n)),Y(D.afterSanitizeElements,r,null),!1)},si=function(r,n,g){if(Ve&&(n==="id"||n==="name")&&(g in i||g in cr))return!1;if(!(de&&!ce[n]&&I(er,n))){if(!(Ge&&I(ir,n))){if(!E[n]||ce[n]){if(!(li(r)&&(b.tagNameCheck instanceof RegExp&&I(b.tagNameCheck,r)||b.tagNameCheck instanceof Function&&b.tagNameCheck(r))&&(b.attributeNameCheck instanceof RegExp&&I(b.attributeNameCheck,n)||b.attributeNameCheck instanceof Function&&b.attributeNameCheck(n,r))||n==="is"&&b.allowCustomizedBuiltInElements&&(b.tagNameCheck instanceof RegExp&&I(b.tagNameCheck,g)||b.tagNameCheck instanceof Function&&b.tagNameCheck(g))))return!1}else if(!me[n]){if(!I(Ne,At(g,Pe,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&r!=="script"&&zr(g,"data:")===0&&Ke[r])){if(!($e&&!I(rr,At(g,Pe,"")))){if(g)return!1}}}}}}return!0},li=function(r){return r!=="annotation-xml"&&Fe(r,or)},ni=function(r){Y(D.beforeSanitizeAttributes,r,null);let{attributes:n}=r;if(!n||ye(r))return;let g={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:E,forceKeepAttr:void 0},y=n.length;for(;y--;){let O=n[y],{name:T,namespaceURI:W,value:X}=O,mt=F(T),be=X,v=T==="value"?be:qr(be);if(g.attrName=mt,g.attrValue=v,g.keepAttr=!0,g.forceKeepAttr=void 0,Y(D.uponSanitizeAttribute,r,g),v=g.attrValue,Ye&&(mt==="id"||mt==="name")&&(it(T,r),v=ar+v),Dt&&I(/((--!?|])>)|<\/(style|title|textarea)/i,v)){it(T,r);continue}if(mt==="attributename"&&Fe(v,"href")){it(T,r);continue}if(g.forceKeepAttr)continue;if(!g.keepAttr){it(T,r);continue}if(!je&&I(/\/>/i,v)){it(T,r);continue}ht&&jt([le,ne,he],ci=>{v=At(v,ci," ")});let hi=F(r.nodeName);if(!si(hi,mt,v)){it(T,r);continue}if(A&&typeof Q=="object"&&typeof Q.getAttributeType=="function"&&!W)switch(Q.getAttributeType(hi,mt)){case"TrustedHTML":{v=A.createHTML(v);break}case"TrustedScriptURL":{v=A.createScriptURL(v);break}}if(v!==be)try{W?r.setAttributeNS(W,T,v):r.setAttribute(T,v),ye(r)?$(r):Si(e.removed)}catch{it(T,r)}}Y(D.afterSanitizeAttributes,r,null)},ur=function m(r){let n=null,g=ri(r);for(Y(D.beforeSanitizeShadowDOM,r,null);n=g.nextNode();)Y(D.uponSanitizeShadowNode,n,null),ai(n),ni(n),n.content instanceof c&&m(n.content);Y(D.afterSanitizeShadowDOM,r,null)};return e.sanitize=function(m){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,g=null,y=null,O=null;if(pe=!m,pe&&(m=""),typeof m!="string"&&!oi(m))if(typeof m.toString=="function"){if(m=m.toString(),typeof m!="string")throw Et("dirty is not a string, aborting")}else throw Et("toString is not a function");if(!e.isSupported)return m;if(ue||xe(r),e.removed=[],typeof m=="string"&&(Bt=!1),Bt){if(m.nodeName){let X=F(m.nodeName);if(!S[X]||kt[X])throw Et("root node is forbidden and cannot be sanitized in-place")}}else if(m instanceof x)n=ii(""),g=n.ownerDocument.importNode(m,!0),g.nodeType===Ot.element&&g.nodeName==="BODY"||g.nodeName==="HTML"?n=g:n.appendChild(g);else{if(!ct&&!ht&&!et&&m.indexOf("<")===-1)return A&&zt?A.createHTML(m):m;if(n=ii(m),!n)return ct?null:zt?Tt:""}n&&ge&&$(n.firstChild);let T=ri(Bt?m:n);for(;y=T.nextNode();)ai(y),ni(y),y.content instanceof c&&ur(y.content);if(Bt)return m;if(ct){if(It)for(O=Ji.call(n.ownerDocument);n.firstChild;)O.appendChild(n.firstChild);else O=n;return(E.shadowroot||E.shadowrootmode)&&(O=tr.call(a,O,!0)),O}let W=et?n.outerHTML:n.innerHTML;return et&&S["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&I(Di,n.ownerDocument.doctype.name)&&(W="
+`+W),ht&&jt([le,ne,he],X=>{W=At(W,X," ")}),A&&zt?A.createHTML(W):W},e.setConfig=function(){let m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};xe(m),ue=!0},e.clearConfig=function(){Ct=null,ue=!1},e.isValidAttribute=function(m,r,n){Ct||xe({});let g=F(m),y=F(r);return si(g,y,n)},e.addHook=function(m,r){typeof r=="function"&&Lt(D[m],r)},e.removeHook=function(m,r){if(r!==void 0){let n=Dr(D[m],r);return n===-1?void 0:Ir(D[m],n,1)[0]}return Si(D[m])},e.removeHooks=function(m){D[m]=[]},e.removeAllHooks=function(){D=vi()},e}var pt=Ii();var Jr=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,Qr=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,to=/\s*%%.*\n/gm,eo=class extends Error{static{l(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},Zt={},Ts=l(function(t,e){t=t.replace(Jr,"").replace(Qr,"").replace(to,`
+`);for(let[i,{detector:a}]of Object.entries(Zt))if(a(t,e))return i;throw new eo(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),ks=l((...t)=>{for(let{id:e,detector:i,loader:a}of t)Ni(e,i,a)},"registerLazyLoadedDiagrams"),Ni=l((t,e,i)=>{Zt[t]&&M.warn(`Detector with key ${t} already exists. Overwriting.`),Zt[t]={detector:e,loader:i},M.debug(`Detector with key ${t} added${i?" with loader":""}`)},"addDetector"),Bs=l(t=>Zt[t].loader,"getDiagramLoader"),Me=l((t,e,{depth:i=2,clobber:a=!1}={})=>{let s={depth:i,clobber:a};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(c=>Me(t,c,s)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(c=>{t.includes(c)||t.push(c)}),t):t===void 0||i<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(c=>{typeof e[c]=="object"&&(t[c]===void 0||typeof t[c]=="object")?(t[c]===void 0&&(t[c]=Array.isArray(e[c])?[]:{}),t[c]=Me(t[c],e[c],{depth:i-1,clobber:a})):(a||typeof t[c]!="object"&&typeof e[c]!="object")&&(t[c]=e[c])}),t)},"assignWithDepth"),w=Me,te="#ffffff",ee="#f2f2f2",R=l((t,e)=>e?o(t,{s:-40,l:10}):o(t,{s:-40,l:-10}),"mkBorder"),io=class{static{l(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||R(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||R(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||R(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||R(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||h(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||h(this.tertiaryColor),this.lineColor=this.lineColor||h(this.background),this.arrowheadColor=this.arrowheadColor||h(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?u(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||u(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||h(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||d(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||u(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||u(this.mainBkg,10)):(this.rowOdd=this.rowOdd||d(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||d(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[i]=t[i]}),this.updateColors(),e.forEach(i=>{this[i]=t[i]})}},ro=l(t=>{let e=new io;return e.calculate(t),e},"getThemeVariables"),oo=class{static{l(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=d(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=h(this.background),this.secondaryBorderColor=R(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=R(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=d(h("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Z(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=u("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=u(this.sectionBkgColor,10),this.taskBorderColor=Z(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Z(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||d(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||u(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=d(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=d(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=d(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330});for(let t=0;t{this[i]=t[i]}),this.updateColors(),e.forEach(i=>{this[i]=t[i]})}},ao=l(t=>{let e=new oo;return e.calculate(t),e},"getThemeVariables"),so=class{static{l(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=o(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=R(this.primaryColor,this.darkMode),this.secondaryBorderColor=R(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=R(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=Z(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||u(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||u(this.tertiaryColor,40);for(let t=0;t{this[i]==="calculated"&&(this[i]=void 0)}),typeof t!="object"){this.updateColors();return}let e=Object.keys(t);e.forEach(i=>{this[i]=t[i]}),this.updateColors(),e.forEach(i=>{this[i]=t[i]})}},lo=l(t=>{let e=new so;return e.calculate(t),e},"getThemeVariables"),no=class{static{l(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=d("#cde498",10),this.primaryBorderColor=R(this.primaryColor,this.darkMode),this.secondaryBorderColor=R(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=R(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.primaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=u(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||u(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||u(this.tertiaryColor,40);for(let t=0;t{this[i]=t[i]}),this.updateColors(),e.forEach(i=>{this[i]=t[i]})}},ho=l(t=>{let e=new no;return e.calculate(t),e},"getThemeVariables"),co=class{static{l(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=d(this.contrast,55),this.background="#ffffff",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=R(this.primaryColor,this.darkMode),this.secondaryBorderColor=R(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=R(this.tertiaryColor,this.darkMode),this.primaryTextColor=h(this.primaryColor),this.secondaryTextColor=h(this.secondaryColor),this.tertiaryTextColor=h(this.tertiaryColor),this.lineColor=h(this.background),this.textColor=h(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||d(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=d(this.contrast,55),this.border2=this.contrast,this.actorBorder=d(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[i]=t[i]}),this.updateColors(),e.forEach(i=>{this[i]=t[i]})}},uo=l(t=>{let e=new co;return e.calculate(t),e},"getThemeVariables"),ft={base:{getThemeVariables:ro},dark:{getThemeVariables:ao},default:{getThemeVariables:lo},forest:{getThemeVariables:ho},neutral:{getThemeVariables:uo}},j={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},Hi={...j,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:ft.default.getThemeVariables(),sequence:{...j.sequence,messageFont:l(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:l(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:l(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...j.gantt,tickInterval:void 0,useWidth:void 0},c4:{...j.c4,useWidth:void 0,personFont:l(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...j.flowchart,inheritDir:!1},external_personFont:l(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:l(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:l(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:l(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:l(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:l(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:l(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:l(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:l(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:l(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:l(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:l(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:l(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:l(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:l(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:l(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:l(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:l(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:l(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:l(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:l(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...j.pie,useWidth:984},xyChart:{...j.xyChart,useWidth:void 0},requirement:{...j.requirement,useWidth:void 0},packet:{...j.packet},radar:{...j.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},Ui=l((t,e="")=>Object.keys(t).reduce((i,a)=>Array.isArray(t[a])?i:typeof t[a]=="object"&&t[a]!==null?[...i,e+a,...Ui(t[a],"")]:[...i,e+a],[]),"keyify"),go=new Set(Ui(Hi,"")),Co=Hi,we=l(t=>{if(M.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>we(e));return}for(let e of Object.keys(t)){if(M.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!go.has(e)||t[e]==null){M.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){M.debug("sanitizing object",e),we(t[e]);continue}let i=["themeCSS","fontFamily","altFontFamily"];for(let a of i)e.includes(a)&&(M.debug("sanitizing css option",e),t[e]=mo(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let i=t.themeVariables[e];i?.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}M.debug("After sanitization",t)}},"sanitizeDirective"),mo=l(t=>{let e=0,i=0;for(let a of t){if(e{let i=w({},t),a={};for(let s of e)Gi(s),a=w(a,s);if(i=w(i,a),a.theme&&a.theme in ft){let s=w({},Jt),c=w(s.themeVariables||{},a.themeVariables);i.theme&&i.theme in ft&&(i.themeVariables=ft[i.theme].getThemeVariables(c))}return Mt=i,$i(Mt),Mt},"updateCurrentConfig"),vs=l(t=>(P=w({},ie),P=w(P,t),t.theme&&ft[t.theme]&&(P.themeVariables=ft[t.theme].getThemeVariables(t.themeVariables)),re(P,ot),P),"setSiteConfig"),Os=l(t=>{Jt=w({},t)},"saveConfigFromInitialize"),Ms=l(t=>(P=w(P,t),re(P,ot),P),"updateSiteConfig"),ws=l(()=>w({},P),"getSiteConfig"),po=l(t=>($i(t),w(Mt,t),Ie()),"setConfig"),Ie=l(()=>w({},Mt),"getConfig"),Gi=l(t=>{t&&(["secure",...P.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(M.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&Gi(t[e])}))},"sanitize"),Ds=l(t=>{we(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),ot.push(t),re(P,ot)},"addDirective"),Is=l((t=P)=>{ot=[],re(t,ot)},"reset"),fo={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},zi={},xo=l(t=>{zi[t]||(M.warn(fo[t]),zi[t]=!0)},"issueWarning"),$i=l(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&xo("LAZY_LOAD_DEPRECATED")},"checkConfig"),zs=l(()=>{let t={};Jt&&(t=w(t,Jt));for(let e of ot)t=w(t,e);return t},"getUserDefinedConfig"),wt=/ /gi,yo=l(t=>t?Yi(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),bo=(()=>{let t=!1;return()=>{t||(ji(),t=!0)}})();function ji(){let t="data-temp-href-target";pt.addHook("beforeSanitizeAttributes",e=>{e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),pt.addHook("afterSanitizeAttributes",e=>{e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}l(ji,"setupDompurifyHooks");var Vi=l(t=>(bo(),pt.sanitize(t)),"removeScript"),qi=l((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let i=e.securityLevel;i==="antiscript"||i==="strict"?t=Vi(t):i!=="loose"&&(t=Yi(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=So(t))}return t},"sanitizeMore"),xt=l((t,e)=>t&&(e.dompurifyConfig?t=pt.sanitize(qi(t,e),e.dompurifyConfig).toString():t=pt.sanitize(qi(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),To=l((t,e)=>typeof t=="string"?xt(t,e):t.flat().map(i=>xt(i,e)),"sanitizeTextOrArray"),ko=l(t=>wt.test(t),"hasBreaks"),Bo=l(t=>t.split(wt),"splitBreaks"),So=l(t=>t.replace(/#br#/g," "),"placeholderToBreak"),Yi=l(t=>t.replace(wt,"#br#"),"breakToPlaceholder"),Fo=l(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),_o=l(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),Lo=l(function(...t){let e=t.filter(i=>!isNaN(i));return Math.max(...e)},"getMax"),Ao=l(function(...t){let e=t.filter(i=>!isNaN(i));return Math.min(...e)},"getMin"),Rs=l(function(t){let e=t.split(/(,)/),i=[];for(let a=0;a0&&a+1Math.max(0,t.split(e).length-1),"countOccurrence"),Eo=l((t,e)=>{let i=De(t,"~"),a=De(e,"~");return i===1&&a===1},"shouldCombineSets"),vo=l(t=>{let e=De(t,"~"),i=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),i=!0);let a=[...t],s=a.indexOf("~"),c=a.lastIndexOf("~");for(;s!==-1&&c!==-1&&s!==c;)a[s]="<",a[c]=">",s=a.indexOf("~"),c=a.lastIndexOf("~");return i&&a.unshift("~"),a.join("")},"processSet"),Ri=l(()=>window.MathMLElement!==void 0,"isMathMLSupported"),Xt=/\$\$(.*)\$\$/g,Wi=l(t=>(t.match(Xt)?.length??0)>0,"hasKatex"),Ws=l(async(t,e)=>{let i=document.createElement("div");i.innerHTML=await Mo(t,e),i.id="katex-temp",i.style.visibility="hidden",i.style.position="absolute",i.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",i);let s={width:i.clientWidth,height:i.clientHeight};return i.remove(),s},"calculateMathMLDimensions"),Oo=l(async(t,e)=>{if(!Wi(t))return t;if(!(Ri()||e.legacyMathML||e.forceLegacyMathML))return t.replace(Xt,"MathML is unsupported in this environment.");{let{default:i}=await import("./katex-BQXZD77A.min.js"),a=e.forceLegacyMathML||!Ri()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(wt).map(s=>Wi(s)?`${s}
`:`${s}
`).join("").replace(Xt,(s,c)=>i.renderToString(c,{throwOnError:!0,displayMode:!0,output:a}).replace(/\n/g," ").replace(//g,""))}return t.replace(Xt,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),Mo=l(async(t,e)=>xt(await Oo(t,e),e),"renderKatexSanitized"),Ps={getRows:yo,sanitizeText:xt,sanitizeTextOrArray:To,hasBreaks:ko,splitBreaks:Bo,lineBreakRegex:wt,removeScript:Vi,getUrl:Fo,evaluate:_o,getMax:Lo,getMin:Ao},wo=l(function(t,e){for(let i of e)t.attr(i[0],i[1])},"d3Attrs"),Do=l(function(t,e,i){let a=new Map;return i?(a.set("width","100%"),a.set("style",`max-width: ${e}px;`)):(a.set("height",t),a.set("width",e)),a},"calculateSvgSizeAttrs"),Io=l(function(t,e,i,a){let s=Do(e,i,a);wo(t,s)},"configureSvgSize"),zo=l(function(t,e,i,a){let s=e.node().getBBox(),c=s.width,f=s.height;M.info(`SVG bounds: ${c}x${f}`,s);let x=0,_=0;M.info(`Graph bounds: ${x}x${_}`,t),x=c+i*2,_=f+i*2,M.info(`Calculated bounds: ${x}x${_}`),Io(e,_,x,a);let L=`${s.x-i} ${s.y-i} ${s.width+2*i} ${s.height+2*i}`;e.attr("viewBox",L)},"setupGraphViewbox"),Kt={},qo=l((t,e,i)=>{let a="";return t in Kt&&Kt[t]?a=Kt[t](i):M.warn(`No theme found for ${t}`),` & {
+ font-family: ${i.fontFamily};
+ font-size: ${i.fontSize};
+ fill: ${i.textColor}
+ }
+ @keyframes edge-animation-frame {
+ from {
+ stroke-dashoffset: 0;
+ }
+ }
+ @keyframes dash {
+ to {
+ stroke-dashoffset: 0;
+ }
+ }
+ & .edge-animation-slow {
+ stroke-dasharray: 9,5 !important;
+ stroke-dashoffset: 900;
+ animation: dash 50s linear infinite;
+ stroke-linecap: round;
+ }
+ & .edge-animation-fast {
+ stroke-dasharray: 9,5 !important;
+ stroke-dashoffset: 900;
+ animation: dash 20s linear infinite;
+ stroke-linecap: round;
+ }
+ /* Classes common for multiple diagrams */
+
+ & .error-icon {
+ fill: ${i.errorBkgColor};
+ }
+ & .error-text {
+ fill: ${i.errorTextColor};
+ stroke: ${i.errorTextColor};
+ }
+
+ & .edge-thickness-normal {
+ stroke-width: 1px;
+ }
+ & .edge-thickness-thick {
+ stroke-width: 3.5px
+ }
+ & .edge-pattern-solid {
+ stroke-dasharray: 0;
+ }
+ & .edge-thickness-invisible {
+ stroke-width: 0;
+ fill: none;
+ }
+ & .edge-pattern-dashed{
+ stroke-dasharray: 3;
+ }
+ .edge-pattern-dotted {
+ stroke-dasharray: 2;
+ }
+
+ & .marker {
+ fill: ${i.lineColor};
+ stroke: ${i.lineColor};
+ }
+ & .marker.cross {
+ stroke: ${i.lineColor};
+ }
+
+ & svg {
+ font-family: ${i.fontFamily};
+ font-size: ${i.fontSize};
+ }
+ & p {
+ margin: 0
+ }
+
+ ${a}
+
+ ${e}
+`},"getStyles"),Ro=l((t,e)=>{e!==void 0&&(Kt[t]=e)},"addStylesForDiagram"),Ns=qo,Xi={};di(Xi,{clear:()=>Wo,getAccDescription:()=>Uo,getAccTitle:()=>No,getDiagramTitle:()=>$o,setAccDescription:()=>Ho,setAccTitle:()=>Po,setDiagramTitle:()=>Go});var ze="",qe="",Re="",We=l(t=>xt(t,Ie()),"sanitizeText"),Wo=l(()=>{ze="",Re="",qe=""},"clear"),Po=l(t=>{ze=We(t).replace(/^\s+/g,"")},"setAccTitle"),No=l(()=>ze,"getAccTitle"),Ho=l(t=>{Re=We(t).replace(/\n\s+/g,`
+`)},"setAccDescription"),Uo=l(()=>Re,"getAccDescription"),Go=l(t=>{qe=We(t)},"setDiagramTitle"),$o=l(()=>qe,"getDiagramTitle"),Pi=M,jo=ui,Ki=Ie,Hs=po,Us=ie,Vo=l(t=>xt(t,Ki()),"sanitizeText"),Yo=zo,Xo=l(()=>Xi,"getCommonDb"),Qt={},Gs=l((t,e,i)=>{Qt[t]&&Pi.warn(`Diagram with id ${t} already registered. Overwriting.`),Qt[t]=e,i&&Ni(t,i),Ro(t,e.styles),e.injectUtils?.(Pi,jo,Ki,Vo,Yo,Xo(),()=>{})},"registerDiagram"),$s=l(t=>{if(t in Qt)return Qt[t];throw new Ko(t)},"getDiagram"),Ko=class extends Error{static{l(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}};export{Z as a,Tr as b,U as c,d,u as e,pt as f,Jr as g,Qr as h,eo as i,Zt as j,Ts as k,ks as l,Bs as m,w as n,lo as o,ft as p,Co as q,we as r,ie as s,vs as t,Os as u,Ms as v,ws as w,po as x,Ie as y,Ds as z,Is as A,zs as B,wt as C,xt as D,Fo as E,_o as F,Rs as G,Wi as H,Ws as I,Mo as J,Ps as K,Io as L,zo as M,Ns as N,Xi as O,Wo as P,Po as Q,No as R,Ho as S,Uo as T,Go as U,$o as V,Ki as W,Hs as X,Us as Y,Vo as Z,Yo as _,Gs as $,$s as aa};
+/*! Bundled license information:
+
+dompurify/dist/purify.es.mjs:
+ (*! @license DOMPurify 3.2.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.7/LICENSE *)
+*/
+//# sourceMappingURL=chunk-3EE2TK35.min.js.map
diff --git a/docs/public/chunk-3EE2TK35.min.js.map b/docs/public/chunk-3EE2TK35.min.js.map
new file mode 100755
index 0000000..8a96f9a
--- /dev/null
+++ b/docs/public/chunk-3EE2TK35.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/khroma/dist/utils/channel.js", "../../node_modules/khroma/dist/utils/lang.js", "../../node_modules/khroma/dist/utils/unit.js", "../../node_modules/khroma/dist/utils/index.js", "../../node_modules/khroma/dist/constants.js", "../../node_modules/khroma/dist/channels/type.js", "../../node_modules/khroma/dist/channels/index.js", "../../node_modules/khroma/dist/channels/reusable.js", "../../node_modules/khroma/dist/color/hex.js", "../../node_modules/khroma/dist/color/hsl.js", "../../node_modules/khroma/dist/color/keyword.js", "../../node_modules/khroma/dist/color/rgb.js", "../../node_modules/khroma/dist/color/index.js", "../../node_modules/khroma/dist/methods/change.js", "../../node_modules/khroma/dist/methods/rgba.js", "../../node_modules/khroma/dist/methods/channel.js", "../../node_modules/khroma/dist/methods/luminance.js", "../../node_modules/khroma/dist/methods/is_light.js", "../../node_modules/khroma/dist/methods/is_dark.js", "../../node_modules/khroma/dist/methods/adjust_channel.js", "../../node_modules/khroma/dist/methods/lighten.js", "../../node_modules/khroma/dist/methods/darken.js", "../../node_modules/khroma/dist/methods/adjust.js", "../../node_modules/khroma/dist/methods/mix.js", "../../node_modules/khroma/dist/methods/invert.js", "../../node_modules/dompurify/src/utils.ts", "../../node_modules/dompurify/src/tags.ts", "../../node_modules/dompurify/src/attrs.ts", "../../node_modules/dompurify/src/regexp.ts", "../../node_modules/dompurify/src/purify.ts", "../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-ABZYJK2D.mjs"],
+ "sourcesContent": ["/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexport default Channel;\n", "/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexport default Lang;\n", "/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\nexport default Unit;\n", "/* IMPORT */\nimport channel from './channel.js';\nimport lang from './lang.js';\nimport unit from './unit.js';\n/* MAIN */\nconst Utils = {\n channel,\n lang,\n unit\n};\n/* EXPORT */\nexport default Utils;\n", "/* IMPORT */\nimport _ from './utils/index.js';\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\nexport { DEC2HEX, TYPE };\n", "/* IMPORT */\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\nexport default Type;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Type from './type.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new Type();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _.channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _.channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _.channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _.channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _.channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _.channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _.channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _.channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\nexport default Channels;\n", "/* IMPORT */\nimport Channels from './/index.js';\n/* MAIN */\nconst channels = new Channels({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexport default channels;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport { DEC2HEX } from '../constants.js';\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return ChannelsReusable.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}${DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${DEC2HEX[Math.round(r)]}${DEC2HEX[Math.round(g)]}${DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\nexport default Hex;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n h: HSL._hue2deg(h),\n s: _.channel.clamp.s(parseFloat(s)),\n l: _.channel.clamp.l(parseFloat(l)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_.lang.round(h)}, ${_.lang.round(s)}%, ${_.lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\nexport default HSL;\n", "/* IMPORT */\nimport Hex from './hex.js';\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return Hex.parse(hex);\n },\n stringify: (channels) => {\n const hex = Hex.stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\nexport default Keyword;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return ChannelsReusable.set({\n r: _.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)}, ${_.lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_.lang.round(r)}, ${_.lang.round(g)}, ${_.lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\nexport default RGB;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Hex from './hex.js';\nimport HSL from './hsl.js';\nimport Keyword from './keyword.js';\nimport RGB from './rgb.js';\nimport { TYPE } from '../constants.js';\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: Keyword,\n hex: Hex,\n rgb: RGB,\n rgba: RGB,\n hsl: HSL,\n hsla: HSL\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = Hex.parse(color) || RGB.parse(color) || HSL.parse(color) || Keyword.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(TYPE.HSL) || channels.data.r === undefined) {\n return HSL.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return RGB.stringify(channels);\n }\n else {\n return Hex.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexport default Color;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst change = (color, channels) => {\n const ch = Color.parse(color);\n for (const c in channels) {\n ch[c] = _.channel.clamp[c](channels[c]);\n }\n return Color.stringify(ch);\n};\n/* EXPORT */\nexport default change;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport ChannelsReusable from '../channels/reusable.js';\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return change(r, { a: g });\n const channels = ChannelsReusable.set({\n r: _.channel.clamp.r(r),\n g: _.channel.clamp.g(g),\n b: _.channel.clamp.b(b),\n a: _.channel.clamp.a(a)\n });\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default rgba;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst channel = (color, channel) => {\n return _.lang.round(Color.parse(color)[channel]);\n};\n/* EXPORT */\nexport default channel;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\n//SOURCE: https://planetcalc.com/7779\nconst luminance = (color) => {\n const { r, g, b } = Color.parse(color);\n const luminance = .2126 * _.channel.toLinear(r) + .7152 * _.channel.toLinear(g) + .0722 * _.channel.toLinear(b);\n return _.lang.round(luminance);\n};\n/* EXPORT */\nexport default luminance;\n", "/* IMPORT */\nimport luminance from './luminance.js';\n/* MAIN */\nconst isLight = (color) => {\n return luminance(color) >= .5;\n};\n/* EXPORT */\nexport default isLight;\n", "/* IMPORT */\nimport isLight from './is_light.js';\n/* MAIN */\nconst isDark = (color) => {\n return !isLight(color);\n};\n/* EXPORT */\nexport default isDark;\n", "/* IMPORT */\nimport _ from '../utils/index.js';\nimport Color from '../color/index.js';\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = Color.parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return Color.stringify(channels);\n};\n/* EXPORT */\nexport default adjustChannel;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst lighten = (color, amount) => {\n return adjustChannel(color, 'l', amount);\n};\n/* EXPORT */\nexport default lighten;\n", "/* IMPORT */\nimport adjustChannel from './adjust_channel.js';\n/* MAIN */\nconst darken = (color, amount) => {\n return adjustChannel(color, 'l', -amount);\n};\n/* EXPORT */\nexport default darken;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport change from './change.js';\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = Color.parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change(color, changes);\n};\n/* EXPORT */\nexport default adjust;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport rgba from './rgba.js';\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = Color.parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = Color.parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba(r, g, b, a);\n};\n/* EXPORT */\nexport default mix;\n", "/* IMPORT */\nimport Color from '../color/index.js';\nimport mix from './mix.js';\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = Color.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix(inverse, color, weight);\n};\n/* EXPORT */\nexport default invert;\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x: T): T {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x: T): T {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (\n func: (thisArg: any, ...args: any[]) => T,\n thisArg: any,\n ...args: any[]\n ): T {\n return func.apply(thisArg, args);\n };\n}\n\nif (!construct) {\n construct = function (Func: new (...args: any[]) => T, ...args: any[]): T {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(\n Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record,\n array: readonly any[],\n transformCaseFunc: ReturnType> = stringToLowerCase\n): Record {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as any[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array: T[]): Array {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter>(\n object: T,\n prop: string\n): ReturnType> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'shadow',\n 'slot',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'enterkeyhint',\n 'exportparts',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'inputmode',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'part',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'slot',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'exportparts',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inert',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'part',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'slot',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n 'slot',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "/* eslint-disable @typescript-eslint/indent */\n\nimport type { TrustedHTML, TrustedTypesWindow } from 'trusted-types/lib';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES\n : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS =\n cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS =\n cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = ' ' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n return (\n element instanceof HTMLFormElement &&\n (typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n !(element.attributes instanceof NamedNodeMap) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function (value: unknown): value is Node {\n return typeof Node === 'function' && value instanceof Node;\n };\n\n function _executeHooks(\n hooks: HookFunction[],\n currentNode: Parameters[0],\n data: Parameters[1]\n ): void {\n arrayForEach(hooks, (hook: T) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Work around a security issue with comments inside attributes */\n if (\n SAFE_FOR_XML &&\n regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)\n ) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if ((dirty as Node).nodeName) {\n const tagName = transformCaseFunc((dirty as Node).nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\ntype ArrayElement = T extends Array ? U : never;\n\ntype HookFunction = ArrayElement;\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick;\n", "import {\n __export,\n __name,\n log,\n setLogLevel\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagram-api/regexes.ts\nvar frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\nvar directiveRegex = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nvar anyCommentRegex = /\\s*%%.*\\n/gm;\n\n// src/errors.ts\nvar UnknownDiagramError = class extends Error {\n static {\n __name(this, \"UnknownDiagramError\");\n }\n constructor(message) {\n super(message);\n this.name = \"UnknownDiagramError\";\n }\n};\n\n// src/diagram-api/detectType.ts\nvar detectors = {};\nvar detectType = /* @__PURE__ */ __name(function(text, config2) {\n text = text.replace(frontMatterRegex, \"\").replace(directiveRegex, \"\").replace(anyCommentRegex, \"\\n\");\n for (const [key, { detector }] of Object.entries(detectors)) {\n const diagram = detector(text, config2);\n if (diagram) {\n return key;\n }\n }\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n}, \"detectType\");\nvar registerLazyLoadedDiagrams = /* @__PURE__ */ __name((...diagrams2) => {\n for (const { id, detector, loader } of diagrams2) {\n addDetector(id, detector, loader);\n }\n}, \"registerLazyLoadedDiagrams\");\nvar addDetector = /* @__PURE__ */ __name((key, detector, loader) => {\n if (detectors[key]) {\n log.warn(`Detector with key ${key} already exists. Overwriting.`);\n }\n detectors[key] = { detector, loader };\n log.debug(`Detector with key ${key} added${loader ? \" with loader\" : \"\"}`);\n}, \"addDetector\");\nvar getDiagramLoader = /* @__PURE__ */ __name((key) => {\n return detectors[key].loader;\n}, \"getDiagramLoader\");\n\n// src/assignWithDepth.ts\nvar assignWithDepth = /* @__PURE__ */ __name((dst, src, { depth = 2, clobber = false } = {}) => {\n const config2 = { depth, clobber };\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config2));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === void 0 || depth <= 0) {\n if (dst !== void 0 && dst !== null && typeof dst === \"object\" && typeof src === \"object\") {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== void 0 && typeof dst === \"object\" && typeof src === \"object\") {\n Object.keys(src).forEach((key) => {\n if (typeof src[key] === \"object\" && (dst[key] === void 0 || typeof dst[key] === \"object\")) {\n if (dst[key] === void 0) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || typeof dst[key] !== \"object\" && typeof src[key] !== \"object\") {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n}, \"assignWithDepth\");\nvar assignWithDepth_default = assignWithDepth;\n\n// src/themes/theme-base.js\nimport { adjust as adjust2, darken, invert, isDark, lighten } from \"khroma\";\n\n// src/themes/erDiagram-oldHardcodedValues.ts\nvar oldAttributeBackgroundColorOdd = \"#ffffff\";\nvar oldAttributeBackgroundColorEven = \"#f2f2f2\";\n\n// src/themes/theme-helpers.js\nimport { adjust } from \"khroma\";\nvar mkBorder = /* @__PURE__ */ __name((col, darkMode) => darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 }), \"mkBorder\");\n\n// src/themes/theme-base.js\nvar Theme = class {\n static {\n __name(this, \"Theme\");\n }\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#fff4dd\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n }\n updateColors() {\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? \"#eee\" : \"#333\");\n this.secondaryColor = this.secondaryColor || adjust2(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust2(this.primaryColor, { h: 180, l: 5 });\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || \"#fff5ad\";\n this.noteTextColor = this.noteTextColor || \"#333\";\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n this.border2 = this.border2 || this.tertiaryBorderColor;\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || this.actorBorder;\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || \"white\";\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || \"#eeeeee\";\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || \"lightgrey\";\n this.doneTaskBkgColor = this.doneTaskBkgColor || \"lightgrey\";\n this.doneTaskBorderColor = this.doneTaskBorderColor || \"grey\";\n this.critBorderColor = this.critBorderColor || \"#ff8888\";\n this.critBkgColor = this.critBkgColor || \"red\";\n this.todayLineColor = this.todayLineColor || \"red\";\n this.vertLineColor = this.vertLineColor || \"navy\";\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || \"#003163\";\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n if (this.darkMode) {\n this.rowOdd = this.rowOdd || darken(this.mainBkg, 5) || \"#ffffff\";\n this.rowEven = this.rowEven || darken(this.mainBkg, 10);\n } else {\n this.rowOdd = this.rowOdd || lighten(this.mainBkg, 75) || \"#ffffff\";\n this.rowEven = this.rowEven || lighten(this.mainBkg, 5);\n }\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust2(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust2(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust2(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust2(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust2(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust2(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust2(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust2(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust2(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 25);\n }\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust2(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust2(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n this.classText = this.classText || this.textColor;\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust2(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust2(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust2(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust2(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust2(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust2(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust2(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust2(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust2(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust2(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust2(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust2(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust2(this.primaryColor, { h: 60, l: -20 });\n this.pie11 = this.pie11 || adjust2(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust2(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12\n };\n this.archEdgeColor = this.archEdgeColor || \"#777\";\n this.archEdgeArrowColor = this.archEdgeArrowColor || \"#777\";\n this.archEdgeWidth = this.archEdgeWidth || \"3\";\n this.archGroupBorderColor = this.archGroupBorderColor || \"#000\";\n this.archGroupBorderWidth = this.archGroupBorderWidth || \"2px\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust2(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust2(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust2(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust2(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust2(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust2(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette: this.xyChart?.plotColorPalette || \"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust2(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust2(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust2(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust2(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust2(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nvar getThemeVariables = /* @__PURE__ */ __name((userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-dark.js\nimport { adjust as adjust3, darken as darken2, invert as invert2, isDark as isDark2, lighten as lighten2, rgba } from \"khroma\";\nvar Theme2 = class {\n static {\n __name(this, \"Theme\");\n }\n constructor() {\n this.background = \"#333\";\n this.primaryColor = \"#1f2020\";\n this.secondaryColor = lighten2(this.primaryColor, 16);\n this.tertiaryColor = adjust3(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert2(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert2(this.primaryColor);\n this.secondaryTextColor = invert2(this.secondaryColor);\n this.tertiaryTextColor = invert2(this.tertiaryColor);\n this.lineColor = invert2(this.background);\n this.textColor = invert2(this.background);\n this.mainBkg = \"#1f2020\";\n this.secondBkg = \"calculated\";\n this.mainContrastColor = \"lightgrey\";\n this.darkTextColor = lighten2(invert2(\"#323D47\"), 10);\n this.lineColor = \"calculated\";\n this.border1 = \"#ccc\";\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = \"calculated\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#181818\";\n this.textColor = \"#ccc\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#F9FFFE\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"calculated\";\n this.activationBkgColor = \"calculated\";\n this.sequenceNumberColor = \"black\";\n this.sectionBkgColor = darken2(\"#EAE8D9\", 30);\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"#EAE8D9\";\n this.excludeBkgColor = darken2(this.sectionBkgColor, 10);\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = \"calculated\";\n this.taskTextColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = \"#81B1DB\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#E83737\";\n this.critBkgColor = \"#E83737\";\n this.taskTextDarkColor = \"calculated\";\n this.todayLineColor = \"#DB5757\";\n this.vertLineColor = \"#00BFFF\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.archEdgeColor = \"calculated\";\n this.archEdgeArrowColor = \"calculated\";\n this.archEdgeWidth = \"3\";\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = \"2px\";\n this.rowOdd = this.rowOdd || lighten2(this.mainBkg, 5) || \"#ffffff\";\n this.rowEven = this.rowEven || darken2(this.mainBkg, 10);\n this.labelColor = \"calculated\";\n this.errorBkgColor = \"#a44141\";\n this.errorTextColor = \"#ddd\";\n }\n updateColors() {\n this.secondBkg = lighten2(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten2(this.labelBackground, 25);\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.actorBorder;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten2(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#555\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#f4f4f4\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust3(this.primaryColor, { h: 64 });\n this.fillType3 = adjust3(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust3(this.primaryColor, { h: -64 });\n this.fillType5 = adjust3(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust3(this.primaryColor, { h: 128 });\n this.fillType7 = adjust3(this.secondaryColor, { h: 128 });\n this.cScale1 = this.cScale1 || \"#0b0000\";\n this.cScale2 = this.cScale2 || \"#4d1037\";\n this.cScale3 = this.cScale3 || \"#3f5258\";\n this.cScale4 = this.cScale4 || \"#4f2f1b\";\n this.cScale5 = this.cScale5 || \"#6e0a0a\";\n this.cScale6 = this.cScale6 || \"#3b0048\";\n this.cScale7 = this.cScale7 || \"#995a01\";\n this.cScale8 = this.cScale8 || \"#154706\";\n this.cScale9 = this.cScale9 || \"#161722\";\n this.cScale10 = this.cScale10 || \"#00296f\";\n this.cScale11 = this.cScale11 || \"#01629c\";\n this.cScale12 = this.cScale12 || \"#010029\";\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust3(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust3(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust3(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust3(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust3(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust3(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust3(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust3(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust3(this.primaryColor, { h: 330 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert2(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten2(this[\"cScale\" + i], 10);\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust3(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust3(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust3(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust3(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust3(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust3(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust3(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust3(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark2(this.quadrant1Fill) ? lighten2(this.quadrant1Fill) : darken2(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette: this.xyChart?.plotColorPalette || \"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22\"\n };\n this.packet = {\n startByteColor: this.primaryTextColor,\n endByteColor: this.primaryTextColor,\n labelColor: this.primaryTextColor,\n titleColor: this.primaryTextColor,\n blockStrokeColor: this.primaryTextColor,\n blockFillColor: this.background\n };\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12\n };\n this.classText = this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken2(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = lighten2(this.secondaryColor, 20);\n this.git1 = lighten2(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten2(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten2(this.pie4 || adjust3(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten2(this.pie5 || adjust3(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten2(this.pie6 || adjust3(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten2(this.pie7 || adjust3(this.primaryColor, { h: 60 }), 10);\n this.git7 = lighten2(this.pie8 || adjust3(this.primaryColor, { h: 120 }), 20);\n this.gitInv0 = this.gitInv0 || invert2(this.git0);\n this.gitInv1 = this.gitInv1 || invert2(this.git1);\n this.gitInv2 = this.gitInv2 || invert2(this.git2);\n this.gitInv3 = this.gitInv3 || invert2(this.git3);\n this.gitInv4 = this.gitInv4 || invert2(this.git4);\n this.gitInv5 = this.gitInv5 || invert2(this.git5);\n this.gitInv6 = this.gitInv6 || invert2(this.git6);\n this.gitInv7 = this.gitInv7 || invert2(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert2(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert2(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || lighten2(this.background, 12);\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || lighten2(this.background, 2);\n this.nodeBorder = this.nodeBorder || \"#999\";\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nvar getThemeVariables2 = /* @__PURE__ */ __name((userOverrides) => {\n const theme = new Theme2();\n theme.calculate(userOverrides);\n return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-default.js\nimport { invert as invert3, lighten as lighten3, rgba as rgba2, adjust as adjust4, darken as darken3, isDark as isDark3 } from \"khroma\";\nvar Theme3 = class {\n static {\n __name(this, \"Theme\");\n }\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#ECECFF\";\n this.secondaryColor = adjust4(this.primaryColor, { h: 120 });\n this.secondaryColor = \"#ffffde\";\n this.tertiaryColor = adjust4(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert3(this.primaryColor);\n this.secondaryTextColor = invert3(this.secondaryColor);\n this.tertiaryTextColor = invert3(this.tertiaryColor);\n this.lineColor = invert3(this.background);\n this.textColor = invert3(this.background);\n this.background = \"white\";\n this.mainBkg = \"#ECECFF\";\n this.secondBkg = \"#ffffde\";\n this.lineColor = \"#333333\";\n this.border1 = \"#9370DB\";\n this.border2 = \"#aaaa33\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"rgba(232,232,232, 0.8)\";\n this.textColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = \"calculated\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.vertLineColor = \"calculated\";\n this.sectionBkgColor = rgba2(102, 102, 255, 0.49);\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#fff400\";\n this.taskBorderColor = \"#534fbc\";\n this.taskBkgColor = \"#8a90dd\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"#534fbc\";\n this.activeTaskBkgColor = \"#bfc7ff\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.vertLineColor = \"navy\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.archEdgeColor = \"calculated\";\n this.archEdgeArrowColor = \"calculated\";\n this.archEdgeWidth = \"3\";\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = \"2px\";\n this.rowOdd = \"calculated\";\n this.rowEven = \"calculated\";\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n this.updateColors();\n }\n updateColors() {\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust4(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust4(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust4(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust4(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust4(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust4(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust4(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust4(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust4(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken3(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken3(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken3(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken3(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust4(this[\"cScale\" + i], { h: 180 });\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust4(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust4(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n if (this.labelTextColor !== \"calculated\") {\n this.cScaleLabel0 = this.cScaleLabel0 || invert3(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert3(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.labelTextColor;\n }\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n this.actorBorder = lighten3(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.actorLineColor = this.actorBorder;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n this.rowOdd = this.rowOdd || lighten3(this.primaryColor, 75) || \"#ffffff\";\n this.rowEven = this.rowEven || lighten3(this.primaryColor, 1);\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust4(this.primaryColor, { h: 64 });\n this.fillType3 = adjust4(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust4(this.primaryColor, { h: -64 });\n this.fillType5 = adjust4(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust4(this.primaryColor, { h: 128 });\n this.fillType7 = adjust4(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust4(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust4(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust4(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust4(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust4(this.primaryColor, { h: 60, l: -20 });\n this.pie8 = this.pie8 || adjust4(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust4(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust4(this.primaryColor, { h: 60, l: -40 });\n this.pie11 = this.pie11 || adjust4(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust4(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust4(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust4(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust4(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust4(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust4(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust4(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark3(this.quadrant1Fill) ? lighten3(this.quadrant1Fill) : darken3(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12\n };\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette: this.xyChart?.plotColorPalette || \"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust4(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust4(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust4(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust4(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust4(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten3(this.git0, 25);\n this.git1 = lighten3(this.git1, 25);\n this.git2 = lighten3(this.git2, 25);\n this.git3 = lighten3(this.git3, 25);\n this.git4 = lighten3(this.git4, 25);\n this.git5 = lighten3(this.git5, 25);\n this.git6 = lighten3(this.git6, 25);\n this.git7 = lighten3(this.git7, 25);\n } else {\n this.git0 = darken3(this.git0, 25);\n this.git1 = darken3(this.git1, 25);\n this.git2 = darken3(this.git2, 25);\n this.git3 = darken3(this.git3, 25);\n this.git4 = darken3(this.git4, 25);\n this.git5 = darken3(this.git5, 25);\n this.git6 = darken3(this.git6, 25);\n this.git7 = darken3(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken3(invert3(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert3(this.git1);\n this.gitInv2 = this.gitInv2 || invert3(this.git2);\n this.gitInv3 = this.gitInv3 || invert3(this.git3);\n this.gitInv4 = this.gitInv4 || invert3(this.git4);\n this.gitInv5 = this.gitInv5 || invert3(this.git5);\n this.gitInv6 = this.gitInv6 || invert3(this.git6);\n this.gitInv7 = this.gitInv7 || invert3(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert3(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert3(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n Object.keys(this).forEach((k) => {\n if (this[k] === \"calculated\") {\n this[k] = void 0;\n }\n });\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nvar getThemeVariables3 = /* @__PURE__ */ __name((userOverrides) => {\n const theme = new Theme3();\n theme.calculate(userOverrides);\n return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-forest.js\nimport { adjust as adjust5, darken as darken4, invert as invert4, isDark as isDark4, lighten as lighten4 } from \"khroma\";\nvar Theme4 = class {\n static {\n __name(this, \"Theme\");\n }\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#cde498\";\n this.secondaryColor = \"#cdffb2\";\n this.background = \"white\";\n this.mainBkg = \"#cde498\";\n this.secondBkg = \"#cdffb2\";\n this.lineColor = \"green\";\n this.border1 = \"#13540c\";\n this.border2 = \"#6eaa49\";\n this.arrowheadColor = \"green\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.tertiaryColor = lighten4(\"#cde498\", 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert4(this.primaryColor);\n this.secondaryTextColor = invert4(this.secondaryColor);\n this.tertiaryTextColor = invert4(this.primaryColor);\n this.lineColor = invert4(this.background);\n this.textColor = invert4(this.background);\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#333\";\n this.edgeLabelBackground = \"#e8e8e8\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"#333\";\n this.signalTextColor = \"#333\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"#326932\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"#6eaa49\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#6eaa49\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"#487e3a\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.vertLineColor = \"#00BFFF\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.archEdgeColor = \"calculated\";\n this.archEdgeArrowColor = \"calculated\";\n this.archEdgeWidth = \"3\";\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = \"2px\";\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n this.actorBorder = darken4(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.actorLineColor = this.actorBorder;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust5(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust5(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust5(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust5(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust5(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust5(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust5(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust5(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust5(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken4(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken4(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken4(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken4(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust5(this[\"cScale\" + i], { h: 180 });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust5(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust5(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n this.rowOdd = this.rowOdd || lighten4(this.mainBkg, 75) || \"#ffffff\";\n this.rowEven = this.rowEven || lighten4(this.mainBkg, 20);\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust5(this.primaryColor, { h: 64 });\n this.fillType3 = adjust5(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust5(this.primaryColor, { h: -64 });\n this.fillType5 = adjust5(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust5(this.primaryColor, { h: 128 });\n this.fillType7 = adjust5(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust5(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust5(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust5(this.tertiaryColor, { h: 40, l: -40 });\n this.pie7 = this.pie7 || adjust5(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust5(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust5(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust5(this.primaryColor, { h: 60, l: -50 });\n this.pie11 = this.pie11 || adjust5(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust5(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust5(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust5(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust5(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust5(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust5(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust5(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark4(this.quadrant1Fill) ? lighten4(this.quadrant1Fill) : darken4(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.packet = {\n startByteColor: this.primaryTextColor,\n endByteColor: this.primaryTextColor,\n labelColor: this.primaryTextColor,\n titleColor: this.primaryTextColor,\n blockStrokeColor: this.primaryTextColor,\n blockFillColor: this.mainBkg\n };\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12\n };\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette: this.xyChart?.plotColorPalette || \"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust5(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust5(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust5(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust5(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust5(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten4(this.git0, 25);\n this.git1 = lighten4(this.git1, 25);\n this.git2 = lighten4(this.git2, 25);\n this.git3 = lighten4(this.git3, 25);\n this.git4 = lighten4(this.git4, 25);\n this.git5 = lighten4(this.git5, 25);\n this.git6 = lighten4(this.git6, 25);\n this.git7 = lighten4(this.git7, 25);\n } else {\n this.git0 = darken4(this.git0, 25);\n this.git1 = darken4(this.git1, 25);\n this.git2 = darken4(this.git2, 25);\n this.git3 = darken4(this.git3, 25);\n this.git4 = darken4(this.git4, 25);\n this.git5 = darken4(this.git5, 25);\n this.git6 = darken4(this.git6, 25);\n this.git7 = darken4(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert4(this.git0);\n this.gitInv1 = this.gitInv1 || invert4(this.git1);\n this.gitInv2 = this.gitInv2 || invert4(this.git2);\n this.gitInv3 = this.gitInv3 || invert4(this.git3);\n this.gitInv4 = this.gitInv4 || invert4(this.git4);\n this.gitInv5 = this.gitInv5 || invert4(this.git5);\n this.gitInv6 = this.gitInv6 || invert4(this.git6);\n this.gitInv7 = this.gitInv7 || invert4(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert4(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert4(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nvar getThemeVariables4 = /* @__PURE__ */ __name((userOverrides) => {\n const theme = new Theme4();\n theme.calculate(userOverrides);\n return theme;\n}, \"getThemeVariables\");\n\n// src/themes/theme-neutral.js\nimport { invert as invert5, darken as darken5, lighten as lighten5, adjust as adjust6, isDark as isDark5 } from \"khroma\";\nvar Theme5 = class {\n static {\n __name(this, \"Theme\");\n }\n constructor() {\n this.primaryColor = \"#eee\";\n this.contrast = \"#707070\";\n this.secondaryColor = lighten5(this.contrast, 55);\n this.background = \"#ffffff\";\n this.tertiaryColor = adjust6(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert5(this.primaryColor);\n this.secondaryTextColor = invert5(this.secondaryColor);\n this.tertiaryTextColor = invert5(this.tertiaryColor);\n this.lineColor = invert5(this.background);\n this.textColor = invert5(this.background);\n this.mainBkg = \"#eee\";\n this.secondBkg = \"calculated\";\n this.lineColor = \"#666\";\n this.border1 = \"#999\";\n this.border2 = \"calculated\";\n this.note = \"#ffa\";\n this.text = \"#333\";\n this.critical = \"#d42\";\n this.done = \"#bbb\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"white\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = this.actorBorder;\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"calculated\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.vertLineColor = \"calculated\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.archEdgeColor = \"calculated\";\n this.archEdgeArrowColor = \"calculated\";\n this.archEdgeWidth = \"3\";\n this.archGroupBorderColor = this.primaryBorderColor;\n this.archGroupBorderWidth = \"2px\";\n this.rowOdd = this.rowOdd || lighten5(this.mainBkg, 75) || \"#ffffff\";\n this.rowEven = this.rowEven || \"#f4f4f4\";\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n this.secondBkg = lighten5(this.contrast, 55);\n this.border2 = this.contrast;\n this.actorBorder = lighten5(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.actorBorder;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = \"#999\";\n this.noteBkgColor = \"#666\";\n this.noteTextColor = \"#fff\";\n this.cScale0 = this.cScale0 || \"#555\";\n this.cScale1 = this.cScale1 || \"#F4F4F4\";\n this.cScale2 = this.cScale2 || \"#555\";\n this.cScale3 = this.cScale3 || \"#BBB\";\n this.cScale4 = this.cScale4 || \"#777\";\n this.cScale5 = this.cScale5 || \"#999\";\n this.cScale6 = this.cScale6 || \"#DDD\";\n this.cScale7 = this.cScale7 || \"#FFF\";\n this.cScale8 = this.cScale8 || \"#DDD\";\n this.cScale9 = this.cScale9 || \"#BBB\";\n this.cScale10 = this.cScale10 || \"#999\";\n this.cScale11 = this.cScale11 || \"#777\";\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert5(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten5(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken5(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1;\n this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust6(this.mainBkg, { l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust6(this.mainBkg, { l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n this.sectionBkgColor = lighten5(this.contrast, 30);\n this.sectionBkgColor2 = lighten5(this.contrast, 30);\n this.taskBorderColor = darken5(this.contrast, 10);\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten5(this.border1, 30);\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken5(this.critBkgColor, 10);\n this.todayLineColor = this.critBkgColor;\n this.vertLineColor = this.critBkgColor;\n this.archEdgeColor = this.lineColor;\n this.archEdgeArrowColor = this.lineColor;\n this.transitionColor = this.transitionColor || \"#000\";\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f4f4f4\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || \"#000\";\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#222\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust6(this.primaryColor, { h: 64 });\n this.fillType3 = adjust6(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust6(this.primaryColor, { h: -64 });\n this.fillType5 = adjust6(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust6(this.primaryColor, { h: 128 });\n this.fillType7 = adjust6(this.secondaryColor, { h: 128 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust6(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust6(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust6(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust6(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust6(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust6(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark5(this.quadrant1Fill) ? lighten5(this.quadrant1Fill) : darken5(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: this.xyChart?.backgroundColor || this.background,\n titleColor: this.xyChart?.titleColor || this.primaryTextColor,\n xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,\n xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,\n xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,\n xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,\n yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,\n yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,\n yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,\n yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,\n plotColorPalette: this.xyChart?.plotColorPalette || \"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0\"\n };\n this.radar = {\n axisColor: this.radar?.axisColor || this.lineColor,\n axisStrokeWidth: this.radar?.axisStrokeWidth || 2,\n axisLabelFontSize: this.radar?.axisLabelFontSize || 12,\n curveOpacity: this.radar?.curveOpacity || 0.5,\n curveStrokeWidth: this.radar?.curveStrokeWidth || 2,\n graticuleColor: this.radar?.graticuleColor || \"#DEDEDE\",\n graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,\n graticuleOpacity: this.radar?.graticuleOpacity || 0.3,\n legendBoxSize: this.radar?.legendBoxSize || 12,\n legendFontSize: this.radar?.legendFontSize || 12\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = darken5(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust6(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust6(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust6(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust6(this.primaryColor, { h: 60 });\n this.git7 = this.pie8 || adjust6(this.primaryColor, { h: 120 });\n this.gitInv0 = this.gitInv0 || invert5(this.git0);\n this.gitInv1 = this.gitInv1 || invert5(this.git1);\n this.gitInv2 = this.gitInv2 || invert5(this.git2);\n this.gitInv3 = this.gitInv3 || invert5(this.git3);\n this.gitInv4 = this.gitInv4 || invert5(this.git4);\n this.gitInv5 = this.gitInv5 || invert5(this.git5);\n this.gitInv6 = this.gitInv6 || invert5(this.git6);\n this.gitInv7 = this.gitInv7 || invert5(this.git7);\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = \"white\";\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = \"white\";\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nvar getThemeVariables5 = /* @__PURE__ */ __name((userOverrides) => {\n const theme = new Theme5();\n theme.calculate(userOverrides);\n return theme;\n}, \"getThemeVariables\");\n\n// src/themes/index.js\nvar themes_default = {\n base: {\n getThemeVariables\n },\n dark: {\n getThemeVariables: getThemeVariables2\n },\n default: {\n getThemeVariables: getThemeVariables3\n },\n forest: {\n getThemeVariables: getThemeVariables4\n },\n neutral: {\n getThemeVariables: getThemeVariables5\n }\n};\n\n// src/schemas/config.schema.yaml?only-defaults=true\nvar config_schema_default = {\n \"flowchart\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"subGraphTitleMargin\": {\n \"top\": 0,\n \"bottom\": 0\n },\n \"diagramPadding\": 8,\n \"htmlLabels\": true,\n \"nodeSpacing\": 50,\n \"rankSpacing\": 50,\n \"curve\": \"basis\",\n \"padding\": 15,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"wrappingWidth\": 200,\n \"inheritDir\": false\n },\n \"sequence\": {\n \"useMaxWidth\": true,\n \"hideUnusedParticipants\": false,\n \"activationWidth\": 10,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"actorMargin\": 50,\n \"width\": 150,\n \"height\": 65,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"mirrorActors\": true,\n \"forceMenus\": false,\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"showSequenceNumbers\": false,\n \"actorFontSize\": 14,\n \"actorFontFamily\": '\"Open Sans\", sans-serif',\n \"actorFontWeight\": 400,\n \"noteFontSize\": 14,\n \"noteFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"noteFontWeight\": 400,\n \"noteAlign\": \"center\",\n \"messageFontSize\": 16,\n \"messageFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"messageFontWeight\": 400,\n \"wrap\": false,\n \"wrapPadding\": 10,\n \"labelBoxWidth\": 50,\n \"labelBoxHeight\": 20\n },\n \"gantt\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"barHeight\": 20,\n \"barGap\": 4,\n \"topPadding\": 50,\n \"rightPadding\": 75,\n \"leftPadding\": 75,\n \"gridLineStartPadding\": 35,\n \"fontSize\": 11,\n \"sectionFontSize\": 11,\n \"numberSectionStyles\": 4,\n \"axisFormat\": \"%Y-%m-%d\",\n \"topAxis\": false,\n \"displayMode\": \"\",\n \"weekday\": \"sunday\"\n },\n \"journey\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"maxLabelWidth\": 360,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"titleColor\": \"\",\n \"titleFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"titleFontSize\": \"4ex\"\n },\n \"class\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"arrowMarkerAbsolute\": false,\n \"dividerMargin\": 10,\n \"padding\": 5,\n \"textHeight\": 10,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"htmlLabels\": false,\n \"hideEmptyMembersBox\": false\n },\n \"state\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"dividerMargin\": 10,\n \"sizeUnit\": 5,\n \"padding\": 8,\n \"textHeight\": 10,\n \"titleShift\": -15,\n \"noteMargin\": 10,\n \"forkWidth\": 70,\n \"forkHeight\": 7,\n \"miniPadding\": 2,\n \"fontSizeFactor\": 5.02,\n \"fontSize\": 24,\n \"labelHeight\": 16,\n \"edgeLengthFactor\": \"20\",\n \"compositTitleSize\": 35,\n \"radius\": 5,\n \"defaultRenderer\": \"dagre-wrapper\"\n },\n \"er\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 20,\n \"layoutDirection\": \"TB\",\n \"minEntityWidth\": 100,\n \"minEntityHeight\": 75,\n \"entityPadding\": 15,\n \"nodeSpacing\": 140,\n \"rankSpacing\": 80,\n \"stroke\": \"gray\",\n \"fill\": \"honeydew\",\n \"fontSize\": 12\n },\n \"pie\": {\n \"useMaxWidth\": true,\n \"textPosition\": 0.75\n },\n \"quadrantChart\": {\n \"useMaxWidth\": true,\n \"chartWidth\": 500,\n \"chartHeight\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"quadrantPadding\": 5,\n \"xAxisLabelPadding\": 5,\n \"yAxisLabelPadding\": 5,\n \"xAxisLabelFontSize\": 16,\n \"yAxisLabelFontSize\": 16,\n \"quadrantLabelFontSize\": 16,\n \"quadrantTextTopPadding\": 5,\n \"pointTextPadding\": 5,\n \"pointLabelFontSize\": 12,\n \"pointRadius\": 5,\n \"xAxisPosition\": \"top\",\n \"yAxisPosition\": \"left\",\n \"quadrantInternalBorderStrokeWidth\": 1,\n \"quadrantExternalBorderStrokeWidth\": 2\n },\n \"xyChart\": {\n \"useMaxWidth\": true,\n \"width\": 700,\n \"height\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"showDataLabel\": false,\n \"showTitle\": true,\n \"xAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"yAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"chartOrientation\": \"vertical\",\n \"plotReservedSpacePercent\": 50\n },\n \"requirement\": {\n \"useMaxWidth\": true,\n \"rect_fill\": \"#f9f9f9\",\n \"text_color\": \"#333\",\n \"rect_border_size\": \"0.5px\",\n \"rect_border_color\": \"#bbb\",\n \"rect_min_width\": 200,\n \"rect_min_height\": 200,\n \"fontSize\": 14,\n \"rect_padding\": 10,\n \"line_height\": 20\n },\n \"mindmap\": {\n \"useMaxWidth\": true,\n \"padding\": 10,\n \"maxNodeWidth\": 200,\n \"layoutAlgorithm\": \"cose-bilkent\"\n },\n \"kanban\": {\n \"useMaxWidth\": true,\n \"padding\": 8,\n \"sectionWidth\": 200,\n \"ticketBaseUrl\": \"\"\n },\n \"timeline\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"disableMulticolor\": false\n },\n \"gitGraph\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"nodeLabel\": {\n \"width\": 75,\n \"height\": 100,\n \"x\": -25,\n \"y\": 0\n },\n \"mainBranchName\": \"main\",\n \"mainBranchOrder\": 0,\n \"showCommitLabel\": true,\n \"showBranches\": true,\n \"rotateCommitLabel\": true,\n \"parallelCommits\": false,\n \"arrowMarkerAbsolute\": false\n },\n \"c4\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"c4ShapeMargin\": 50,\n \"c4ShapePadding\": 20,\n \"width\": 216,\n \"height\": 60,\n \"boxMargin\": 10,\n \"c4ShapeInRow\": 4,\n \"nextLinePaddingX\": 0,\n \"c4BoundaryInRow\": 2,\n \"personFontSize\": 14,\n \"personFontFamily\": '\"Open Sans\", sans-serif',\n \"personFontWeight\": \"normal\",\n \"external_personFontSize\": 14,\n \"external_personFontFamily\": '\"Open Sans\", sans-serif',\n \"external_personFontWeight\": \"normal\",\n \"systemFontSize\": 14,\n \"systemFontFamily\": '\"Open Sans\", sans-serif',\n \"systemFontWeight\": \"normal\",\n \"external_systemFontSize\": 14,\n \"external_systemFontFamily\": '\"Open Sans\", sans-serif',\n \"external_systemFontWeight\": \"normal\",\n \"system_dbFontSize\": 14,\n \"system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"system_dbFontWeight\": \"normal\",\n \"external_system_dbFontSize\": 14,\n \"external_system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_dbFontWeight\": \"normal\",\n \"system_queueFontSize\": 14,\n \"system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"system_queueFontWeight\": \"normal\",\n \"external_system_queueFontSize\": 14,\n \"external_system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_queueFontWeight\": \"normal\",\n \"boundaryFontSize\": 14,\n \"boundaryFontFamily\": '\"Open Sans\", sans-serif',\n \"boundaryFontWeight\": \"normal\",\n \"messageFontSize\": 12,\n \"messageFontFamily\": '\"Open Sans\", sans-serif',\n \"messageFontWeight\": \"normal\",\n \"containerFontSize\": 14,\n \"containerFontFamily\": '\"Open Sans\", sans-serif',\n \"containerFontWeight\": \"normal\",\n \"external_containerFontSize\": 14,\n \"external_containerFontFamily\": '\"Open Sans\", sans-serif',\n \"external_containerFontWeight\": \"normal\",\n \"container_dbFontSize\": 14,\n \"container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"container_dbFontWeight\": \"normal\",\n \"external_container_dbFontSize\": 14,\n \"external_container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_dbFontWeight\": \"normal\",\n \"container_queueFontSize\": 14,\n \"container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"container_queueFontWeight\": \"normal\",\n \"external_container_queueFontSize\": 14,\n \"external_container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_queueFontWeight\": \"normal\",\n \"componentFontSize\": 14,\n \"componentFontFamily\": '\"Open Sans\", sans-serif',\n \"componentFontWeight\": \"normal\",\n \"external_componentFontSize\": 14,\n \"external_componentFontFamily\": '\"Open Sans\", sans-serif',\n \"external_componentFontWeight\": \"normal\",\n \"component_dbFontSize\": 14,\n \"component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"component_dbFontWeight\": \"normal\",\n \"external_component_dbFontSize\": 14,\n \"external_component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_dbFontWeight\": \"normal\",\n \"component_queueFontSize\": 14,\n \"component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"component_queueFontWeight\": \"normal\",\n \"external_component_queueFontSize\": 14,\n \"external_component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_queueFontWeight\": \"normal\",\n \"wrap\": true,\n \"wrapPadding\": 10,\n \"person_bg_color\": \"#08427B\",\n \"person_border_color\": \"#073B6F\",\n \"external_person_bg_color\": \"#686868\",\n \"external_person_border_color\": \"#8A8A8A\",\n \"system_bg_color\": \"#1168BD\",\n \"system_border_color\": \"#3C7FC0\",\n \"system_db_bg_color\": \"#1168BD\",\n \"system_db_border_color\": \"#3C7FC0\",\n \"system_queue_bg_color\": \"#1168BD\",\n \"system_queue_border_color\": \"#3C7FC0\",\n \"external_system_bg_color\": \"#999999\",\n \"external_system_border_color\": \"#8A8A8A\",\n \"external_system_db_bg_color\": \"#999999\",\n \"external_system_db_border_color\": \"#8A8A8A\",\n \"external_system_queue_bg_color\": \"#999999\",\n \"external_system_queue_border_color\": \"#8A8A8A\",\n \"container_bg_color\": \"#438DD5\",\n \"container_border_color\": \"#3C7FC0\",\n \"container_db_bg_color\": \"#438DD5\",\n \"container_db_border_color\": \"#3C7FC0\",\n \"container_queue_bg_color\": \"#438DD5\",\n \"container_queue_border_color\": \"#3C7FC0\",\n \"external_container_bg_color\": \"#B3B3B3\",\n \"external_container_border_color\": \"#A6A6A6\",\n \"external_container_db_bg_color\": \"#B3B3B3\",\n \"external_container_db_border_color\": \"#A6A6A6\",\n \"external_container_queue_bg_color\": \"#B3B3B3\",\n \"external_container_queue_border_color\": \"#A6A6A6\",\n \"component_bg_color\": \"#85BBF0\",\n \"component_border_color\": \"#78A8D8\",\n \"component_db_bg_color\": \"#85BBF0\",\n \"component_db_border_color\": \"#78A8D8\",\n \"component_queue_bg_color\": \"#85BBF0\",\n \"component_queue_border_color\": \"#78A8D8\",\n \"external_component_bg_color\": \"#CCCCCC\",\n \"external_component_border_color\": \"#BFBFBF\",\n \"external_component_db_bg_color\": \"#CCCCCC\",\n \"external_component_db_border_color\": \"#BFBFBF\",\n \"external_component_queue_bg_color\": \"#CCCCCC\",\n \"external_component_queue_border_color\": \"#BFBFBF\"\n },\n \"sankey\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 400,\n \"linkColor\": \"gradient\",\n \"nodeAlignment\": \"justify\",\n \"showValues\": true,\n \"prefix\": \"\",\n \"suffix\": \"\"\n },\n \"block\": {\n \"useMaxWidth\": true,\n \"padding\": 8\n },\n \"packet\": {\n \"useMaxWidth\": true,\n \"rowHeight\": 32,\n \"bitWidth\": 32,\n \"bitsPerRow\": 32,\n \"showBits\": true,\n \"paddingX\": 5,\n \"paddingY\": 5\n },\n \"architecture\": {\n \"useMaxWidth\": true,\n \"padding\": 40,\n \"iconSize\": 80,\n \"fontSize\": 16\n },\n \"radar\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 600,\n \"marginTop\": 50,\n \"marginRight\": 50,\n \"marginBottom\": 50,\n \"marginLeft\": 50,\n \"axisScaleFactor\": 1,\n \"axisLabelFactor\": 1.05,\n \"curveTension\": 0.17\n },\n \"theme\": \"default\",\n \"look\": \"classic\",\n \"handDrawnSeed\": 0,\n \"layout\": \"dagre\",\n \"maxTextSize\": 5e4,\n \"maxEdges\": 500,\n \"darkMode\": false,\n \"fontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif;',\n \"logLevel\": 5,\n \"securityLevel\": \"strict\",\n \"startOnLoad\": true,\n \"arrowMarkerAbsolute\": false,\n \"secure\": [\n \"secure\",\n \"securityLevel\",\n \"startOnLoad\",\n \"maxTextSize\",\n \"suppressErrorRendering\",\n \"maxEdges\"\n ],\n \"legacyMathML\": false,\n \"forceLegacyMathML\": false,\n \"deterministicIds\": false,\n \"fontSize\": 16,\n \"markdownAutoWrap\": true,\n \"suppressErrorRendering\": false\n};\n\n// src/defaultConfig.ts\nvar config = {\n ...config_schema_default,\n // Set, even though they're `undefined` so that `configKeys` finds these keys\n // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n deterministicIDSeed: void 0,\n elk: {\n // mergeEdges is needed here to be considered\n mergeEdges: false,\n nodePlacementStrategy: \"BRANDES_KOEPF\",\n forceNodeModelOrder: false,\n considerModelOrder: \"NODES_AND_EDGES\"\n },\n themeCSS: void 0,\n // add non-JSON default config values\n themeVariables: themes_default.default.getThemeVariables(),\n sequence: {\n ...config_schema_default.sequence,\n messageFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n }, \"messageFont\"),\n noteFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n }, \"noteFont\"),\n actorFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }, \"actorFont\")\n },\n class: {\n hideEmptyMembersBox: false\n },\n gantt: {\n ...config_schema_default.gantt,\n tickInterval: void 0,\n useWidth: void 0\n // can probably be removed since `configKeys` already includes this\n },\n c4: {\n ...config_schema_default.c4,\n useWidth: void 0,\n personFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight\n };\n }, \"personFont\"),\n flowchart: {\n ...config_schema_default.flowchart,\n inheritDir: false\n // default to legacy behavior\n },\n external_personFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight\n };\n }, \"external_personFont\"),\n systemFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight\n };\n }, \"systemFont\"),\n external_systemFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight\n };\n }, \"external_systemFont\"),\n system_dbFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight\n };\n }, \"system_dbFont\"),\n external_system_dbFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight\n };\n }, \"external_system_dbFont\"),\n system_queueFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight\n };\n }, \"system_queueFont\"),\n external_system_queueFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight\n };\n }, \"external_system_queueFont\"),\n containerFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight\n };\n }, \"containerFont\"),\n external_containerFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight\n };\n }, \"external_containerFont\"),\n container_dbFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight\n };\n }, \"container_dbFont\"),\n external_container_dbFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight\n };\n }, \"external_container_dbFont\"),\n container_queueFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight\n };\n }, \"container_queueFont\"),\n external_container_queueFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight\n };\n }, \"external_container_queueFont\"),\n componentFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight\n };\n }, \"componentFont\"),\n external_componentFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight\n };\n }, \"external_componentFont\"),\n component_dbFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight\n };\n }, \"component_dbFont\"),\n external_component_dbFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight\n };\n }, \"external_component_dbFont\"),\n component_queueFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight\n };\n }, \"component_queueFont\"),\n external_component_queueFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight\n };\n }, \"external_component_queueFont\"),\n boundaryFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight\n };\n }, \"boundaryFont\"),\n messageFont: /* @__PURE__ */ __name(function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n }, \"messageFont\")\n },\n pie: {\n ...config_schema_default.pie,\n useWidth: 984\n },\n xyChart: {\n ...config_schema_default.xyChart,\n useWidth: void 0\n },\n requirement: {\n ...config_schema_default.requirement,\n useWidth: void 0\n },\n packet: {\n ...config_schema_default.packet\n },\n radar: {\n ...config_schema_default.radar\n },\n treemap: {\n useMaxWidth: true,\n padding: 10,\n diagramPadding: 8,\n showValues: true,\n nodeWidth: 100,\n nodeHeight: 40,\n borderWidth: 1,\n valueFontSize: 12,\n labelFontSize: 14,\n valueFormat: \",\"\n }\n};\nvar keyify = /* @__PURE__ */ __name((obj, prefix = \"\") => Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === \"object\" && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], \"\")];\n }\n return [...res, prefix + el];\n}, []), \"keyify\");\nvar configKeys = new Set(keyify(config, \"\"));\nvar defaultConfig_default = config;\n\n// src/utils/sanitizeDirective.ts\nvar sanitizeDirective = /* @__PURE__ */ __name((args) => {\n log.debug(\"sanitizeDirective called with\", args);\n if (typeof args !== \"object\" || args == null) {\n return;\n }\n if (Array.isArray(args)) {\n args.forEach((arg) => sanitizeDirective(arg));\n return;\n }\n for (const key of Object.keys(args)) {\n log.debug(\"Checking key\", key);\n if (key.startsWith(\"__\") || key.includes(\"proto\") || key.includes(\"constr\") || !configKeys.has(key) || args[key] == null) {\n log.debug(\"sanitize deleting key: \", key);\n delete args[key];\n continue;\n }\n if (typeof args[key] === \"object\") {\n log.debug(\"sanitizing object\", key);\n sanitizeDirective(args[key]);\n continue;\n }\n const cssMatchers = [\"themeCSS\", \"fontFamily\", \"altFontFamily\"];\n for (const cssKey of cssMatchers) {\n if (key.includes(cssKey)) {\n log.debug(\"sanitizing css option\", key);\n args[key] = sanitizeCss(args[key]);\n }\n }\n }\n if (args.themeVariables) {\n for (const k of Object.keys(args.themeVariables)) {\n const val = args.themeVariables[k];\n if (val?.match && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = \"\";\n }\n }\n }\n log.debug(\"After sanitization\", args);\n}, \"sanitizeDirective\");\nvar sanitizeCss = /* @__PURE__ */ __name((str) => {\n let startCnt = 0;\n let endCnt = 0;\n for (const element of str) {\n if (startCnt < endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n if (element === \"{\") {\n startCnt++;\n } else if (element === \"}\") {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n return str;\n}, \"sanitizeCss\");\n\n// src/config.ts\nvar defaultConfig = Object.freeze(defaultConfig_default);\nvar siteConfig = assignWithDepth_default({}, defaultConfig);\nvar configFromInitialize;\nvar directives = [];\nvar currentConfig = assignWithDepth_default({}, defaultConfig);\nvar updateCurrentConfig = /* @__PURE__ */ __name((siteCfg, _directives) => {\n let cfg = assignWithDepth_default({}, siteCfg);\n let sumOfDirectives = {};\n for (const d of _directives) {\n sanitize(d);\n sumOfDirectives = assignWithDepth_default(sumOfDirectives, d);\n }\n cfg = assignWithDepth_default(cfg, sumOfDirectives);\n if (sumOfDirectives.theme && sumOfDirectives.theme in themes_default) {\n const tmpConfigFromInitialize = assignWithDepth_default({}, configFromInitialize);\n const themeVariables = assignWithDepth_default(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in themes_default) {\n cfg.themeVariables = themes_default[cfg.theme].getThemeVariables(themeVariables);\n }\n }\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n}, \"updateCurrentConfig\");\nvar setSiteConfig = /* @__PURE__ */ __name((conf) => {\n siteConfig = assignWithDepth_default({}, defaultConfig);\n siteConfig = assignWithDepth_default(siteConfig, conf);\n if (conf.theme && themes_default[conf.theme]) {\n siteConfig.themeVariables = themes_default[conf.theme].getThemeVariables(conf.themeVariables);\n }\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n}, \"setSiteConfig\");\nvar saveConfigFromInitialize = /* @__PURE__ */ __name((conf) => {\n configFromInitialize = assignWithDepth_default({}, conf);\n}, \"saveConfigFromInitialize\");\nvar updateSiteConfig = /* @__PURE__ */ __name((conf) => {\n siteConfig = assignWithDepth_default(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n}, \"updateSiteConfig\");\nvar getSiteConfig = /* @__PURE__ */ __name(() => {\n return assignWithDepth_default({}, siteConfig);\n}, \"getSiteConfig\");\nvar setConfig = /* @__PURE__ */ __name((conf) => {\n checkConfig(conf);\n assignWithDepth_default(currentConfig, conf);\n return getConfig();\n}, \"setConfig\");\nvar getConfig = /* @__PURE__ */ __name(() => {\n return assignWithDepth_default({}, currentConfig);\n}, \"getConfig\");\nvar sanitize = /* @__PURE__ */ __name((options) => {\n if (!options) {\n return;\n }\n [\"secure\", ...siteConfig.secure ?? []].forEach((key) => {\n if (Object.hasOwn(options, key)) {\n log.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (key.startsWith(\"__\")) {\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === \"string\" && (options[key].includes(\"<\") || options[key].includes(\">\") || options[key].includes(\"url(data:\"))) {\n delete options[key];\n }\n if (typeof options[key] === \"object\") {\n sanitize(options[key]);\n }\n });\n}, \"sanitize\");\nvar addDirective = /* @__PURE__ */ __name((directive) => {\n sanitizeDirective(directive);\n if (directive.fontFamily && !directive.themeVariables?.fontFamily) {\n directive.themeVariables = {\n ...directive.themeVariables,\n fontFamily: directive.fontFamily\n };\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n}, \"addDirective\");\nvar reset = /* @__PURE__ */ __name((config2 = siteConfig) => {\n directives = [];\n updateCurrentConfig(config2, directives);\n}, \"reset\");\nvar ConfigWarning = {\n LAZY_LOAD_DEPRECATED: \"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\"\n};\nvar issuedWarnings = {};\nvar issueWarning = /* @__PURE__ */ __name((warning) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n}, \"issueWarning\");\nvar checkConfig = /* @__PURE__ */ __name((config2) => {\n if (!config2) {\n return;\n }\n if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {\n issueWarning(\"LAZY_LOAD_DEPRECATED\");\n }\n}, \"checkConfig\");\nvar getUserDefinedConfig = /* @__PURE__ */ __name(() => {\n let userConfig = {};\n if (configFromInitialize) {\n userConfig = assignWithDepth_default(userConfig, configFromInitialize);\n }\n for (const d of directives) {\n userConfig = assignWithDepth_default(userConfig, d);\n }\n return userConfig;\n}, \"getUserDefinedConfig\");\n\n// src/diagrams/common/common.ts\nimport DOMPurify from \"dompurify\";\nvar lineBreakRegex = / /gi;\nvar getRows = /* @__PURE__ */ __name((s) => {\n if (!s) {\n return [\"\"];\n }\n const str = breakToPlaceholder(s).replace(/\\\\n/g, \"#br#\");\n return str.split(\"#br#\");\n}, \"getRows\");\nvar setupDompurifyHooksIfNotSetup = /* @__PURE__ */ (() => {\n let setup = false;\n return () => {\n if (!setup) {\n setupDompurifyHooks();\n setup = true;\n }\n };\n})();\nfunction setupDompurifyHooks() {\n const TEMPORARY_ATTRIBUTE = \"data-temp-href-target\";\n DOMPurify.addHook(\"beforeSanitizeAttributes\", (node) => {\n if (node.tagName === \"A\" && node.hasAttribute(\"target\")) {\n node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute(\"target\") ?? \"\");\n }\n });\n DOMPurify.addHook(\"afterSanitizeAttributes\", (node) => {\n if (node.tagName === \"A\" && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {\n node.setAttribute(\"target\", node.getAttribute(TEMPORARY_ATTRIBUTE) ?? \"\");\n node.removeAttribute(TEMPORARY_ATTRIBUTE);\n if (node.getAttribute(\"target\") === \"_blank\") {\n node.setAttribute(\"rel\", \"noopener\");\n }\n }\n });\n}\n__name(setupDompurifyHooks, \"setupDompurifyHooks\");\nvar removeScript = /* @__PURE__ */ __name((txt) => {\n setupDompurifyHooksIfNotSetup();\n const sanitizedText = DOMPurify.sanitize(txt);\n return sanitizedText;\n}, \"removeScript\");\nvar sanitizeMore = /* @__PURE__ */ __name((text, config2) => {\n if (config2.flowchart?.htmlLabels !== false) {\n const level = config2.securityLevel;\n if (level === \"antiscript\" || level === \"strict\") {\n text = removeScript(text);\n } else if (level !== \"loose\") {\n text = breakToPlaceholder(text);\n text = text.replace(//g, \">\");\n text = text.replace(/=/g, \"=\");\n text = placeholderToBreak(text);\n }\n }\n return text;\n}, \"sanitizeMore\");\nvar sanitizeText = /* @__PURE__ */ __name((text, config2) => {\n if (!text) {\n return text;\n }\n if (config2.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), config2.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), {\n FORBID_TAGS: [\"style\"]\n }).toString();\n }\n return text;\n}, \"sanitizeText\");\nvar sanitizeTextOrArray = /* @__PURE__ */ __name((a, config2) => {\n if (typeof a === \"string\") {\n return sanitizeText(a, config2);\n }\n return a.flat().map((x) => sanitizeText(x, config2));\n}, \"sanitizeTextOrArray\");\nvar hasBreaks = /* @__PURE__ */ __name((text) => {\n return lineBreakRegex.test(text);\n}, \"hasBreaks\");\nvar splitBreaks = /* @__PURE__ */ __name((text) => {\n return text.split(lineBreakRegex);\n}, \"splitBreaks\");\nvar placeholderToBreak = /* @__PURE__ */ __name((s) => {\n return s.replace(/#br#/g, \" \");\n}, \"placeholderToBreak\");\nvar breakToPlaceholder = /* @__PURE__ */ __name((s) => {\n return s.replace(lineBreakRegex, \"#br#\");\n}, \"breakToPlaceholder\");\nvar getUrl = /* @__PURE__ */ __name((useAbsolute) => {\n let url = \"\";\n if (useAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = CSS.escape(url);\n }\n return url;\n}, \"getUrl\");\nvar evaluate = /* @__PURE__ */ __name((val) => val === false || [\"false\", \"null\", \"0\"].includes(String(val).trim().toLowerCase()) ? false : true, \"evaluate\");\nvar getMax = /* @__PURE__ */ __name(function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n}, \"getMax\");\nvar getMin = /* @__PURE__ */ __name(function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n}, \"getMin\");\nvar parseGenericTypes = /* @__PURE__ */ __name(function(input) {\n const inputSets = input.split(/(,)/);\n const output = [];\n for (let i = 0; i < inputSets.length; i++) {\n let thisSet = inputSets[i];\n if (thisSet === \",\" && i > 0 && i + 1 < inputSets.length) {\n const previousSet = inputSets[i - 1];\n const nextSet = inputSets[i + 1];\n if (shouldCombineSets(previousSet, nextSet)) {\n thisSet = previousSet + \",\" + nextSet;\n i++;\n output.pop();\n }\n }\n output.push(processSet(thisSet));\n }\n return output.join(\"\");\n}, \"parseGenericTypes\");\nvar countOccurrence = /* @__PURE__ */ __name((string, substring) => {\n return Math.max(0, string.split(substring).length - 1);\n}, \"countOccurrence\");\nvar shouldCombineSets = /* @__PURE__ */ __name((previousSet, nextSet) => {\n const prevCount = countOccurrence(previousSet, \"~\");\n const nextCount = countOccurrence(nextSet, \"~\");\n return prevCount === 1 && nextCount === 1;\n}, \"shouldCombineSets\");\nvar processSet = /* @__PURE__ */ __name((input) => {\n const tildeCount = countOccurrence(input, \"~\");\n let hasStartingTilde = false;\n if (tildeCount <= 1) {\n return input;\n }\n if (tildeCount % 2 !== 0 && input.startsWith(\"~\")) {\n input = input.substring(1);\n hasStartingTilde = true;\n }\n const chars = [...input];\n let first = chars.indexOf(\"~\");\n let last = chars.lastIndexOf(\"~\");\n while (first !== -1 && last !== -1 && first !== last) {\n chars[first] = \"<\";\n chars[last] = \">\";\n first = chars.indexOf(\"~\");\n last = chars.lastIndexOf(\"~\");\n }\n if (hasStartingTilde) {\n chars.unshift(\"~\");\n }\n return chars.join(\"\");\n}, \"processSet\");\nvar isMathMLSupported = /* @__PURE__ */ __name(() => window.MathMLElement !== void 0, \"isMathMLSupported\");\nvar katexRegex = /\\$\\$(.*)\\$\\$/g;\nvar hasKatex = /* @__PURE__ */ __name((text) => (text.match(katexRegex)?.length ?? 0) > 0, \"hasKatex\");\nvar calculateMathMLDimensions = /* @__PURE__ */ __name(async (text, config2) => {\n const divElem = document.createElement(\"div\");\n divElem.innerHTML = await renderKatexSanitized(text, config2);\n divElem.id = \"katex-temp\";\n divElem.style.visibility = \"hidden\";\n divElem.style.position = \"absolute\";\n divElem.style.top = \"0\";\n const body = document.querySelector(\"body\");\n body?.insertAdjacentElement(\"beforeend\", divElem);\n const dim = { width: divElem.clientWidth, height: divElem.clientHeight };\n divElem.remove();\n return dim;\n}, \"calculateMathMLDimensions\");\nvar renderKatexUnsanitized = /* @__PURE__ */ __name(async (text, config2) => {\n if (!hasKatex(text)) {\n return text;\n }\n if (!(isMathMLSupported() || config2.legacyMathML || config2.forceLegacyMathML)) {\n return text.replace(katexRegex, \"MathML is unsupported in this environment.\");\n }\n if (true) {\n const { default: katex } = await import(\"katex\");\n const outputMode = config2.forceLegacyMathML || !isMathMLSupported() && config2.legacyMathML ? \"htmlAndMathml\" : \"mathml\";\n return text.split(lineBreakRegex).map(\n (line) => hasKatex(line) ? `${line}
` : `${line}
`\n ).join(\"\").replace(\n katexRegex,\n (_, c) => katex.renderToString(c, {\n throwOnError: true,\n displayMode: true,\n output: outputMode\n }).replace(/\\n/g, \" \").replace(//g, \"\")\n );\n }\n return text.replace(\n katexRegex,\n \"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.\"\n );\n}, \"renderKatexUnsanitized\");\nvar renderKatexSanitized = /* @__PURE__ */ __name(async (text, config2) => {\n return sanitizeText(await renderKatexUnsanitized(text, config2), config2);\n}, \"renderKatexSanitized\");\nvar common_default = {\n getRows,\n sanitizeText,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin\n};\n\n// src/setupGraphViewbox.js\nvar d3Attrs = /* @__PURE__ */ __name(function(d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n}, \"d3Attrs\");\nvar calculateSvgSizeAttrs = /* @__PURE__ */ __name(function(height, width, useMaxWidth) {\n let attrs = /* @__PURE__ */ new Map();\n if (useMaxWidth) {\n attrs.set(\"width\", \"100%\");\n attrs.set(\"style\", `max-width: ${width}px;`);\n } else {\n attrs.set(\"height\", height);\n attrs.set(\"width\", width);\n }\n return attrs;\n}, \"calculateSvgSizeAttrs\");\nvar configureSvgSize = /* @__PURE__ */ __name(function(svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n}, \"configureSvgSize\");\nvar setupGraphViewbox = /* @__PURE__ */ __name(function(graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n log.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n let width = 0;\n let height = 0;\n log.info(`Graph bounds: ${width}x${height}`, graph);\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n log.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;\n svgElem.attr(\"viewBox\", vBox);\n}, \"setupGraphViewbox\");\n\n// src/styles.ts\nvar themes = {};\nvar getStyles = /* @__PURE__ */ __name((type, userStyles, options) => {\n let diagramStyles = \"\";\n if (type in themes && themes[type]) {\n diagramStyles = themes[type](options);\n } else {\n log.warn(`No theme found for ${type}`);\n }\n return ` & {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${options.errorBkgColor};\n }\n & .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 1px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n & .marker.cross {\n stroke: ${options.lineColor};\n }\n\n & svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${diagramStyles}\n\n ${userStyles}\n`;\n}, \"getStyles\");\nvar addStylesForDiagram = /* @__PURE__ */ __name((type, diagramTheme) => {\n if (diagramTheme !== void 0) {\n themes[type] = diagramTheme;\n }\n}, \"addStylesForDiagram\");\nvar styles_default = getStyles;\n\n// src/diagrams/common/commonDb.ts\nvar commonDb_exports = {};\n__export(commonDb_exports, {\n clear: () => clear,\n getAccDescription: () => getAccDescription,\n getAccTitle: () => getAccTitle,\n getDiagramTitle: () => getDiagramTitle,\n setAccDescription: () => setAccDescription,\n setAccTitle: () => setAccTitle,\n setDiagramTitle: () => setDiagramTitle\n});\nvar accTitle = \"\";\nvar diagramTitle = \"\";\nvar accDescription = \"\";\nvar sanitizeText2 = /* @__PURE__ */ __name((txt) => sanitizeText(txt, getConfig()), \"sanitizeText\");\nvar clear = /* @__PURE__ */ __name(() => {\n accTitle = \"\";\n accDescription = \"\";\n diagramTitle = \"\";\n}, \"clear\");\nvar setAccTitle = /* @__PURE__ */ __name((txt) => {\n accTitle = sanitizeText2(txt).replace(/^\\s+/g, \"\");\n}, \"setAccTitle\");\nvar getAccTitle = /* @__PURE__ */ __name(() => accTitle, \"getAccTitle\");\nvar setAccDescription = /* @__PURE__ */ __name((txt) => {\n accDescription = sanitizeText2(txt).replace(/\\n\\s+/g, \"\\n\");\n}, \"setAccDescription\");\nvar getAccDescription = /* @__PURE__ */ __name(() => accDescription, \"getAccDescription\");\nvar setDiagramTitle = /* @__PURE__ */ __name((txt) => {\n diagramTitle = sanitizeText2(txt);\n}, \"setDiagramTitle\");\nvar getDiagramTitle = /* @__PURE__ */ __name(() => diagramTitle, \"getDiagramTitle\");\n\n// src/diagram-api/diagramAPI.ts\nvar log2 = log;\nvar setLogLevel2 = setLogLevel;\nvar getConfig2 = getConfig;\nvar setConfig2 = setConfig;\nvar defaultConfig2 = defaultConfig;\nvar sanitizeText3 = /* @__PURE__ */ __name((text) => sanitizeText(text, getConfig2()), \"sanitizeText\");\nvar setupGraphViewbox2 = setupGraphViewbox;\nvar getCommonDb = /* @__PURE__ */ __name(() => {\n return commonDb_exports;\n}, \"getCommonDb\");\nvar diagrams = {};\nvar registerDiagram = /* @__PURE__ */ __name((id, diagram, detector) => {\n if (diagrams[id]) {\n log2.warn(`Diagram with id ${id} already registered. Overwriting.`);\n }\n diagrams[id] = diagram;\n if (detector) {\n addDetector(id, detector);\n }\n addStylesForDiagram(id, diagram.styles);\n diagram.injectUtils?.(\n log2,\n setLogLevel2,\n getConfig2,\n sanitizeText3,\n setupGraphViewbox2,\n getCommonDb(),\n () => {\n }\n );\n}, \"registerDiagram\");\nvar getDiagram = /* @__PURE__ */ __name((name) => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new DiagramNotFoundError(name);\n}, \"getDiagram\");\nvar DiagramNotFoundError = class extends Error {\n static {\n __name(this, \"DiagramNotFoundError\");\n }\n constructor(name) {\n super(`Diagram ${name} not found.`);\n }\n};\n\nexport {\n assignWithDepth_default,\n getThemeVariables3 as getThemeVariables,\n themes_default,\n defaultConfig_default,\n sanitizeDirective,\n defaultConfig,\n setSiteConfig,\n saveConfigFromInitialize,\n updateSiteConfig,\n getSiteConfig,\n setConfig,\n getConfig,\n addDirective,\n reset,\n getUserDefinedConfig,\n lineBreakRegex,\n sanitizeText,\n getUrl,\n evaluate,\n parseGenericTypes,\n hasKatex,\n calculateMathMLDimensions,\n renderKatexSanitized,\n common_default,\n frontMatterRegex,\n directiveRegex,\n UnknownDiagramError,\n detectors,\n detectType,\n registerLazyLoadedDiagrams,\n getDiagramLoader,\n configureSvgSize,\n setupGraphViewbox,\n styles_default,\n clear,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n commonDb_exports,\n getConfig2,\n setConfig2,\n defaultConfig2,\n sanitizeText3 as sanitizeText2,\n setupGraphViewbox2,\n registerDiagram,\n getDiagram\n};\n"],
+ "mappings": "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SAASK,GACPN,EACAO,EAAY,CAEZ,KAAOP,IAAW,MAAM,CACtB,IAAMQ,EAAO5E,GAAyBoE,EAAQO,CAAI,EAElD,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOxD,EAAQuD,EAAKC,GAAG,EAGzB,GAAI,OAAOD,EAAKL,OAAU,WACxB,OAAOlD,EAAQuD,EAAKL,KAAK,CAE7B,CAEAH,EAASrE,GAAeqE,CAAM,CAChC,CAEA,SAASU,GAAa,CACpB,OAAO,IACT,CAEA,OAAOA,CACT,CCjNO,IAAMC,GAAO7E,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACG,EAEG8E,GAAM9E,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACC,EAEG+E,GAAa/E,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACN,EAMGgF,GAAgBhF,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACG,EAEGiF,GAASjF,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACL,EAIGkF,GAAmBlF,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACE,EAEGmF,GAAOnF,EAAO,CAAC,OAAO,CAAU,EC3RhC6E,GAAO7E,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,MAAM,CACE,EAEG8E,GAAM9E,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAAY,CACJ,EAEGiF,GAASjF,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,S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ACf,aAAgB,GAChB,eAAkB,0BAClB,WAAc,GACd,gBAAmB,GACnB,cAAiB,KACjB,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,SACF,EACA,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,eAAkB,CAChB,MACF,EACA,WAAc,GACd,gBAAmB,6CACnB,cAAiB,KACnB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,oBAAuB,GACvB,cAAiB,GACjB,QAAW,EACX,WAAc,GACd,gBAAmB,gBACnB,WAAc,GACd,oBAAuB,EACzB,EACA,MAAS,CACP,YAAe,GACf,eAAkB,GAClB,cAAiB,GACjB,SAAY,EACZ,QAAW,EACX,WAAc,GACd,WAAc,IACd,WAAc,GACd,UAAa,GACb,WAAc,EACd,YAAe,EACf,eAAkB,KAClB,SAAY,GACZ,YAAe,GACf,iBAAoB,KACpB,kBAAqB,GACrB,OAAU,EACV,gBAAmB,eACrB,EACA,GAAM,CACJ,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,gBAAmB,KACnB,eAAkB,IAClB,gBAAmB,GACnB,cAAiB,GACjB,YAAe,IACf,YAAe,GACf,OAAU,OACV,KAAQ,WACR,SAAY,EACd,EACA,IAAO,CACL,YAAe,GACf,aAAgB,GAClB,EACA,cAAiB,CACf,YAAe,GACf,WAAc,IACd,YAAe,IACf,cAAiB,GACjB,aAAgB,GAChB,gBAAmB,EACnB,kBAAqB,EACrB,kBAAqB,EACrB,mBAAsB,GACtB,mBAAsB,GACtB,sBAAyB,GACzB,uBAA0B,EAC1B,iBAAoB,EACpB,mBAAsB,GACtB,YAAe,EACf,cAAiB,MACjB,cAAiB,OACjB,kCAAqC,EACrC,kCAAqC,CACvC,EACA,QAAW,CACT,YAAe,GACf,MAAS,IACT,OAAU,IACV,cAAiB,GACjB,aAAgB,GAChB,cAAiB,GACjB,UAAa,GACb,MAAS,CACP,KAAQ,4BACR,UAAa,GACb,cAAiB,GACjB,aAAgB,EAChB,UAAa,GACb,cAAiB,GACjB,aAAgB,EAChB,SAAY,GACZ,WAAc,EACd,UAAa,EACb,aAAgB,GAChB,cAAiB,CACnB,EACA,MAAS,CACP,KAAQ,4BACR,UAAa,GACb,cAAiB,GACjB,aAAgB,EAChB,UAAa,GACb,cAAiB,GACjB,aAAgB,EAChB,SAAY,GACZ,WAAc,EACd,UAAa,EACb,aAAgB,GAChB,cAAiB,CACnB,EACA,iBAAoB,WACpB,yBAA4B,EAC9B,EACA,YAAe,CACb,YAAe,GACf,UAAa,UACb,WAAc,OACd,iBAAoB,QACpB,kBAAqB,OACrB,eAAkB,IAClB,gBAAmB,IACnB,SAAY,GACZ,aAAgB,GAChB,YAAe,EACjB,EACA,QAAW,CACT,YAAe,GACf,QAAW,GACX,aAAgB,IAChB,gBAAmB,cACrB,EACA,OAAU,CACR,YAAe,GACf,QAAW,EACX,aAAgB,IAChB,cAAiB,EACnB,EACA,SAAY,CACV,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,WAAc,IACd,MAAS,IACT,OAAU,GACV,UAAa,GACb,cAAiB,EACjB,WAAc,GACd,cAAiB,GACjB,aAAgB,SAChB,gBAAmB,EACnB,YAAe,GACf,aAAgB,GAChB,eAAkB,0BAClB,WAAc,GACd,gBAAmB,GACnB,cAAiB,KACjB,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,SACF,EACA,aAAgB,CACd,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EACA,eAAkB,CAChB,MACF,EACA,kBAAqB,EACvB,EACA,SAAY,CACV,YAAe,GACf,eAAkB,GAClB,eAAkB,EAClB,UAAa,CACX,MAAS,GACT,OAAU,IACV,EAAK,IACL,EAAK,CACP,EACA,eAAkB,OAClB,gBAAmB,EACnB,gBAAmB,GACnB,aAAgB,GAChB,kBAAqB,GACrB,gBAAmB,GACnB,oBAAuB,EACzB,EACA,GAAM,CACJ,YAAe,GACf,eAAkB,GAClB,eAAkB,GAClB,cAAiB,GACjB,eAAkB,GAClB,MAAS,IACT,OAAU,GACV,UAAa,GACb,aAAgB,EAChB,iBAAoB,EACpB,gBAAmB,EACnB,eAAkB,GAClB,iBAAoB,0BACpB,iBAAoB,SACpB,wBAA2B,GAC3B,0BAA6B,0BAC7B,0BAA6B,S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",
+ "names": ["Channel", "r", "g", "b", "h", "s", "l", "a", "c", "n", "p", "q", "t", "channel", "max", "min", "d", "channel_default", "Lang", "number", "lower", "upper", "lang_default", "Unit", "dec", "hex", "unit_default", "Utils", "channel_default", "lang_default", "unit_default", "utils_default", "DEC2HEX", "i", "utils_default", "TYPE", "Type", "TYPE", "type", "type_default", "Channels", "data", "color", "type_default", "TYPE", "h", "s", "l", "utils_default", "r", "g", "b", "a", "channels_default", "channels", "channels_default", "reusable_default", "Hex", "color", "match", "hex", "dec", "length", "hasAlpha", "isFullLength", "multiplier", "bits", "bitsOffset", "mask", "reusable_default", "channels", "r", "g", "b", "a", "DEC2HEX", "hex_default", "HSL", "hue", "match", "number", "unit", "utils_default", "color", "charCode", "h", "l", "a", "isAlphaPercentage", "reusable_default", "channels", "s", "hsl_default", "Keyword", "color", "hex", "hex_default", "channels", "name", "keyword_default", "RGB", "color", "charCode", "match", "r", "isRedPercentage", "g", "isGreenPercentage", "b", "isBluePercentage", "a", "isAlphaPercentage", "reusable_default", "utils_default", "channels", "rgb_default", "Color", "keyword_default", "hex_default", "rgb_default", "hsl_default", "color", "channels", "TYPE", "color_default", "change", "color", "channels", "ch", "color_default", "c", "utils_default", "change_default", "rgba", "r", "g", "b", "change_default", "channels", "reusable_default", "utils_default", "color_default", "rgba_default", "channel", "color", "utils_default", "color_default", "channel_default", "luminance", "color", "r", "g", "b", "color_default", "utils_default", "luminance_default", "isLight", "color", "luminance_default", "is_light_default", "isDark", "color", "is_light_default", "is_dark_default", "adjustChannel", "color", "channel", "amount", "channels", "color_default", "amountCurrent", "amountNext", "utils_default", "adjust_channel_default", "lighten", "color", "amount", "adjust_channel_default", "lighten_default", "darken", "color", "amount", "adjust_channel_default", "darken_default", "adjust", "color", "channels", "ch", "color_default", "changes", "c", "change_default", "adjust_default", "mix", "color1", "color2", "weight", "r1", "g1", "b1", "a1", "color_default", "r2", "g2", "b2", "a2", "weightScale", "weightNormalized", "alphaDelta", "weight1", "weight2", "r", "g", "b", "a", "rgba_default", "mix_default", "invert", "color", "weight", "inverse", "color_default", "mix_default", "invert_default", "entries", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "Object", "freeze", "seal", "create", "apply", "construct", "Reflect", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "objectHasOwnProperty", "hasOwnProperty", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "property", "value", "isArray", "constructor", "lookupGetter", "prop", "desc", "get", "fallbackValue", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "NODE_TYPE", "attribute", "cdataSection", "entityReference", "entityNode", "progressingInstruction", "comment", "document", "documentType", "documentFragment", "notation", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "table", "tbody", "TRUSTED_TYPES_POLICY", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "removeChild", "_removeAttribute", "name", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_isClobbered", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHooks", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "parentNode", "childCount", "i", "childClone", "__removalCount", "expr", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "attr", "initValue", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "returnNode", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "frontMatterRegex", "directiveRegex", "anyCommentRegex", "UnknownDiagramError", "__name", "message", "detectors", "detectType", "text", "config2", "key", "detector", "registerLazyLoadedDiagrams", "diagrams2", "id", "loader", "addDetector", "log", "getDiagramLoader", "assignWithDepth", "dst", "src", "depth", "clobber", "s", "assignWithDepth_default", "oldAttributeBackgroundColorOdd", "oldAttributeBackgroundColorEven", "mkBorder", "col", "darkMode", "adjust_default", "Theme", "invert_default", "darken_default", "lighten_default", "i", "multiplier", "is_dark_default", "overrides", "keys", "k", "getThemeVariables", "userOverrides", "theme", "Theme2", "rgba_default", "getThemeVariables2", "Theme3", "getThemeVariables3", "Theme4", "getThemeVariables4", "Theme5", "getThemeVariables5", "themes_default", "config_schema_default", "config", "keyify", "obj", "prefix", "res", "el", "configKeys", "defaultConfig_default", "sanitizeDirective", "args", "arg", "cssMatchers", "cssKey", "sanitizeCss", "val", "str", "startCnt", "endCnt", "element", "defaultConfig", "siteConfig", "configFromInitialize", "directives", "currentConfig", "updateCurrentConfig", "siteCfg", "_directives", "cfg", "sumOfDirectives", "d", "sanitize", "tmpConfigFromInitialize", "themeVariables", "checkConfig", "setSiteConfig", "conf", "saveConfigFromInitialize", "updateSiteConfig", "getSiteConfig", "setConfig", "getConfig", "options", "addDirective", "directive", "reset", "ConfigWarning", "issuedWarnings", "issueWarning", "warning", "getUserDefinedConfig", "userConfig", "lineBreakRegex", "getRows", "breakToPlaceholder", "setupDompurifyHooksIfNotSetup", "setup", "setupDompurifyHooks", "TEMPORARY_ATTRIBUTE", "purify", "node", "removeScript", "txt", "sanitizeMore", "level", "placeholderToBreak", "sanitizeText", "sanitizeTextOrArray", "a", "x", "hasBreaks", "splitBreaks", "getUrl", "useAbsolute", "url", "evaluate", "getMax", "values", "newValues", "value", "getMin", "parseGenericTypes", "input", "inputSets", "output", "thisSet", "previousSet", "nextSet", "shouldCombineSets", "processSet", "countOccurrence", "string", "substring", "prevCount", "nextCount", "tildeCount", "hasStartingTilde", "chars", "first", "last", "isMathMLSupported", "katexRegex", "hasKatex", "calculateMathMLDimensions", "divElem", "renderKatexSanitized", "dim", "renderKatexUnsanitized", "katex", "outputMode", "line", "_", "common_default", "d3Attrs", "d3Elem", "attrs", "attr", "calculateSvgSizeAttrs", "height", "width", "useMaxWidth", "configureSvgSize", "svgElem", "setupGraphViewbox", "graph", "padding", "svgBounds", "sWidth", "sHeight", "vBox", "themes", "getStyles", "type", "userStyles", "diagramStyles", "addStylesForDiagram", "diagramTheme", "styles_default", "commonDb_exports", "__export", "clear", "getAccDescription", "getAccTitle", "getDiagramTitle", "setAccDescription", "setAccTitle", "setDiagramTitle", "accTitle", "diagramTitle", "accDescription", "sanitizeText2", "log2", "setLogLevel2", "setLogLevel", "getConfig2", "setConfig2", "defaultConfig2", "sanitizeText3", "setupGraphViewbox2", "getCommonDb", "diagrams", "registerDiagram", "diagram", "getDiagram", "name", "DiagramNotFoundError"]
+}
diff --git a/docs/public/chunk-6B6J5Z6Z.min.js b/docs/public/chunk-6B6J5Z6Z.min.js
new file mode 100755
index 0000000..a25506f
--- /dev/null
+++ b/docs/public/chunk-6B6J5Z6Z.min.js
@@ -0,0 +1,2 @@
+import{a as i,b as u,c as a,d as n,e as m,f as r,g as o,k as s,o as l,q as d}from"./chunk-LBFZT66H.min.js";var h=class extends d{static{r(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},A=class extends l{static{r(this,"ArchitectureValueConverter")}runCustomConverter(t,e,c){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},C={parser:{TokenBuilder:r(()=>new h,"TokenBuilder"),ValueConverter:r(()=>new A,"ValueConverter")}};function v(t=n){let e=a(u(t),o),c=a(i({shared:e}),s,C);return e.ServiceRegistry.register(c),{shared:e,Architecture:c}}r(v,"createArchitectureServices");export{C as a,v as b};
+//# sourceMappingURL=chunk-6B6J5Z6Z.min.js.map
diff --git a/docs/public/chunk-6B6J5Z6Z.min.js.map b/docs/public/chunk-6B6J5Z6Z.min.js.map
new file mode 100755
index 0000000..3bc41d2
--- /dev/null
+++ b/docs/public/chunk-6B6J5Z6Z.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-JEIROHC2.mjs"],
+ "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n ArchitectureGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-4KMFLZZN.mjs\";\n\n// src/language/architecture/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/architecture/tokenBuilder.ts\nvar ArchitectureTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"ArchitectureTokenBuilder\");\n }\n constructor() {\n super([\"architecture\"]);\n }\n};\n\n// src/language/architecture/valueConverter.ts\nvar ArchitectureValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"ArchitectureValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name === \"ARCH_ICON\") {\n return input.replace(/[()]/g, \"\").trim();\n } else if (rule.name === \"ARCH_TEXT_ICON\") {\n return input.replace(/[\"()]/g, \"\");\n } else if (rule.name === \"ARCH_TITLE\") {\n return input.replace(/[[\\]]/g, \"\").trim();\n }\n return void 0;\n }\n};\n\n// src/language/architecture/module.ts\nvar ArchitectureModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new ArchitectureTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new ArchitectureValueConverter(), \"ValueConverter\")\n }\n};\nfunction createArchitectureServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Architecture = inject(\n createDefaultCoreModule({ shared }),\n ArchitectureGeneratedModule,\n ArchitectureModule\n );\n shared.ServiceRegistry.register(Architecture);\n return { shared, Architecture };\n}\n__name(createArchitectureServices, \"createArchitectureServices\");\n\nexport {\n ArchitectureModule,\n createArchitectureServices\n};\n"],
+ "mappings": "2GAiBA,IAAIA,EAA2B,cAAcC,CAA4B,CACvE,MAAO,CACLC,EAAO,KAAM,0BAA0B,CACzC,CACA,aAAc,CACZ,MAAM,CAAC,cAAc,CAAC,CACxB,CACF,EAGIC,EAA6B,cAAcC,CAA8B,CAC3E,MAAO,CACLF,EAAO,KAAM,4BAA4B,CAC3C,CACA,mBAAmBG,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,YAChB,OAAOC,EAAM,QAAQ,QAAS,EAAE,EAAE,KAAK,EAClC,GAAID,EAAK,OAAS,iBACvB,OAAOC,EAAM,QAAQ,SAAU,EAAE,EAC5B,GAAID,EAAK,OAAS,aACvB,OAAOC,EAAM,QAAQ,SAAU,EAAE,EAAE,KAAK,CAG5C,CACF,EAGIE,EAAqB,CACvB,OAAQ,CACN,aAA8BN,EAAO,IAAM,IAAIF,EAA4B,cAAc,EACzF,eAAgCE,EAAO,IAAM,IAAIC,EAA8B,gBAAgB,CACjG,CACF,EACA,SAASM,EAA2BC,EAAUC,EAAiB,CAC7D,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAeH,EACnBI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAY,EACrC,CAAE,OAAAJ,EAAQ,aAAAI,CAAa,CAChC,CACAd,EAAOO,EAA4B,4BAA4B",
+ "names": ["ArchitectureTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "ArchitectureValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "ArchitectureModule", "createArchitectureServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Architecture", "createDefaultCoreModule", "ArchitectureGeneratedModule"]
+}
diff --git a/docs/public/chunk-6RTTMAJH.min.js b/docs/public/chunk-6RTTMAJH.min.js
new file mode 100755
index 0000000..b49c27e
--- /dev/null
+++ b/docs/public/chunk-6RTTMAJH.min.js
@@ -0,0 +1,2 @@
+import{a as t,b as a,c as o,d as i,e as f,f as e,g as u,h as d,p as s,q as l}from"./chunk-LBFZT66H.min.js";var m=class extends l{static{e(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},v={parser:{TokenBuilder:e(()=>new m,"TokenBuilder"),ValueConverter:e(()=>new s,"ValueConverter")}};function I(c=i){let r=o(a(c),u),n=o(t({shared:r}),d,v);return r.ServiceRegistry.register(n),{shared:r,Info:n}}e(I,"createInfoServices");export{v as a,I as b};
+//# sourceMappingURL=chunk-6RTTMAJH.min.js.map
diff --git a/docs/public/chunk-6RTTMAJH.min.js.map b/docs/public/chunk-6RTTMAJH.min.js.map
new file mode 100755
index 0000000..8117a48
--- /dev/null
+++ b/docs/public/chunk-6RTTMAJH.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-T44TD3VJ.mjs"],
+ "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n InfoGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-4KMFLZZN.mjs\";\n\n// src/language/info/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/info/tokenBuilder.ts\nvar InfoTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"InfoTokenBuilder\");\n }\n constructor() {\n super([\"info\", \"showInfo\"]);\n }\n};\n\n// src/language/info/module.ts\nvar InfoModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new InfoTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createInfoServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Info = inject(\n createDefaultCoreModule({ shared }),\n InfoGeneratedModule,\n InfoModule\n );\n shared.ServiceRegistry.register(Info);\n return { shared, Info };\n}\n__name(createInfoServices, \"createInfoServices\");\n\nexport {\n InfoModule,\n createInfoServices\n};\n"],
+ "mappings": "2GAiBA,IAAIA,EAAmB,cAAcC,CAA4B,CAC/D,MAAO,CACLC,EAAO,KAAM,kBAAkB,CACjC,CACA,aAAc,CACZ,MAAM,CAAC,OAAQ,UAAU,CAAC,CAC5B,CACF,EAGIC,EAAa,CACf,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAoB,cAAc,EACjF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAmBC,EAAUC,EAAiB,CACrD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAOH,EACXI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAI,EAC7B,CAAE,OAAAJ,EAAQ,KAAAI,CAAK,CACxB,CACAV,EAAOG,EAAoB,oBAAoB",
+ "names": ["InfoTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "InfoModule", "CommonValueConverter", "createInfoServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Info", "createDefaultCoreModule", "InfoGeneratedModule"]
+}
diff --git a/docs/public/chunk-6TVUEPFY.min.js b/docs/public/chunk-6TVUEPFY.min.js
new file mode 100755
index 0000000..2ae7095
--- /dev/null
+++ b/docs/public/chunk-6TVUEPFY.min.js
@@ -0,0 +1,2 @@
+import{a as js,d as tu}from"./chunk-OSRY5VT3.min.js";var ui=js((er,nr)=>{(function(t,e){typeof er=="object"&&typeof nr<"u"?nr.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(er,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",o="minute",a="hour",s="day",f="week",u="month",c="quarter",h="year",l="date",p="Invalid Date",x=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,b=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(y){var m=["th","st","nd","rd"],d=y%100;return"["+y+(m[(d-20)%10]||m[d]||m[0])+"]"}},T=function(y,m,d){var k=String(y);return!k||k.length>=m?y:""+Array(m+1-k.length).join(d)+y},I={s:T,z:function(y){var m=-y.utcOffset(),d=Math.abs(m),k=Math.floor(d/60),g=d%60;return(m<=0?"+":"-")+T(k,2,"0")+":"+T(g,2,"0")},m:function y(m,d){if(m.date()1)return y(D[0])}else{var R=m.name;N[R]=m,g=R}return!k&&g&&(S=g),g||!k&&S},F=function(y,m){if(v(y))return y.clone();var d=typeof m=="object"?m:{};return d.date=y,d.args=arguments,new H(d)},O=I;O.l=P,O.i=v,O.w=function(y,m){return F(y,{locale:m.$L,utc:m.$u,x:m.$x,$offset:m.$offset})};var H=(function(){function y(d){this.$L=P(d.locale,null,!0),this.parse(d),this.$x=this.$x||d.x||{},this[$]=!0}var m=y.prototype;return m.parse=function(d){this.$d=(function(k){var g=k.date,A=k.utc;if(g===null)return new Date(NaN);if(O.u(g))return new Date;if(g instanceof Date)return new Date(g);if(typeof g=="string"&&!/Z$/i.test(g)){var D=g.match(x);if(D){var R=D[2]-1||0,z=(D[7]||"0").substring(0,3);return A?new Date(Date.UTC(D[1],R,D[3]||1,D[4]||0,D[5]||0,D[6]||0,z)):new Date(D[1],R,D[3]||1,D[4]||0,D[5]||0,D[6]||0,z)}}return new Date(g)})(d),this.init()},m.init=function(){var d=this.$d;this.$y=d.getFullYear(),this.$M=d.getMonth(),this.$D=d.getDate(),this.$W=d.getDay(),this.$H=d.getHours(),this.$m=d.getMinutes(),this.$s=d.getSeconds(),this.$ms=d.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return this.$d.toString()!==p},m.isSame=function(d,k){var g=F(d);return this.startOf(k)<=g&&g<=this.endOf(k)},m.isAfter=function(d,k){return F(d)fi(t,"name",{value:e,configurable:!0}),Wh=(t,e)=>{for(var n in e)fi(t,n,{get:e[n],enumerable:!0})},Tt={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},ct={trace:Ot((...t)=>{},"trace"),debug:Ot((...t)=>{},"debug"),info:Ot((...t)=>{},"info"),warn:Ot((...t)=>{},"warn"),error:Ot((...t)=>{},"error"),fatal:Ot((...t)=>{},"fatal")},Vh=Ot(function(t="fatal"){let e=Tt.fatal;typeof t=="string"?t.toLowerCase()in Tt&&(e=Tt[t]):typeof t=="number"&&(e=t),ct.trace=()=>{},ct.debug=()=>{},ct.info=()=>{},ct.warn=()=>{},ct.error=()=>{},ct.fatal=()=>{},e<=Tt.fatal&&(ct.fatal=console.error?console.error.bind(console,ht("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",ht("FATAL"))),e<=Tt.error&&(ct.error=console.error?console.error.bind(console,ht("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",ht("ERROR"))),e<=Tt.warn&&(ct.warn=console.warn?console.warn.bind(console,ht("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",ht("WARN"))),e<=Tt.info&&(ct.info=console.info?console.info.bind(console,ht("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",ht("INFO"))),e<=Tt.debug&&(ct.debug=console.debug?console.debug.bind(console,ht("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",ht("DEBUG"))),e<=Tt.trace&&(ct.trace=console.debug?console.debug.bind(console,ht("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",ht("TRACE")))},"setLogLevel"),ht=Ot(t=>`%c${(0,li.default)().format("ss.SSS")} : ${t} : `,"format");function ci(t,e){let n;if(e===void 0)for(let r of t)r!=null&&(n=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n=i)&&(n=i)}return n}function hi(t,e){let n;if(e===void 0)for(let r of t)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Bt(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}function rr(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}function qt(t){let e,n,r;t.length!==2?(e=Bt,n=(s,f)=>Bt(t(s),f),r=(s,f)=>t(s)-f):(e=t===Bt||t===rr?t:eu,n=t,r=t);function i(s,f,u=0,c=s.length){if(u>>1;n(s[h],f)<0?u=h+1:c=h}while(u>>1;n(s[h],f)<=0?u=h+1:c=h}while(uu&&r(s[h-1],f)>-r(s[h],f)?h-1:h}return{left:i,center:a,right:o}}function eu(){return 0}function ir(t){return t===null?NaN:+t}var pi=qt(Bt),mi=pi.right,nu=pi.left,ru=qt(ir).center,or=mi;var ue=class extends Map{constructor(e,n=au){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),e!=null)for(let[r,i]of e)this.set(r,i)}get(e){return super.get(di(this,e))}has(e){return super.has(di(this,e))}set(e,n){return super.set(iu(this,e),n)}delete(e){return super.delete(ou(this,e))}};function di({_intern:t,_key:e},n){let r=e(n);return t.has(r)?t.get(r):n}function iu({_intern:t,_key:e},n){let r=e(n);return t.has(r)?t.get(r):(t.set(r,n),n)}function ou({_intern:t,_key:e},n){let r=e(n);return t.has(r)&&(n=t.get(r),t.delete(r)),n}function au(t){return t!==null&&typeof t=="object"?t.valueOf():t}var su=Math.sqrt(50),uu=Math.sqrt(10),fu=Math.sqrt(2);function rn(t,e,n){let r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=su?10:o>=uu?5:o>=fu?2:1,s,f,u;return i<0?(u=Math.pow(10,-i)/a,s=Math.round(t*u),f=Math.round(e*u),s/ue&&--f,u=-u):(u=Math.pow(10,i)*a,s=Math.round(t/u),f=Math.round(e/u),s*ue&&--f),f0))return[];if(t===e)return[t];let r=e=i))return[];let s=o-i+1,f=new Array(s);if(r)if(a<0)for(let u=0;u+t(e)}function pu(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function mu(){return!this.__axis}function gi(t,e){var n=[],r=null,i=null,o=6,a=6,s=3,f=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=t===un||t===sn?-1:1,c=t===sn||t===ar?"x":"y",h=t===un||t===sr?lu:cu;function l(p){var x=r??(e.ticks?e.ticks.apply(e,n):e.domain()),b=i??(e.tickFormat?e.tickFormat.apply(e,n):xi),M=Math.max(o,0)+s,T=e.range(),I=+T[0]+f,S=+T[T.length-1]+f,N=(e.bandwidth?pu:hu)(e.copy(),f),$=p.selection?p.selection():p,v=$.selectAll(".domain").data([null]),P=$.selectAll(".tick").data(x,e).order(),F=P.exit(),O=P.enter().append("g").attr("class","tick"),H=P.select("line"),C=P.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),P=P.merge(O),H=H.merge(O.append("line").attr("stroke","currentColor").attr(c+"2",u*o)),C=C.merge(O.append("text").attr("fill","currentColor").attr(c,u*M).attr("dy",t===un?"0em":t===sr?"0.71em":"0.32em")),p!==$&&(v=v.transition(p),P=P.transition(p),H=H.transition(p),C=C.transition(p),F=F.transition(p).attr("opacity",_i).attr("transform",function(y){return isFinite(y=N(y))?h(y+f):this.getAttribute("transform")}),O.attr("opacity",_i).attr("transform",function(y){var m=this.parentNode.__axis;return h((m&&isFinite(m=m(y))?m:N(y))+f)})),F.remove(),v.attr("d",t===sn||t===ar?a?"M"+u*a+","+I+"H"+f+"V"+S+"H"+u*a:"M"+f+","+I+"V"+S:a?"M"+I+","+u*a+"V"+f+"H"+S+"V"+u*a:"M"+I+","+f+"H"+S),P.attr("opacity",1).attr("transform",function(y){return h(N(y)+f)}),H.attr(c+"2",u*o),C.attr(c,u*M).text(b),$.filter(mu).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===ar?"start":t===sn?"end":"middle"),$.each(function(){this.__axis=N})}return l.scale=function(p){return arguments.length?(e=p,l):e},l.ticks=function(){return n=Array.from(arguments),l},l.tickArguments=function(p){return arguments.length?(n=p==null?[]:Array.from(p),l):n.slice()},l.tickValues=function(p){return arguments.length?(r=p==null?null:Array.from(p),l):r&&r.slice()},l.tickFormat=function(p){return arguments.length?(i=p,l):i},l.tickSize=function(p){return arguments.length?(o=a=+p,l):o},l.tickSizeInner=function(p){return arguments.length?(o=+p,l):o},l.tickSizeOuter=function(p){return arguments.length?(a=+p,l):a},l.tickPadding=function(p){return arguments.length?(s=+p,l):s},l.offset=function(p){return arguments.length?(f=+p,l):f},l}function du(t){return gi(un,t)}function xu(t){return gi(sr,t)}function _u(){}function Wt(t){return t==null?_u:function(){return this.querySelector(t)}}function yi(t){typeof t!="function"&&(t=Wt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i=S&&(S=I+1);!($=M[S])&&++S=0;)(a=r[i])&&(o&&a.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(a,o),o=a);return this}function $i(t){t||(t=Du);function e(h,l){return h&&l?t(h.__data__,l.__data__):!h-!l}for(var n=this._groups,r=n.length,i=new Array(r),o=0;oe?1:t>=e?0:NaN}function Oi(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Ii(){return Array.from(this)}function Ei(){for(var t=this._groups,e=0,n=t.length;e=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),fr.hasOwnProperty(e)?{space:fr[e],local:t}:t}function $u(t){return function(){this.removeAttribute(t)}}function Ou(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Iu(t,e){return function(){this.setAttribute(t,e)}}function Eu(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Ru(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttribute(t):this.setAttribute(t,n)}}function Pu(t,e){return function(){var n=e.apply(this,arguments);n==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Fi(t,e){var n=kt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((e==null?n.local?Ou:$u:typeof e=="function"?n.local?Pu:Ru:n.local?Eu:Iu)(n,e))}function hn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Yu(t){return function(){this.style.removeProperty(t)}}function Fu(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Uu(t,e,n){return function(){var r=e.apply(this,arguments);r==null?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Ui(t,e,n){return arguments.length>1?this.each((e==null?Yu:typeof e=="function"?Uu:Fu)(t,e,n??"")):It(this.node(),t)}function It(t,e){return t.style.getPropertyValue(e)||hn(t).getComputedStyle(t,null).getPropertyValue(e)}function zu(t){return function(){delete this[t]}}function Lu(t,e){return function(){this[t]=e}}function Hu(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function zi(t,e){return arguments.length>1?this.each((e==null?zu:typeof e=="function"?Hu:Lu)(t,e)):this.node()[t]}function Li(t){return t.trim().split(/^|\s+/)}function lr(t){return t.classList||new Hi(t)}function Hi(t){this._node=t,this._names=Li(t.getAttribute("class")||"")}Hi.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Bi(t,e){for(var n=lr(t),r=-1,i=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function ff(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,i=e.length,o;n>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?mn(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?mn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=xf.exec(t))?new tt(e[1],e[2],e[3],1):(e=_f.exec(t))?new tt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=gf.exec(t))?mn(e[1],e[2],e[3],e[4]):(e=yf.exec(t))?mn(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=vf.exec(t))?ho(e[1],e[2]/100,e[3]/100,1):(e=wf.exec(t))?ho(e[1],e[2]/100,e[3]/100,e[4]):ao.hasOwnProperty(t)?fo(ao[t]):t==="transparent"?new tt(NaN,NaN,NaN,0):null}function fo(t){return new tt(t>>16&255,t>>8&255,t&255,1)}function mn(t,e,n,r){return r<=0&&(t=e=n=NaN),new tt(t,e,n,r)}function pr(t){return t instanceof Et||(t=xt(t)),t?(t=t.rgb(),new tt(t.r,t.g,t.b,t.opacity)):new tt}function he(t,e,n,r){return arguments.length===1?pr(t):new tt(t,e,n,r??1)}function tt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Vt(tt,he,le(Et,{brighter(t){return t=t==null?xn:Math.pow(xn,t),new tt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ee:Math.pow(Ee,t),new tt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new tt(Gt(this.r),Gt(this.g),Gt(this.b),_n(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:lo,formatHex:lo,formatHex8:Tf,formatRgb:co,toString:co}));function lo(){return`#${Xt(this.r)}${Xt(this.g)}${Xt(this.b)}`}function Tf(){return`#${Xt(this.r)}${Xt(this.g)}${Xt(this.b)}${Xt((isNaN(this.opacity)?1:this.opacity)*255)}`}function co(){let t=_n(this.opacity);return`${t===1?"rgb(":"rgba("}${Gt(this.r)}, ${Gt(this.g)}, ${Gt(this.b)}${t===1?")":`, ${t})`}`}function _n(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Gt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Xt(t){return t=Gt(t),(t<16?"0":"")+t.toString(16)}function ho(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new dt(t,e,n,r)}function mo(t){if(t instanceof dt)return new dt(t.h,t.s,t.l,t.opacity);if(t instanceof Et||(t=xt(t)),!t)return new dt;if(t instanceof dt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,f=(o+i)/2;return s?(e===o?a=(n-r)/s+(n0&&f<1?0:a,new dt(a,s,f,t.opacity)}function xo(t,e,n,r){return arguments.length===1?mo(t):new dt(t,e,n,r??1)}function dt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Vt(dt,xo,le(Et,{brighter(t){return t=t==null?xn:Math.pow(xn,t),new dt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ee:Math.pow(Ee,t),new dt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new tt(hr(t>=240?t-240:t+120,i,r),hr(t,i,r),hr(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new dt(po(this.h),dn(this.s),dn(this.l),_n(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=_n(this.opacity);return`${t===1?"hsl(":"hsla("}${po(this.h)}, ${dn(this.s)*100}%, ${dn(this.l)*100}%${t===1?")":`, ${t})`}`}}));function po(t){return t=(t||0)%360,t<0?t+360:t}function dn(t){return Math.max(0,Math.min(1,t||0))}function hr(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}var _o=Math.PI/180,go=180/Math.PI;var gn=18,yo=.96422,vo=1,wo=.82521,bo=4/29,pe=6/29,Mo=3*pe*pe,kf=pe*pe*pe;function To(t){if(t instanceof vt)return new vt(t.l,t.a,t.b,t.opacity);if(t instanceof Ct)return ko(t);t instanceof tt||(t=pr(t));var e=_r(t.r),n=_r(t.g),r=_r(t.b),i=mr((.2225045*e+.7168786*n+.0606169*r)/vo),o,a;return e===n&&n===r?o=a=i:(o=mr((.4360747*e+.3850649*n+.1430804*r)/yo),a=mr((.0139322*e+.0971045*n+.7141733*r)/wo)),new vt(116*i-16,500*(o-i),200*(i-a),t.opacity)}function gr(t,e,n,r){return arguments.length===1?To(t):new vt(t,e,n,r??1)}function vt(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Vt(vt,gr,le(Et,{brighter(t){return new vt(this.l+gn*(t??1),this.a,this.b,this.opacity)},darker(t){return new vt(this.l-gn*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=yo*dr(e),t=vo*dr(t),n=wo*dr(n),new tt(xr(3.1338561*e-1.6168667*t-.4906146*n),xr(-.9787684*e+1.9161415*t+.033454*n),xr(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function mr(t){return t>kf?Math.pow(t,1/3):t/Mo+bo}function dr(t){return t>pe?t*t*t:Mo*(t-bo)}function xr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function _r(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Sf(t){if(t instanceof Ct)return new Ct(t.h,t.c,t.l,t.opacity);if(t instanceof vt||(t=To(t)),t.a===0&&t.b===0)return new Ct(NaN,0()=>t;function So(t,e){return function(n){return t+n*e}}function Cf(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function Co(t,e){var n=e-t;return n?So(t,n>180||n<-180?n-360*Math.round(n/360):n):me(isNaN(t)?e:t)}function No(t){return(t=+t)==1?Nt:function(e,n){return n-e?Cf(e,n,t):me(isNaN(e)?n:e)}}function Nt(t,e){var n=e-t;return n?So(t,n):me(isNaN(t)?e:t)}function Ao(t){return function(e,n){var r=t((e=Pe(e)).h,(n=Pe(n)).h),i=Nt(e.c,n.c),o=Nt(e.l,n.l),a=Nt(e.opacity,n.opacity);return function(s){return e.h=r(s),e.c=i(s),e.l=o(s),e.opacity=a(s),e+""}}}var Nf=Ao(Co),Af=Ao(Nt);function yr(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}function Do(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=rn&&(o=e.slice(n,o),s[a]?s[a]+=o:s[++a]=o),(r=r[0])===(i=i[0])?s[a]?s[a]+=i:s[++a]=i:(s[++a]=null,f.push({i:a,x:et(r,i)})),n=vr.lastIndex;return n180?c+=360:c-u>180&&(u+=360),l.push({i:h.push(i(h)+"rotate(",null,r)-2,x:et(u,c)})):c&&h.push(i(h)+"rotate("+c+r)}function s(u,c,h,l){u!==c?l.push({i:h.push(i(h)+"skewX(",null,r)-2,x:et(u,c)}):c&&h.push(i(h)+"skewX("+c+r)}function f(u,c,h,l,p,x){if(u!==h||c!==l){var b=p.push(i(p)+"scale(",null,",",null,")");x.push({i:b-4,x:et(u,h)},{i:b-2,x:et(c,l)})}else(h!==1||l!==1)&&p.push(i(p)+"scale("+h+","+l+")")}return function(u,c){var h=[],l=[];return u=t(u),c=t(c),o(u.translateX,u.translateY,c.translateX,c.translateY,h,l),a(u.rotate,c.rotate,h,l),s(u.skewX,c.skewX,h,l),f(u.scaleX,u.scaleY,c.scaleX,c.scaleY,h,l),u=c=null,function(p){for(var x=-1,b=l.length,M;++x=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Kt(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function wt(t){return t=Kt(Math.abs(t)),t?t[1]:NaN}function Bo(t,e){return function(n,r){for(var i=n.length,o=[],a=0,s=t[0],f=0;i>0&&s>0&&(f+s+1>r&&(s=Math.max(1,r-f)),o.push(n.substring(i-=s,i+s)),!((f+=s+1)>r));)s=t[a=(a+1)%t.length];return o.reverse().join(e)}}function qo(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Ef=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rt(t){if(!(e=Ef.exec(t)))throw new Error("invalid format: "+t);var e;return new wn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}Rt.prototype=wn.prototype;function wn(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}wn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Wo(t){t:for(var e=t.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(i+1):t}var Sr;function Vo(t,e){var n=Kt(t,e);if(!n)return t+"";var r=n[0],i=n[1],o=i-(Sr=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Kt(t,Math.max(0,e+o-1))[0]}function Cr(t,e){var n=Kt(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}var Nr={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Ho,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Cr(t*100,e),r:Cr,s:Vo,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Ar(t){return t}var Xo=Array.prototype.map,Go=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Zo(t){var e=t.grouping===void 0||t.thousands===void 0?Ar:Bo(Xo.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",o=t.numerals===void 0?Ar:qo(Xo.call(t.numerals,String)),a=t.percent===void 0?"%":t.percent+"",s=t.minus===void 0?"\u2212":t.minus+"",f=t.nan===void 0?"NaN":t.nan+"";function u(h){h=Rt(h);var l=h.fill,p=h.align,x=h.sign,b=h.symbol,M=h.zero,T=h.width,I=h.comma,S=h.precision,N=h.trim,$=h.type;$==="n"?(I=!0,$="g"):Nr[$]||(S===void 0&&(S=12),N=!0,$="g"),(M||l==="0"&&p==="=")&&(M=!0,l="0",p="=");var v=b==="$"?n:b==="#"&&/[boxX]/.test($)?"0"+$.toLowerCase():"",P=b==="$"?r:/[%p]/.test($)?a:"",F=Nr[$],O=/[defgprs%]/.test($);S=S===void 0?6:/[gprs]/.test($)?Math.max(1,Math.min(21,S)):Math.max(0,Math.min(20,S));function H(C){var y=v,m=P,d,k,g;if($==="c")m=F(C)+m,C="";else{C=+C;var A=C<0||1/C<0;if(C=isNaN(C)?f:F(Math.abs(C),S),N&&(C=Wo(C)),A&&+C==0&&x!=="+"&&(A=!1),y=(A?x==="("?x:s:x==="-"||x==="("?"":x)+y,m=($==="s"?Go[8+Sr/3]:"")+m+(A&&x==="("?")":""),O){for(d=-1,k=C.length;++dg||g>57){m=(g===46?i+C.slice(d+1):C.slice(d))+m,C=C.slice(0,d);break}}}I&&!M&&(C=e(C,1/0));var D=y.length+C.length+m.length,R=D>1)+y+C+m+R.slice(D);break;default:C=R+y+C+m;break}return o(C)}return H.toString=function(){return h+""},H}function c(h,l){var p=u((h=Rt(h),h.type="f",h)),x=Math.max(-8,Math.min(8,Math.floor(wt(l)/3)))*3,b=Math.pow(10,-x),M=Go[8+x/3];return function(T){return p(b*T)+M}}return{format:u,formatPrefix:c}}var bn,Mn,Tn;Dr({thousands:",",grouping:[3],currency:["$",""]});function Dr(t){return bn=Zo(t),Mn=bn.format,Tn=bn.formatPrefix,bn}function $r(t){return Math.max(0,-wt(Math.abs(t)))}function Or(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(wt(e)/3)))*3-wt(Math.abs(t)))}function Ir(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,wt(e)-wt(t))+1}function Rf(t){var e=0,n=t.children,r=n&&n.length;if(!r)e=1;else for(;--r>=0;)e+=n[r].value;t.value=e}function Qo(){return this.eachAfter(Rf)}function Ko(t,e){let n=-1;for(let r of this)t.call(e,r,++n,this);return this}function Jo(t,e){for(var n=this,r=[n],i,o,a=-1;n=r.pop();)if(t.call(e,n,++a,this),i=n.children)for(o=i.length-1;o>=0;--o)r.push(i[o]);return this}function jo(t,e){for(var n=this,r=[n],i=[],o,a,s,f=-1;n=r.pop();)if(i.push(n),o=n.children)for(a=0,s=o.length;a=0;)n+=r[i].value;e.value=n})}function na(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}function ra(t){for(var e=this,n=Pf(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r}function Pf(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;for(t=n.pop(),e=r.pop();t===e;)i=t,t=n.pop(),e=r.pop();return i}function ia(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}function oa(){return Array.from(this)}function aa(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}function sa(){var t=this,e=[];return t.each(function(n){n!==t&&e.push({source:n.parent,target:n})}),e}function*ua(){var t=this,e,n=[t],r,i,o;do for(e=n.reverse(),n=[];t=e.pop();)if(yield t,r=t.children)for(i=0,o=r.length;i=0;--s)i.push(o=a[s]=new Fe(a[s])),o.parent=r,o.depth=r.depth+1;return n.eachBefore(Lf)}function Yf(){return kn(this).eachBefore(zf)}function Ff(t){return t.children}function Uf(t){return Array.isArray(t)?t[1]:null}function zf(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function Lf(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}function Fe(t){this.data=t,this.depth=this.height=0,this.parent=null}Fe.prototype=kn.prototype={constructor:Fe,count:Qo,each:Ko,eachAfter:jo,eachBefore:Jo,find:ta,sum:ea,sort:na,path:ra,ancestors:ia,descendants:oa,leaves:aa,links:sa,copy:Yf,[Symbol.iterator]:ua};function fa(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function la(t,e,n,r,i){for(var o=t.children,a,s=-1,f=o.length,u=t.value&&(r-e)/t.value;++sI&&(I=u),v=M*M*$,S=Math.max(I/v,v/T),S>N){M-=u;break}N=S}a.push(f={value:M,dice:p1?r:1)},n})(Hf);function pa(t){if(typeof t!="function")throw new Error;return t}function de(){return 0}function xe(t){return function(){return t}}function qf(){var t=ha,e=!1,n=1,r=1,i=[0],o=de,a=de,s=de,f=de,u=de;function c(l){return l.x0=l.y0=0,l.x1=n,l.y1=r,l.eachBefore(h),i=[0],e&&l.eachBefore(fa),l}function h(l){var p=i[l.depth],x=l.x0+p,b=l.y0+p,M=l.x1-p,T=l.y1-p;Me&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Vf(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i2?Xf:Vf,f=u=null,h}function h(l){return l==null||isNaN(l=+l)?o:(f||(f=s(t.map(r),e,n)))(r(a(l)))}return h.invert=function(l){return a(i((u||(u=s(e,t.map(r),et)))(l)))},h.domain=function(l){return arguments.length?(t=Array.from(l,Yr),c()):t.slice()},h.range=function(l){return arguments.length?(e=Array.from(l),c()):e.slice()},h.rangeRound=function(l){return e=Array.from(l),n=br,c()},h.clamp=function(l){return arguments.length?(a=l?!0:_e,c()):a!==_e},h.interpolate=function(l){return arguments.length?(n=l,c()):n},h.unknown=function(l){return arguments.length?(o=l,h):o},function(l,p){return r=l,i=p,c()}}function ze(){return Gf()(_e,_e)}function Ur(t,e,n,r){var i=fe(t,e,n),o;switch(r=Rt(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(o=Or(i,a))&&(r.precision=o),Tn(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(o=Ir(i,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=o-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(o=$r(i))&&(r.precision=o-(r.type==="%")*2);break}}return Mn(r)}function Zf(t){var e=t.domain;return t.ticks=function(n){var r=e();return on(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var i=e();return Ur(i[0],i[i.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),i=0,o=r.length-1,a=r[i],s=r[o],f,u,c=10;for(s0;){if(u=De(a,s,n),u===f)return r[i]=a,r[o]=s,e(r);if(u>0)a=Math.floor(a/u)*u,s=Math.ceil(s/u)*u;else if(u<0)a=Math.ceil(a*u)/u,s=Math.floor(s*u)/u;else break;f=u}return t},t}function zr(){var t=ze();return t.copy=function(){return Sn(t,zr())},Pt.apply(t,arguments),Zf(t)}var Lr=new Date,Hr=new Date;function L(t,e,n,r){function i(o){return t(o=arguments.length===0?new Date:new Date(+o)),o}return i.floor=o=>(t(o=new Date(+o)),o),i.ceil=o=>(t(o=new Date(o-1)),e(o,1),t(o),o),i.round=o=>{let a=i(o),s=i.ceil(o);return o-a(e(o=new Date(+o),a==null?1:Math.floor(a)),o),i.range=(o,a,s)=>{let f=[];if(o=i.ceil(o),s=s==null?1:Math.floor(s),!(o0))return f;let u;do f.push(u=new Date(+o)),e(o,s),t(o);while(uL(a=>{if(a>=a)for(;t(a),!o(a);)a.setTime(a-1)},(a,s)=>{if(a>=a)if(s<0)for(;++s<=0;)for(;e(a,-1),!o(a););else for(;--s>=0;)for(;e(a,1),!o(a););}),n&&(i.count=(o,a)=>(Lr.setTime(+o),Hr.setTime(+a),t(Lr),t(Hr),Math.floor(n(Lr,Hr))),i.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?i.filter(r?a=>r(a)%o===0:a=>i.count(0,a)%o===0):i)),i}var Jt=L(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Jt.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?L(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):Jt);var da=Jt.range;var bt=L(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),xa=bt.range;var ge=L(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),Qf=ge.range,Cn=L(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),Kf=Cn.range;var ye=L(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),Jf=ye.range,Nn=L(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),jf=Nn.range;var At=L(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),tl=At.range,He=L(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),el=He.range,An=L(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),nl=An.range;function ee(t){return L(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}var Dt=ee(0),ve=ee(1),ga=ee(2),ya=ee(3),Yt=ee(4),va=ee(5),wa=ee(6),ba=Dt.range,rl=ve.range,il=ga.range,ol=ya.range,al=Yt.range,sl=va.range,ul=wa.range;function ne(t){return L(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/6048e5)}var re=ne(0),we=ne(1),Ma=ne(2),Ta=ne(3),Ft=ne(4),ka=ne(5),Sa=ne(6),Ca=re.range,fl=we.range,ll=Ma.range,cl=Ta.range,hl=Ft.range,pl=ka.range,ml=Sa.range;var be=L(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),dl=be.range,Dn=L(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),xl=Dn.range;var ft=L(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());ft.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:L(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});var _l=ft.range,_t=L(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());_t.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:L(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});var gl=_t.range;function Aa(t,e,n,r,i,o){let a=[[bt,1,1e3],[bt,5,5*1e3],[bt,15,15*1e3],[bt,30,30*1e3],[o,1,6e4],[o,5,5*6e4],[o,15,15*6e4],[o,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[r,1,864e5],[r,2,2*864e5],[n,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function s(u,c,h){let l=cM).right(a,l);if(p===a.length)return t.every(fe(u/31536e6,c/31536e6,h));if(p===0)return Jt.every(Math.max(fe(u,c,h),1));let[x,b]=a[l/a[p-1][2]53)return null;"w"in _||(_.w=1),"Z"in _?(B=Vr(Be(_.y,0,1)),st=B.getUTCDay(),B=st>4||st===0?we.ceil(B):we(B),B=He.offset(B,(_.V-1)*7),_.y=B.getUTCFullYear(),_.m=B.getUTCMonth(),_.d=B.getUTCDate()+(_.w+6)%7):(B=Wr(Be(_.y,0,1)),st=B.getDay(),B=st>4||st===0?ve.ceil(B):ve(B),B=At.offset(B,(_.V-1)*7),_.y=B.getFullYear(),_.m=B.getMonth(),_.d=B.getDate()+(_.w+6)%7)}else("W"in _||"U"in _)&&("w"in _||(_.w="u"in _?_.u%7:"W"in _?1:0),st="Z"in _?Vr(Be(_.y,0,1)).getUTCDay():Wr(Be(_.y,0,1)).getDay(),_.m=0,_.d="W"in _?(_.w+6)%7+_.W*7-(st+5)%7:_.w+_.U*7-(st+6)%7);return"Z"in _?(_.H+=_.Z/100|0,_.M+=_.Z%100,Vr(_)):Wr(_)}}function F(w,E,Y,_){for(var ot=0,B=E.length,st=Y.length,ut,Ht;ot=st)return-1;if(ut=E.charCodeAt(ot++),ut===37){if(ut=E.charAt(ot++),Ht=$[ut in Da?E.charAt(ot++):ut],!Ht||(_=Ht(w,Y,_))<0)return-1}else if(ut!=Y.charCodeAt(_++))return-1}return _}function O(w,E,Y){var _=u.exec(E.slice(Y));return _?(w.p=c.get(_[0].toLowerCase()),Y+_[0].length):-1}function H(w,E,Y){var _=p.exec(E.slice(Y));return _?(w.w=x.get(_[0].toLowerCase()),Y+_[0].length):-1}function C(w,E,Y){var _=h.exec(E.slice(Y));return _?(w.w=l.get(_[0].toLowerCase()),Y+_[0].length):-1}function y(w,E,Y){var _=T.exec(E.slice(Y));return _?(w.m=I.get(_[0].toLowerCase()),Y+_[0].length):-1}function m(w,E,Y){var _=b.exec(E.slice(Y));return _?(w.m=M.get(_[0].toLowerCase()),Y+_[0].length):-1}function d(w,E,Y){return F(w,e,E,Y)}function k(w,E,Y){return F(w,n,E,Y)}function g(w,E,Y){return F(w,r,E,Y)}function A(w){return a[w.getDay()]}function D(w){return o[w.getDay()]}function R(w){return f[w.getMonth()]}function z(w){return s[w.getMonth()]}function q(w){return i[+(w.getHours()>=12)]}function V(w){return 1+~~(w.getMonth()/3)}function K(w){return a[w.getUTCDay()]}function lt(w){return o[w.getUTCDay()]}function Z(w){return f[w.getUTCMonth()]}function mt(w){return s[w.getUTCMonth()]}function at(w){return i[+(w.getUTCHours()>=12)]}function G(w){return 1+~~(w.getUTCMonth()/3)}return{format:function(w){var E=v(w+="",S);return E.toString=function(){return w},E},parse:function(w){var E=P(w+="",!1);return E.toString=function(){return w},E},utcFormat:function(w){var E=v(w+="",N);return E.toString=function(){return w},E},utcParse:function(w){var E=P(w+="",!0);return E.toString=function(){return w},E}}}var Da={"-":"",_:" ",0:"0"},J=/^\s*\d+/,bl=/^%/,Ml=/[\\^$*+?|[\]().{}]/g;function U(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o[e.toLowerCase(),n]))}function kl(t,e,n){var r=J.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Sl(t,e,n){var r=J.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Cl(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Nl(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Al(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function $a(t,e,n){var r=J.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Oa(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Dl(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function $l(t,e,n){var r=J.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Ol(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ia(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Il(t,e,n){var r=J.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Ea(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function El(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Rl(t,e,n){var r=J.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Pl(t,e,n){var r=J.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Yl(t,e,n){var r=J.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Fl(t,e,n){var r=bl.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Ul(t,e,n){var r=J.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function zl(t,e,n){var r=J.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Ra(t,e){return U(t.getDate(),e,2)}function Ll(t,e){return U(t.getHours(),e,2)}function Hl(t,e){return U(t.getHours()%12||12,e,2)}function Bl(t,e){return U(1+At.count(ft(t),t),e,3)}function za(t,e){return U(t.getMilliseconds(),e,3)}function ql(t,e){return za(t,e)+"000"}function Wl(t,e){return U(t.getMonth()+1,e,2)}function Vl(t,e){return U(t.getMinutes(),e,2)}function Xl(t,e){return U(t.getSeconds(),e,2)}function Gl(t){var e=t.getDay();return e===0?7:e}function Zl(t,e){return U(Dt.count(ft(t)-1,t),e,2)}function La(t){var e=t.getDay();return e>=4||e===0?Yt(t):Yt.ceil(t)}function Ql(t,e){return t=La(t),U(Yt.count(ft(t),t)+(ft(t).getDay()===4),e,2)}function Kl(t){return t.getDay()}function Jl(t,e){return U(ve.count(ft(t)-1,t),e,2)}function jl(t,e){return U(t.getFullYear()%100,e,2)}function tc(t,e){return t=La(t),U(t.getFullYear()%100,e,2)}function ec(t,e){return U(t.getFullYear()%1e4,e,4)}function nc(t,e){var n=t.getDay();return t=n>=4||n===0?Yt(t):Yt.ceil(t),U(t.getFullYear()%1e4,e,4)}function rc(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+U(e/60|0,"0",2)+U(e%60,"0",2)}function Pa(t,e){return U(t.getUTCDate(),e,2)}function ic(t,e){return U(t.getUTCHours(),e,2)}function oc(t,e){return U(t.getUTCHours()%12||12,e,2)}function ac(t,e){return U(1+He.count(_t(t),t),e,3)}function Ha(t,e){return U(t.getUTCMilliseconds(),e,3)}function sc(t,e){return Ha(t,e)+"000"}function uc(t,e){return U(t.getUTCMonth()+1,e,2)}function fc(t,e){return U(t.getUTCMinutes(),e,2)}function lc(t,e){return U(t.getUTCSeconds(),e,2)}function cc(t){var e=t.getUTCDay();return e===0?7:e}function hc(t,e){return U(re.count(_t(t)-1,t),e,2)}function Ba(t){var e=t.getUTCDay();return e>=4||e===0?Ft(t):Ft.ceil(t)}function pc(t,e){return t=Ba(t),U(Ft.count(_t(t),t)+(_t(t).getUTCDay()===4),e,2)}function mc(t){return t.getUTCDay()}function dc(t,e){return U(we.count(_t(t)-1,t),e,2)}function xc(t,e){return U(t.getUTCFullYear()%100,e,2)}function _c(t,e){return t=Ba(t),U(t.getUTCFullYear()%100,e,2)}function gc(t,e){return U(t.getUTCFullYear()%1e4,e,4)}function yc(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Ft(t):Ft.ceil(t),U(t.getUTCFullYear()%1e4,e,4)}function vc(){return"+0000"}function Ya(){return"%"}function Fa(t){return+t}function Ua(t){return Math.floor(+t/1e3)}var Me,$n,qa,Wa,Va;Gr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function Gr(t){return Me=Xr(t),$n=Me.format,qa=Me.parse,Wa=Me.utcFormat,Va=Me.utcParse,Me}function Zr(t,e){t=t.slice();var n=0,r=t.length-1,i=t[n],o=t[r],a;return o1?0:t<-1?Te:Math.acos(t)}function Kr(t){return t>=1?Ve:t<=-1?-Ve:Math.asin(t)}var Jr=Math.PI,jr=2*Jr,oe=1e-6,Tc=jr-oe;function Ja(t){this._+=t[0];for(let e=1,n=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Ja;let n=10**e;return function(r){this._+=r[0];for(let i=1,o=r.length;ioe)if(!(Math.abs(h*f-u*c)>oe)||!o)this._append`L${this._x1=e},${this._y1=n}`;else{let p=r-a,x=i-s,b=f*f+u*u,M=p*p+x*x,T=Math.sqrt(b),I=Math.sqrt(l),S=o*Math.tan((Jr-Math.acos((b+l-M)/(2*T*I)))/2),N=S/I,$=S/T;Math.abs(N-1)>oe&&this._append`L${e+N*c},${n+N*h}`,this._append`A${o},${o},0,0,${+(h*p>c*x)},${this._x1=e+$*f},${this._y1=n+$*u}`}}arc(e,n,r,i,o,a){if(e=+e,n=+n,r=+r,a=!!a,r<0)throw new Error(`negative radius: ${r}`);let s=r*Math.cos(i),f=r*Math.sin(i),u=e+s,c=n+f,h=1^a,l=a?i-o:o-i;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>oe||Math.abs(this._y1-c)>oe)&&this._append`L${u},${c}`,r&&(l<0&&(l=l%jr+jr),l>Tc?this._append`A${r},${r},0,1,${h},${e-s},${n-f}A${r},${r},0,1,${h},${this._x1=u},${this._y1=c}`:l>oe&&this._append`A${r},${r},0,${+(l>=Jr)},${h},${this._x1=e+r*Math.cos(o)},${this._y1=n+r*Math.sin(o)}`)}rect(e,n,r,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+n}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}};function ja(){return new ae}ja.prototype=ae.prototype;function In(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(n==null)e=null;else{let r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);e=r}return t},()=>new ae(e)}function Sc(t){return t.innerRadius}function Cc(t){return t.outerRadius}function Nc(t){return t.startAngle}function Ac(t){return t.endAngle}function Dc(t){return t&&t.padAngle}function $c(t,e,n,r,i,o,a,s){var f=n-t,u=r-e,c=a-i,h=s-o,l=h*f-c*u;if(!(l*ld*d+k*k&&(F=H,O=C),{cx:F,cy:O,x01:-c,y01:-h,x11:F*(i/$-1),y11:O*(i/$-1)}}function Oc(){var t=Sc,e=Cc,n=W(0),r=null,i=Nc,o=Ac,a=Dc,s=null,f=In(u);function u(){var c,h,l=+t.apply(this,arguments),p=+e.apply(this,arguments),x=i.apply(this,arguments)-Ve,b=o.apply(this,arguments)-Ve,M=Qr(b-x),T=b>x;if(s||(s=c=f()),pj))s.moveTo(0,0);else if(M>ke-j)s.moveTo(p*Ut(x),p*gt(x)),s.arc(0,0,p,x,b,!T),l>j&&(s.moveTo(l*Ut(b),l*gt(b)),s.arc(0,0,l,b,x,T));else{var I=x,S=b,N=x,$=b,v=M,P=M,F=a.apply(this,arguments)/2,O=F>j&&(r?+r.apply(this,arguments):ie(l*l+p*p)),H=On(Qr(p-l)/2,+n.apply(this,arguments)),C=H,y=H,m,d;if(O>j){var k=Kr(O/l*gt(F)),g=Kr(O/p*gt(F));(v-=k*2)>j?(k*=T?1:-1,N+=k,$-=k):(v=0,N=$=(x+b)/2),(P-=g*2)>j?(g*=T?1:-1,I+=g,S-=g):(P=0,I=S=(x+b)/2)}var A=p*Ut(I),D=p*gt(I),R=l*Ut($),z=l*gt($);if(H>j){var q=p*Ut(S),V=p*gt(S),K=l*Ut(N),lt=l*gt(N),Z;if(Mj?y>j?(m=En(K,lt,A,D,p,y,T),d=En(q,V,R,z,p,y,T),s.moveTo(m.cx+m.x01,m.cy+m.y01),yj)||!(v>j)?s.lineTo(R,z):C>j?(m=En(R,z,q,V,l,-C,T),d=En(A,D,K,lt,l,-C,T),s.lineTo(m.cx+m.x01,m.cy+m.y01),Ct?1:e>=t?0:NaN}function is(t){return t}function Ec(){var t=is,e=rs,n=null,r=W(0),i=W(ke),o=W(0);function a(s){var f,u=(s=Rn(s)).length,c,h,l=0,p=new Array(u),x=new Array(u),b=+r.apply(this,arguments),M=Math.min(ke,Math.max(-ke,i.apply(this,arguments)-b)),T,I=Math.min(Math.abs(M)/u,o.apply(this,arguments)),S=I*(M<0?-1:1),N;for(f=0;f0&&(l+=N);for(e!=null?p.sort(function($,v){return e(x[$],x[v])}):n!=null&&p.sort(function($,v){return n(s[$],s[v])}),f=0,h=l?(M-u*S)/l:0;f0?N*h:0)+S,x[c]={data:s[c],index:f,value:N,startAngle:b,endAngle:T,padAngle:I};return x}return a.value=function(s){return arguments.length?(t=typeof s=="function"?s:W(+s),a):t},a.sortValues=function(s){return arguments.length?(e=s,n=null,a):e},a.sort=function(s){return arguments.length?(n=s,e=null,a):n},a.startAngle=function(s){return arguments.length?(r=typeof s=="function"?s:W(+s),a):r},a.endAngle=function(s){return arguments.length?(i=typeof s=="function"?s:W(+s),a):i},a.padAngle=function(s){return arguments.length?(o=typeof s=="function"?s:W(+s),a):o},a}function Se(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function Xe(t){this._context=t}Xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Se(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Se(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Rc(t){return new Xe(t)}var Pn=class{constructor(e,n){this._context=e,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,n){switch(e=+e,n=+n,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,n):this._context.moveTo(e,n);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,n,e,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,e,this._y0,e,n);break}}this._x0=e,this._y0=n}};function Pc(t){return new Pn(t,!0)}function Yc(t){return new Pn(t,!1)}function pt(){}function os(t){this._context=t}os.prototype={areaStart:pt,areaEnd:pt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Se(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Fc(t){return new os(t)}function as(t){this._context=t}as.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:Se(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Uc(t){return new as(t)}function ss(t,e){this._basis=new Xe(t),this._beta=e}ss.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r=t[0],i=e[0],o=t[n]-r,a=e[n]-i,s=-1,f;++s<=n;)f=s/n,this._basis.point(this._beta*t[s]+(1-this._beta)*(r+f*o),this._beta*e[s]+(1-this._beta)*(i+f*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var zc=(function t(e){function n(r){return e===1?new Xe(r):new ss(r,e)}return n.beta=function(r){return t(+r)},n})(.85);function Ce(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Yn(t,e){this._context=t,this._k=(1-e)/6}Yn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ce(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Ce(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Lc=(function t(e){function n(r){return new Yn(r,e)}return n.tension=function(r){return t(+r)},n})(0);function Fn(t,e){this._context=t,this._k=(1-e)/6}Fn.prototype={areaStart:pt,areaEnd:pt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ce(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Hc=(function t(e){function n(r){return new Fn(r,e)}return n.tension=function(r){return t(+r)},n})(0);function Un(t,e){this._context=t,this._k=(1-e)/6}Un.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ce(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Bc=(function t(e){function n(r){return new Un(r,e)}return n.tension=function(r){return t(+r)},n})(0);function Ge(t,e,n){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>j){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,f=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/f,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/f}if(t._l23_a>j){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,c=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*u+t._x1*t._l23_2a-e*t._l12_2a)/c,a=(a*u+t._y1*t._l23_2a-n*t._l12_2a)/c}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function us(t,e){this._context=t,this._alpha=e}us.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Ge(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var qc=(function t(e){function n(r){return e?new us(r,e):new Yn(r,0)}return n.alpha=function(r){return t(+r)},n})(.5);function fs(t,e){this._context=t,this._alpha=e}fs.prototype={areaStart:pt,areaEnd:pt,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ge(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Wc=(function t(e){function n(r){return e?new fs(r,e):new Fn(r,0)}return n.alpha=function(r){return t(+r)},n})(.5);function ls(t,e){this._context=t,this._alpha=e}ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ge(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Vc=(function t(e){function n(r){return e?new ls(r,e):new Un(r,0)}return n.alpha=function(r){return t(+r)},n})(.5);function cs(t){this._context=t}cs.prototype={areaStart:pt,areaEnd:pt,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function Xc(t){return new cs(t)}function hs(t){return t<0?-1:1}function ps(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(n-t._y1)/(i||r<0&&-0),s=(o*i+a*r)/(r+i);return(hs(o)+hs(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(s))||0}function ms(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function ei(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,s=(o-r)/3;t._context.bezierCurveTo(r+s,i+s*e,o-s,a-s*n,o,a)}function zn(t){this._context=t}zn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ei(this,this._t0,ms(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,ei(this,ms(this,n=ps(this,t,e)),n);break;default:ei(this,this._t0,n=ps(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}};function ds(t){this._context=new xs(t)}(ds.prototype=Object.create(zn.prototype)).point=function(t,e){zn.prototype.point.call(this,e,t)};function xs(t){this._context=t}xs.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}};function Gc(t){return new zn(t)}function Zc(t){return new ds(t)}function gs(t){this._context=t}gs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),n===2)this._context.lineTo(t[1],e[1]);else for(var r=_s(t),i=_s(e),o=0,a=1;a=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[n-1]=(t[n]+i[n-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}break}}this._x=t,this._y=e}};function Kc(t){return new Ln(t,.5)}function Jc(t){return new Ln(t,0)}function jc(t){return new Ln(t,1)}var th={value:()=>{}};function vs(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}Hn.prototype=vs.prototype={constructor:Hn,on:function(t,e){var n=this._,r=eh(t+"",n),i,o=-1,a=r.length;if(arguments.length<2){for(;++o0)for(var n=new Array(i),r=0,i,o;r=0&&t._call.call(void 0,e),t=t._next;--Ne}function ws(){se=(qn=Je.now())+Wn,Ne=Qe=0;try{Ts()}finally{Ne=0,oh(),se=0}}function ih(){var t=Je.now(),e=t-qn;e>bs&&(Wn-=e,qn=t)}function oh(){for(var t,e=Bn,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Bn=n);Ke=t,ri(r)}function ri(t){if(!Ne){Qe&&(Qe=clearTimeout(Qe));var e=t-se;e>24?(t<1/0&&(Qe=setTimeout(ws,t-Je.now()-Wn)),Ze&&(Ze=clearInterval(Ze))):(Ze||(qn=Je.now(),Ze=setInterval(ih,bs)),Ne=1,Ms(ws))}}function Xn(t,e,n){var r=new je;return e=e==null?0:+e,r.restart(i=>{r.stop(),t(i+e)},e,n),r}var ah=ni("start","end","cancel","interrupt"),sh=[],Cs=0,ks=1,Zn=2,Gn=3,Ss=4,Qn=5,en=6;function zt(t,e,n,r,i,o){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;uh(t,n,{name:e,index:r,group:i,on:ah,tween:sh,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Cs})}function nn(t,e){var n=Q(t,e);if(n.state>Cs)throw new Error("too late; already scheduled");return n}function rt(t,e){var n=Q(t,e);if(n.state>Gn)throw new Error("too late; already running");return n}function Q(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function uh(t,e,n){var r=t.__transition,i;r[e]=n,n.timer=Vn(o,0,n.time);function o(u){n.state=ks,n.timer.restart(a,n.delay,n.time),n.delay<=u&&a(u-n.delay)}function a(u){var c,h,l,p;if(n.state!==ks)return f();for(c in r)if(p=r[c],p.name===n.name){if(p.state===Gn)return Xn(a);p.state===Ss?(p.state=en,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete r[c]):+cZn&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function Nh(t,e,n){var r,i,o=Ch(e)?nn:rt;return function(){var a=o(this,t),s=a.on;s!==r&&(i=(r=s).copy()).on(e,n),a.on=i}}function Fs(t,e){var n=this._id;return arguments.length<2?Q(this.node(),n).on.on(t):this.each(Nh(n,t,e))}function Ah(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Us(){return this.on("end.remove",Ah(this._id))}function zs(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Wt(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/logger.ts\nimport dayjs from \"dayjs\";\nvar LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\nvar log = {\n trace: /* @__PURE__ */ __name((..._args) => {\n }, \"trace\"),\n debug: /* @__PURE__ */ __name((..._args) => {\n }, \"debug\"),\n info: /* @__PURE__ */ __name((..._args) => {\n }, \"info\"),\n warn: /* @__PURE__ */ __name((..._args) => {\n }, \"warn\"),\n error: /* @__PURE__ */ __name((..._args) => {\n }, \"error\"),\n fatal: /* @__PURE__ */ __name((..._args) => {\n }, \"fatal\")\n};\nvar setLogLevel = /* @__PURE__ */ __name(function(level = \"fatal\") {\n let numericLevel = LEVELS.fatal;\n if (typeof level === \"string\") {\n if (level.toLowerCase() in LEVELS) {\n numericLevel = LEVELS[level];\n }\n } else if (typeof level === \"number\") {\n numericLevel = level;\n }\n log.trace = () => {\n };\n log.debug = () => {\n };\n log.info = () => {\n };\n log.warn = () => {\n };\n log.error = () => {\n };\n log.fatal = () => {\n };\n if (numericLevel <= LEVELS.fatal) {\n log.fatal = console.error ? console.error.bind(console, format(\"FATAL\"), \"color: orange\") : console.log.bind(console, \"\\x1B[35m\", format(\"FATAL\"));\n }\n if (numericLevel <= LEVELS.error) {\n log.error = console.error ? console.error.bind(console, format(\"ERROR\"), \"color: orange\") : console.log.bind(console, \"\\x1B[31m\", format(\"ERROR\"));\n }\n if (numericLevel <= LEVELS.warn) {\n log.warn = console.warn ? console.warn.bind(console, format(\"WARN\"), \"color: orange\") : console.log.bind(console, `\\x1B[33m`, format(\"WARN\"));\n }\n if (numericLevel <= LEVELS.info) {\n log.info = console.info ? console.info.bind(console, format(\"INFO\"), \"color: lightblue\") : console.log.bind(console, \"\\x1B[34m\", format(\"INFO\"));\n }\n if (numericLevel <= LEVELS.debug) {\n log.debug = console.debug ? console.debug.bind(console, format(\"DEBUG\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"DEBUG\"));\n }\n if (numericLevel <= LEVELS.trace) {\n log.trace = console.debug ? console.debug.bind(console, format(\"TRACE\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"TRACE\"));\n }\n}, \"setLogLevel\");\nvar format = /* @__PURE__ */ __name((level) => {\n const time = dayjs().format(\"ss.SSS\");\n return `%c${time} : ${level} : `;\n}, \"format\");\n\nexport {\n __name,\n __export,\n log,\n setLogLevel\n};\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can\u2019t do this\n // for a comparator (except for specific, known comparators) because we can\u2019t\n // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n", "export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n", "export default function(x) {\n return x;\n}\n", "import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n", "function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don\u2019t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n", "function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n", "export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n", "export default function(update) {\n return new Array(update.length);\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don\u2019t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn\u2019t worried about \u201Clive\u201D collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don\u2019t; we\u2019d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n", "export default function() {\n return Array.from(this);\n}\n", "export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n", "export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n", "export default function() {\n return !this.node();\n}\n", "export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n", "function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n", "function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n", "function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n", "function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n", "function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n", "function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n", "function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n", "function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n", "export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n", "export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n", "export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n", "export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n", "export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n", "export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n", "export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n", "export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n", "export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n", "export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n", "export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n", "export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n", "export default function() {\n return Array.from(this);\n}\n", "export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n", "export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don\u2019t include the root\u2019s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n", "export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n", "import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n", "export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n", "export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n", "export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n", "import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n", "export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n", "import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n", "export default function constants(x) {\n return function() {\n return x;\n };\n}\n", "export default function number(x) {\n return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n", "export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n", "import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it\u2019s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n", "export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n", "export default function(d) {\n return d;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n", "import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n", "export default function() {}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n", "function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n", "function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n", "function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n", "var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we\u2019re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we\u2019re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name \u201C__brush\u201D rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n", "export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n"],
+ "mappings": "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",
+ "names": ["require_dayjs_min", "__commonJSMin", "exports", "module", "s", "u", "a", "o", "c", "f", "d", "l", "$", "y", "t", "e", "n", "m", "r", "v", "i", "g", "D", "p", "S", "_", "w", "O", "b", "M", "h", "k", "import_dayjs", "__defProp", "__name", "target", "value", "__export", "all", "name", "LEVELS", "log", "_args", "setLogLevel", "level", "numericLevel", "format", "dayjs", "max", "values", "valueof", "value", "index", "min", "values", "valueof", "value", "index", "ascending", "a", "b", "descending", "a", "b", "bisector", "f", "compare1", "compare2", "delta", "ascending", "d", "x", "descending", "zero", "left", "a", "lo", "hi", "mid", "right", "center", "i", "number", "x", "ascendingBisect", "bisector", "ascending", "bisectRight", "bisectLeft", "bisectCenter", "number", "bisect_default", "InternMap", "entries", "key", "keyof", "value", "intern_get", "intern_set", "intern_delete", "intern_get", "_intern", "_key", "value", "key", "intern_set", "intern_delete", "keyof", "e10", "e5", "e2", "tickSpec", "start", "stop", "count", "step", "power", "error", "factor", "i1", "i2", "inc", "ticks", "reverse", "n", "i", "tickIncrement", "tickStep", "range", "start", "stop", "step", "n", "i", "identity_default", "x", "top", "right", "bottom", "left", "epsilon", "translateX", "x", "translateY", "y", "number", "scale", "d", "center", "offset", "entering", "axis", "orient", "tickArguments", "tickValues", "tickFormat", "tickSizeInner", "tickSizeOuter", "tickPadding", "k", "transform", "context", "values", "format", "identity_default", "spacing", "range", "range0", "range1", "position", "selection", "path", "tick", "tickExit", "tickEnter", "line", "text", "p", "_", "axisTop", "axisBottom", "scale", "axis", "bottom", "none", "selector_default", "selector", "select_default", "select", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "Selection", "array", "x", "empty", "selectorAll_default", "selector", "arrayAll", "select", "array", "selectAll_default", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "Selection", "matcher_default", "selector", "childMatcher", "node", "find", "childFind", "match", "childFirst", "selectChild_default", "childMatcher", "filter", "children", "childrenFilter", "match", "selectChildren_default", "childMatcher", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Selection", "sparse_default", "update", "enter_default", "Selection", "sparse_default", "EnterNode", "parent", "datum", "child", "next", "selector", "constant_default", "x", "bindIndex", "parent", "group", "enter", "update", "exit", "data", "i", "node", "groupLength", "dataLength", "EnterNode", "bindKey", "key", "nodeByKeyValue", "keyValues", "keyValue", "datum", "data_default", "value", "bind", "parents", "groups", "constant_default", "m", "j", "arraylike", "enterGroup", "updateGroup", "exitGroup", "i0", "i1", "previous", "next", "Selection", "exit_default", "Selection", "sparse_default", "join_default", "onenter", "onupdate", "onexit", "enter", "update", "exit", "merge_default", "context", "selection", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Selection", "order_default", "groups", "j", "m", "group", "next", "node", "sort_default", "compare", "ascending", "compareNode", "a", "b", "groups", "m", "sortgroups", "j", "group", "n", "sortgroup", "node", "i", "Selection", "call_default", "callback", "nodes_default", "node_default", "groups", "j", "m", "group", "n", "node", "size_default", "size", "node", "empty_default", "each_default", "callback", "groups", "j", "m", "group", "i", "n", "node", "xhtml", "namespaces_default", "namespace_default", "name", "prefix", "i", "namespaces_default", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "value", "attrConstantNS", "attrFunction", "v", "attrFunctionNS", "attr_default", "namespace_default", "node", "window_default", "node", "styleRemove", "name", "styleConstant", "value", "priority", "styleFunction", "v", "style_default", "styleValue", "node", "window_default", "propertyRemove", "name", "propertyConstant", "value", "propertyFunction", "v", "property_default", "classArray", "string", "classList", "node", "ClassList", "name", "i", "classedAdd", "names", "list", "n", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "value", "classed_default", "textRemove", "textConstant", "value", "textFunction", "v", "text_default", "htmlRemove", "htmlConstant", "value", "htmlFunction", "v", "html_default", "raise", "raise_default", "lower", "lower_default", "creatorInherit", "name", "document", "uri", "xhtml", "creatorFixed", "fullname", "creator_default", "namespace_default", "append_default", "name", "create", "creator_default", "constantNull", "insert_default", "name", "before", "create", "creator_default", "select", "selector_default", "remove", "parent", "remove_default", "selection_cloneShallow", "clone", "parent", "selection_cloneDeep", "clone_default", "deep", "datum_default", "value", "contextListener", "listener", "event", "parseTypenames", "typenames", "t", "name", "i", "onRemove", "typename", "on", "j", "m", "onAdd", "value", "options", "o", "on_default", "n", "dispatchEvent", "node", "type", "params", "window", "window_default", "event", "dispatchConstant", "dispatchFunction", "dispatch_default", "iterator_default", "groups", "j", "m", "group", "n", "node", "root", "Selection", "groups", "parents", "selection", "selection_selection", "select_default", "selectAll_default", "selectChild_default", "selectChildren_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "iterator_default", "selection_default", "select_default", "selector", "Selection", "root", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "define_default", "color", "channels", "color_formatHex", "color_formatHex8", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "m", "l", "rgbn", "Rgb", "rgba", "hsla", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "extend", "k", "clampi", "clampa", "rgb_formatHex", "rgb_formatHex8", "rgb_formatRgb", "hex", "value", "h", "s", "Hsl", "min", "max", "hsl", "m2", "m1", "hsl2rgb", "clamph", "clampt", "radians", "degrees", "K", "Xn", "Yn", "Zn", "t0", "t1", "t2", "t3", "labConvert", "o", "Lab", "Hcl", "hcl2lab", "Rgb", "rgbConvert", "r", "rgb2lrgb", "g", "b", "y", "xyz2lab", "x", "z", "lab", "l", "a", "b", "opacity", "labConvert", "Lab", "define_default", "extend", "Color", "k", "K", "y", "x", "z", "Xn", "lab2xyz", "Yn", "Zn", "Rgb", "lrgb2rgb", "xyz2lab", "t3", "t2", "t0", "t1", "rgb2lrgb", "hclConvert", "o", "Hcl", "h", "degrees", "hcl", "h", "c", "l", "opacity", "hclConvert", "Hcl", "hcl2lab", "o", "Lab", "radians", "define_default", "extend", "Color", "k", "K", "constant_default", "x", "linear", "a", "d", "t", "exponential", "b", "y", "hue", "constant_default", "gamma", "nogamma", "hcl", "hue", "start", "end", "h", "c", "nogamma", "l", "opacity", "t", "hcl_default", "hclLong", "basis", "t1", "v0", "v1", "v2", "v3", "t2", "t3", "basis_default", "values", "n", "t", "i", "basisClosed_default", "values", "n", "t", "i", "v0", "v1", "v2", "v3", "basis", "rgb_default", "rgbGamma", "y", "color", "gamma", "rgb", "start", "end", "r", "g", "b", "opacity", "nogamma", "t", "rgbSpline", "spline", "colors", "i", "rgbBasis", "basis_default", "rgbBasisClosed", "basisClosed_default", "numberArray_default", "a", "b", "c", "t", "isNumberArray", "x", "genericArray", "a", "b", "nb", "na", "x", "c", "i", "value_default", "t", "date_default", "a", "b", "d", "t", "number_default", "a", "b", "t", "object_default", "a", "b", "i", "c", "k", "value_default", "t", "reA", "reB", "zero", "b", "one", "t", "string_default", "a", "bi", "am", "bm", "bs", "i", "q", "number_default", "o", "value_default", "a", "b", "t", "c", "constant_default", "number_default", "color", "rgb_default", "string_default", "date_default", "isNumberArray", "numberArray_default", "genericArray", "object_default", "round_default", "a", "b", "t", "degrees", "identity", "decompose_default", "a", "b", "c", "d", "e", "f", "scaleX", "scaleY", "skewX", "svgNode", "parseCss", "value", "m", "identity", "decompose_default", "parseSvg", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "s", "translate", "xa", "ya", "xb", "yb", "q", "i", "number_default", "rotate", "a", "b", "skewX", "scale", "t", "n", "o", "interpolateTransformCss", "parseCss", "interpolateTransformSvg", "parseSvg", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent_default", "x", "formatDecimalParts", "formatGroup_default", "grouping", "thousands", "value", "width", "t", "j", "g", "length", "formatNumerals_default", "numerals", "value", "i", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "prefixExponent", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "i", "n", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "formatTypes_default", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "map", "prefixes", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "locale", "format", "formatPrefix", "defaultLocale", "definition", "locale_default", "precisionFixed_default", "step", "exponent_default", "precisionPrefix_default", "step", "value", "exponent_default", "precisionRound_default", "step", "max", "exponent_default", "count", "node", "sum", "children", "i", "count_default", "each_default", "callback", "that", "index", "node", "eachBefore_default", "callback", "that", "node", "nodes", "children", "i", "index", "eachAfter_default", "callback", "that", "node", "nodes", "next", "children", "i", "n", "index", "find_default", "callback", "that", "index", "node", "sum_default", "value", "node", "sum", "children", "sort_default", "compare", "node", "path_default", "end", "start", "ancestor", "leastCommonAncestor", "nodes", "k", "a", "b", "aNodes", "bNodes", "c", "ancestors_default", "node", "nodes", "descendants_default", "leaves_default", "leaves", "node", "links_default", "root", "links", "node", "iterator_default", "node", "current", "next", "children", "n", "hierarchy", "data", "children", "mapChildren", "objectChildren", "root", "Node", "node", "nodes", "child", "childs", "i", "n", "computeHeight", "node_copy", "copyData", "d", "height", "count_default", "each_default", "eachAfter_default", "eachBefore_default", "find_default", "sum_default", "sort_default", "path_default", "ancestors_default", "descendants_default", "leaves_default", "links_default", "iterator_default", "round_default", "node", "dice_default", "parent", "x0", "y0", "x1", "y1", "nodes", "node", "i", "n", "k", "slice_default", "parent", "x0", "y0", "x1", "y1", "nodes", "node", "i", "n", "k", "phi", "squarifyRatio", "ratio", "parent", "x0", "y0", "x1", "y1", "rows", "nodes", "row", "nodeValue", "i0", "i1", "n", "dx", "dy", "value", "sumValue", "minValue", "maxValue", "newRatio", "minRatio", "alpha", "beta", "dice_default", "slice_default", "squarify_default", "custom", "squarify", "x", "required", "f", "constantZero", "constant_default", "x", "treemap_default", "tile", "squarify_default", "round", "dx", "dy", "paddingStack", "paddingInner", "constantZero", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "treemap", "root", "positionNode", "round_default", "node", "x0", "y0", "x1", "y1", "x", "required", "constant_default", "initRange", "domain", "range", "implicit", "ordinal", "index", "InternMap", "domain", "range", "unknown", "scale", "d", "i", "_", "value", "initRange", "band", "scale", "ordinal", "domain", "ordinalRange", "r0", "r1", "step", "bandwidth", "round", "paddingInner", "paddingOuter", "align", "rescale", "n", "reverse", "start", "stop", "values", "range", "i", "_", "initRange", "constants", "x", "number", "x", "unit", "identity", "x", "normalize", "a", "b", "constants", "clamper", "t", "bimap", "domain", "range", "interpolate", "d0", "d1", "r0", "r1", "polymap", "j", "d", "r", "i", "bisect_default", "copy", "source", "target", "transformer", "value_default", "transform", "untransform", "unknown", "clamp", "piecewise", "output", "input", "rescale", "n", "scale", "y", "number_default", "_", "number", "round_default", "u", "continuous", "tickFormat", "start", "stop", "count", "specifier", "step", "tickStep", "precision", "formatSpecifier", "value", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "format", "linearish", "scale", "domain", "count", "d", "ticks", "specifier", "tickFormat", "i0", "i1", "start", "stop", "prestep", "step", "maxIter", "tickIncrement", "linear", "continuous", "copy", "initRange", "t0", "t1", "timeInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "millisecond", "timeInterval", "date", "step", "start", "end", "k", "milliseconds", "second", "timeInterval", "date", "step", "start", "end", "seconds", "timeMinute", "timeInterval", "date", "step", "start", "end", "timeMinutes", "utcMinute", "utcMinutes", "timeHour", "timeInterval", "date", "step", "start", "end", "timeHours", "utcHour", "utcHours", "timeDay", "timeInterval", "date", "step", "start", "end", "timeDays", "utcDay", "utcDays", "unixDay", "unixDays", "timeWeekday", "i", "timeInterval", "date", "step", "start", "end", "timeSunday", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSundays", "timeMondays", "timeTuesdays", "timeWednesdays", "timeThursdays", "timeFridays", "timeSaturdays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "timeMonth", "timeInterval", "date", "step", "start", "end", "timeMonths", "utcMonth", "utcMonths", "timeYear", "timeInterval", "date", "step", "start", "end", "k", "timeYears", "utcYear", "utcYears", "ticker", "year", "month", "week", "day", "hour", "minute", "tickIntervals", "second", "ticks", "start", "stop", "count", "reverse", "interval", "tickInterval", "target", "i", "bisector", "step", "tickStep", "millisecond", "t", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "unixDay", "utcHour", "utcMinute", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "localDate", "d", "date", "utcDate", "newDate", "y", "m", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "utcMonday", "utcDay", "timeMonday", "timeDay", "parse", "f", "p", "numberRe", "percentRe", "requoteRe", "value", "fill", "width", "sign", "length", "requote", "s", "names", "name", "timeYear", "timeSunday", "dISO", "timeThursday", "z", "utcYear", "dow", "utcSunday", "UTCdISO", "utcThursday", "locale", "timeFormat", "timeParse", "utcFormat", "utcParse", "defaultLocale", "definition", "formatLocale", "nice", "domain", "interval", "i0", "i1", "x0", "x1", "t", "date", "number", "calendar", "ticks", "tickInterval", "year", "month", "week", "day", "hour", "minute", "second", "format", "scale", "continuous", "invert", "domain", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickFormat", "y", "_", "interval", "d", "count", "specifier", "nice", "copy", "time", "initRange", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "timeFormat", "colors_default", "specifier", "n", "colors", "i", "Tableau10_default", "colors_default", "constant_default", "x", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "pi", "halfPi", "tau", "acos", "x", "asin", "pi", "tau", "epsilon", "tauEpsilon", "append", "strings", "i", "appendRound", "digits", "d", "k", "n", "Path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path", "withPath", "shape", "digits", "_", "d", "Path", "arcInnerRadius", "d", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "path", "withPath", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "slice", "array_default", "x", "Linear", "context", "x", "y", "linear_default", "x", "p", "y", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "line", "data", "i", "n", "array_default", "d", "defined0", "buffer", "_", "descending_default", "a", "b", "identity_default", "d", "pie_default", "value", "identity_default", "sortValues", "descending_default", "sort", "startAngle", "constant_default", "endAngle", "tau", "padAngle", "pie", "data", "i", "n", "array_default", "j", "k", "sum", "index", "arcs", "a0", "da", "a1", "p", "pa", "v", "_", "point", "that", "x", "y", "Basis", "context", "basis_default", "Bump", "context", "x", "y", "bumpX", "context", "Bump", "bumpY", "noop_default", "BasisClosed", "context", "noop_default", "x", "y", "point", "basisClosed_default", "BasisOpen", "context", "x", "y", "x0", "y0", "point", "basisOpen_default", "Bundle", "context", "beta", "Basis", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "bundle_default", "custom", "bundle", "point", "that", "x", "y", "Cardinal", "context", "tension", "cardinal_default", "custom", "cardinal", "CardinalClosed", "context", "tension", "noop_default", "x", "y", "point", "cardinalClosed_default", "custom", "cardinal", "CardinalOpen", "context", "tension", "x", "y", "point", "cardinalOpen_default", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "a", "n", "b", "m", "CatmullRom", "context", "alpha", "x23", "y23", "catmullRom_default", "custom", "catmullRom", "Cardinal", "CatmullRomClosed", "context", "alpha", "noop_default", "x", "y", "x23", "y23", "point", "catmullRomClosed_default", "custom", "catmullRom", "CardinalClosed", "CatmullRomOpen", "context", "alpha", "x", "y", "x23", "y23", "point", "catmullRomOpen_default", "custom", "catmullRom", "CardinalOpen", "LinearClosed", "context", "noop_default", "x", "y", "linearClosed_default", "sign", "x", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "t", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "y", "MonotoneY", "ReflectContext", "monotoneX", "monotoneY", "Natural", "context", "x", "y", "px", "controlPoints", "py", "i0", "i1", "i", "m", "a", "b", "r", "natural_default", "Step", "context", "t", "x", "y", "x1", "step_default", "stepBefore", "stepAfter", "noop", "dispatch", "i", "n", "_", "t", "Dispatch", "parseTypenames", "typenames", "types", "name", "typename", "callback", "T", "get", "set", "copy", "type", "that", "args", "c", "dispatch_default", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "Timer", "timer", "callback", "delay", "time", "sleep", "t", "timerFlush", "wake", "nap", "poke", "t0", "t1", "t2", "timeout_default", "callback", "delay", "time", "t", "Timer", "elapsed", "emptyOn", "dispatch_default", "emptyTween", "CREATED", "SCHEDULED", "STARTING", "STARTED", "RUNNING", "ENDING", "ENDED", "schedule_default", "node", "name", "id", "index", "group", "timing", "schedules", "create", "init", "schedule", "get", "set", "self", "tween", "timer", "elapsed", "start", "i", "j", "n", "o", "stop", "timeout_default", "tick", "t", "interrupt_default", "node", "name", "schedules", "schedule", "active", "empty", "i", "STARTING", "ENDING", "ENDED", "interrupt_default", "name", "tweenRemove", "id", "name", "tween0", "tween1", "schedule", "set", "tween", "i", "n", "tweenFunction", "value", "t", "tween_default", "get", "tweenValue", "transition", "node", "interpolate_default", "a", "b", "c", "number_default", "color", "rgb_default", "string_default", "attrRemove", "name", "attrRemoveNS", "fullname", "attrConstant", "interpolate", "value1", "string00", "string1", "interpolate0", "string0", "attrConstantNS", "attrFunction", "value", "string10", "attrFunctionNS", "attr_default", "namespace_default", "i", "interpolateTransformSvg", "interpolate_default", "tweenValue", "attrInterpolate", "name", "i", "t", "attrInterpolateNS", "fullname", "attrTweenNS", "value", "t0", "i0", "tween", "attrTween", "attrTween_default", "key", "namespace_default", "delayFunction", "id", "value", "init", "delayConstant", "delay_default", "get", "durationFunction", "id", "value", "set", "durationConstant", "duration_default", "get", "easeConstant", "id", "value", "set", "ease_default", "get", "easeVarying", "id", "value", "v", "set", "easeVarying_default", "filter_default", "match", "matcher_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "i", "Transition", "merge_default", "transition", "groups0", "groups1", "m0", "m1", "m", "merges", "j", "group0", "group1", "n", "merge", "node", "i", "Transition", "start", "name", "t", "i", "onFunction", "id", "listener", "on0", "on1", "sit", "init", "set", "schedule", "on", "on_default", "get", "removeFunction", "id", "parent", "i", "remove_default", "select_default", "select", "name", "id", "selector_default", "groups", "m", "subgroups", "j", "group", "n", "subgroup", "node", "subnode", "i", "schedule_default", "get", "Transition", "selectAll_default", "select", "name", "id", "selectorAll_default", "groups", "m", "subgroups", "parents", "j", "group", "n", "node", "i", "children", "child", "inherit", "get", "k", "l", "schedule_default", "Transition", "Selection", "selection_default", "styleNull", "name", "interpolate", "string00", "string10", "interpolate0", "string0", "styleValue", "string1", "styleRemove", "styleConstant", "value1", "styleFunction", "value", "styleMaybeRemove", "id", "on0", "on1", "listener0", "key", "event", "remove", "schedule", "set", "on", "listener", "style_default", "priority", "i", "interpolateTransformCss", "interpolate_default", "tweenValue", "styleInterpolate", "name", "i", "priority", "t", "styleTween", "value", "i0", "tween", "styleTween_default", "key", "textConstant", "value", "textFunction", "value1", "text_default", "tweenValue", "textInterpolate", "i", "t", "textTween", "value", "t0", "i0", "tween", "textTween_default", "key", "transition_default", "name", "id0", "id1", "newId", "groups", "m", "j", "group", "n", "node", "i", "inherit", "get", "schedule_default", "Transition", "end_default", "on0", "on1", "that", "id", "size", "resolve", "reject", "cancel", "end", "schedule", "set", "on", "id", "Transition", "groups", "parents", "name", "transition", "selection_default", "newId", "selection_prototype", "select_default", "selectAll_default", "filter_default", "merge_default", "transition_default", "on_default", "attr_default", "attrTween_default", "style_default", "styleTween_default", "text_default", "textTween_default", "remove_default", "tween_default", "delay_default", "duration_default", "ease_default", "easeVarying_default", "end_default", "cubicInOut", "defaultTiming", "cubicInOut", "inherit", "node", "id", "timing", "transition_default", "name", "Transition", "newId", "now", "groups", "m", "j", "group", "n", "i", "schedule_default", "selection_default", "interrupt_default", "transition_default", "abs", "max", "min", "number1", "e", "number2", "X", "type", "x", "xy", "Y", "y", "XY", "type", "Transform", "k", "x", "y", "point", "location", "identity", "transform", "node"]
+}
diff --git a/docs/public/chunk-77XMBG7U.min.js b/docs/public/chunk-77XMBG7U.min.js
new file mode 100755
index 0000000..753d7ab
--- /dev/null
+++ b/docs/public/chunk-77XMBG7U.min.js
@@ -0,0 +1,2 @@
+import{b as x}from"./chunk-6TVUEPFY.min.js";var c={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},T={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};function w(n,l){if(n===void 0||l===void 0)return{angle:0,deltaX:0,deltaY:0};n=t(n),l=t(l);let[s,e]=[n.x,n.y],[a,i]=[l.x,l.y],o=a-s,y=i-e;return{angle:Math.atan(y/o),deltaX:o,deltaY:y}}x(w,"calculateDeltaAndAngle");var t=x(n=>Array.isArray(n)?{x:n[0],y:n[1]}:n,"pointTransformer"),M=x(n=>({x:x(function(l,s,e){let a=0,i=t(e[0]).x=0?1:-1)}else if(s===e.length-1&&Object.hasOwn(c,n.arrowTypeEnd)){let{angle:r,deltaX:g}=w(e[e.length-1],e[e.length-2]);a=c[n.arrowTypeEnd]*Math.cos(r)*(g>=0?1:-1)}let o=Math.abs(t(l).x-t(e[e.length-1]).x),y=Math.abs(t(l).y-t(e[e.length-1]).y),f=Math.abs(t(l).x-t(e[0]).x),d=Math.abs(t(l).y-t(e[0]).y),h=c[n.arrowTypeStart],u=c[n.arrowTypeEnd],p=1;if(o0&&y0&&d=0?1:-1)}else if(s===e.length-1&&Object.hasOwn(c,n.arrowTypeEnd)){let{angle:r,deltaY:g}=w(e[e.length-1],e[e.length-2]);a=c[n.arrowTypeEnd]*Math.abs(Math.sin(r))*(g>=0?1:-1)}let o=Math.abs(t(l).y-t(e[e.length-1]).y),y=Math.abs(t(l).x-t(e[e.length-1]).x),f=Math.abs(t(l).y-t(e[0]).y),d=Math.abs(t(l).x-t(e[0]).x),h=c[n.arrowTypeStart],u=c[n.arrowTypeEnd],p=1;if(o0&&y0&&d {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n}, \"pointTransformer\");\nvar getLineFunctionsWithOffset = /* @__PURE__ */ __name((edge) => {\n return {\n x: /* @__PURE__ */ __name(function(d, i, data) {\n let offset = 0;\n const DIRECTION = pointTransformer(data[0]).x < pointTransformer(data[data.length - 1]).x ? \"left\" : \"right\";\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n const differenceToEnd = Math.abs(\n pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n );\n const differenceInYEnd = Math.abs(\n pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n );\n const differenceToStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n const differenceInYStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n const startMarkerHeight = markerOffsets[edge.arrowTypeStart];\n const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];\n const extraRoom = 1;\n if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInYEnd < endMarkerHeight) {\n let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n adjustment *= DIRECTION === \"right\" ? -1 : 1;\n offset -= adjustment;\n }\n if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInYStart < startMarkerHeight) {\n let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n adjustment *= DIRECTION === \"right\" ? -1 : 1;\n offset += adjustment;\n }\n return pointTransformer(d).x + offset;\n }, \"x\"),\n y: /* @__PURE__ */ __name(function(d, i, data) {\n let offset = 0;\n const DIRECTION = pointTransformer(data[0]).y < pointTransformer(data[data.length - 1]).y ? \"down\" : \"up\";\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n const differenceToEnd = Math.abs(\n pointTransformer(d).y - pointTransformer(data[data.length - 1]).y\n );\n const differenceInXEnd = Math.abs(\n pointTransformer(d).x - pointTransformer(data[data.length - 1]).x\n );\n const differenceToStart = Math.abs(pointTransformer(d).y - pointTransformer(data[0]).y);\n const differenceInXStart = Math.abs(pointTransformer(d).x - pointTransformer(data[0]).x);\n const startMarkerHeight = markerOffsets[edge.arrowTypeStart];\n const endMarkerHeight = markerOffsets[edge.arrowTypeEnd];\n const extraRoom = 1;\n if (differenceToEnd < endMarkerHeight && differenceToEnd > 0 && differenceInXEnd < endMarkerHeight) {\n let adjustment = endMarkerHeight + extraRoom - differenceToEnd;\n adjustment *= DIRECTION === \"up\" ? -1 : 1;\n offset -= adjustment;\n }\n if (differenceToStart < startMarkerHeight && differenceToStart > 0 && differenceInXStart < startMarkerHeight) {\n let adjustment = startMarkerHeight + extraRoom - differenceToStart;\n adjustment *= DIRECTION === \"up\" ? -1 : 1;\n offset += adjustment;\n }\n return pointTransformer(d).y + offset;\n }, \"y\")\n };\n}, \"getLineFunctionsWithOffset\");\nif (void 0) {\n const { it, expect, describe } = void 0;\n describe(\"calculateDeltaAndAngle\", () => {\n it(\"should calculate the angle and deltas between two points\", () => {\n expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({\n angle: 1.5707963267948966,\n deltaX: 0,\n deltaY: 1\n });\n expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({\n angle: 0.7853981633974483,\n deltaX: -1,\n deltaY: -1\n });\n expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({\n angle: 0.7853981633974483,\n deltaX: -1,\n deltaY: -1\n });\n expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({\n angle: NaN,\n deltaX: 0,\n deltaY: 0\n });\n });\n it(\"should calculate the angle and deltas if one point in undefined\", () => {\n expect(calculateDeltaAndAngle(void 0, [0, 1])).toStrictEqual({\n angle: 0,\n deltaX: 0,\n deltaY: 0\n });\n expect(calculateDeltaAndAngle([0, 1], void 0)).toStrictEqual({\n angle: 0,\n deltaX: 0,\n deltaY: 0\n });\n });\n });\n}\n\nexport {\n markerOffsets,\n markerOffsets2,\n getLineFunctionsWithOffset\n};\n"],
+ "mappings": "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",
+ "names": ["markerOffsets", "markerOffsets2", "calculateDeltaAndAngle", "point1", "point2", "pointTransformer", "x1", "y1", "x2", "y2", "deltaX", "deltaY", "__name", "data", "getLineFunctionsWithOffset", "edge", "d", "i", "offset", "DIRECTION", "angle", "differenceToEnd", "differenceInYEnd", "differenceToStart", "differenceInYStart", "startMarkerHeight", "endMarkerHeight", "extraRoom", "adjustment", "differenceInXEnd", "differenceInXStart"]
+}
diff --git a/docs/public/chunk-7EBV5LUJ.min.js b/docs/public/chunk-7EBV5LUJ.min.js
new file mode 100755
index 0000000..a8f9fd9
--- /dev/null
+++ b/docs/public/chunk-7EBV5LUJ.min.js
@@ -0,0 +1,2 @@
+import{W as s}from"./chunk-3EE2TK35.min.js";import{b as n,j as e}from"./chunk-6TVUEPFY.min.js";var a=n(t=>{let{securityLevel:c}=s(),o=e("body");if(c==="sandbox"){let m=e(`#i${t}`).node()?.contentDocument??document;o=e(m.body)}return o.select(`#${t}`)},"selectSvgElement");export{a};
+//# sourceMappingURL=chunk-7EBV5LUJ.min.js.map
diff --git a/docs/public/chunk-7EBV5LUJ.min.js.map b/docs/public/chunk-7EBV5LUJ.min.js.map
new file mode 100755
index 0000000..92f285f
--- /dev/null
+++ b/docs/public/chunk-7EBV5LUJ.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-EXTU4WIE.mjs"],
+ "sourcesContent": ["import {\n getConfig2 as getConfig\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/selectSvgElement.ts\nimport { select } from \"d3\";\nvar selectSvgElement = /* @__PURE__ */ __name((id) => {\n const { securityLevel } = getConfig();\n let root = select(\"body\");\n if (securityLevel === \"sandbox\") {\n const sandboxElement = select(`#i${id}`);\n const doc = sandboxElement.node()?.contentDocument ?? document;\n root = select(doc.body);\n }\n const svg = root.select(`#${id}`);\n return svg;\n}, \"selectSvgElement\");\n\nexport {\n selectSvgElement\n};\n"],
+ "mappings": "+FASA,IAAIA,EAAmCC,EAAQC,GAAO,CACpD,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAU,EAChCC,EAAOC,EAAO,MAAM,EACxB,GAAIH,IAAkB,UAAW,CAE/B,IAAMI,EADiBD,EAAO,KAAKJ,CAAE,EAAE,EACZ,KAAK,GAAG,iBAAmB,SACtDG,EAAOC,EAAOC,EAAI,IAAI,CACxB,CAEA,OADYF,EAAK,OAAO,IAAIH,CAAE,EAAE,CAElC,EAAG,kBAAkB",
+ "names": ["selectSvgElement", "__name", "id", "securityLevel", "getConfig2", "root", "select_default", "doc"]
+}
diff --git a/docs/public/chunk-ANLQN3B7.min.js b/docs/public/chunk-ANLQN3B7.min.js
new file mode 100755
index 0000000..55deb69
--- /dev/null
+++ b/docs/public/chunk-ANLQN3B7.min.js
@@ -0,0 +1,2 @@
+import{b as i}from"./chunk-6TVUEPFY.min.js";var o=i(({flowchart:t})=>{let r=t?.subGraphTitleMargin?.top??0,a=t?.subGraphTitleMargin?.bottom??0,e=r+a;return{subGraphTitleTopMargin:r,subGraphTitleBottomMargin:a,subGraphTitleTotalMargin:e}},"getSubGraphTitleMargins");export{o as a};
+//# sourceMappingURL=chunk-ANLQN3B7.min.js.map
diff --git a/docs/public/chunk-ANLQN3B7.min.js.map b/docs/public/chunk-ANLQN3B7.min.js.map
new file mode 100755
index 0000000..2d052cd
--- /dev/null
+++ b/docs/public/chunk-ANLQN3B7.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-CVBHYZKI.mjs"],
+ "sourcesContent": ["import {\n __name\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/utils/subGraphTitleMargins.ts\nvar getSubGraphTitleMargins = /* @__PURE__ */ __name(({\n flowchart\n}) => {\n const subGraphTitleTopMargin = flowchart?.subGraphTitleMargin?.top ?? 0;\n const subGraphTitleBottomMargin = flowchart?.subGraphTitleMargin?.bottom ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n}, \"getSubGraphTitleMargins\");\n\nexport {\n getSubGraphTitleMargins\n};\n"],
+ "mappings": "4CAKA,IAAIA,EAA0CC,EAAO,CAAC,CACpD,UAAAC,CACF,IAAM,CACJ,IAAMC,EAAyBD,GAAW,qBAAqB,KAAO,EAChEE,EAA4BF,GAAW,qBAAqB,QAAU,EACtEG,EAA2BF,EAAyBC,EAC1D,MAAO,CACL,uBAAAD,EACA,0BAAAC,EACA,yBAAAC,CACF,CACF,EAAG,yBAAyB",
+ "names": ["getSubGraphTitleMargins", "__name", "flowchart", "subGraphTitleTopMargin", "subGraphTitleBottomMargin", "subGraphTitleTotalMargin"]
+}
diff --git a/docs/public/chunk-B46QTP2J.min.js b/docs/public/chunk-B46QTP2J.min.js
new file mode 100755
index 0000000..feede30
--- /dev/null
+++ b/docs/public/chunk-B46QTP2J.min.js
@@ -0,0 +1,2 @@
+import{a as b}from"./chunk-VUATWGGE.min.js";import{D as E,E as F,F as y,G as L,H as G,J as V,K as x,L as R,N as Er,P as I,T as B,U as Q,d as g,f as vr,h as K,i as _r,k as j,n as f,p as N,q as Y,s as v,u as wr,v as br,x as W,z as O}from"./chunk-R5JLOOQ4.min.js";import{O as M,T as D,z as mr}from"./chunk-E5F23VE2.min.js";function k(r,e,n,t){var o;do o=B(t);while(r.hasNode(o));return n.dummy=e,r.setNode(o,n),o}function yr(r){var e=new b().setGraph(r.graph());return f(r.nodes(),function(n){e.setNode(n,r.node(n))}),f(r.edges(),function(n){var t=e.edge(n.v,n.w)||{weight:0,minlen:1},o=r.edge(n);e.setEdge(n.v,n.w,{weight:t.weight+o.weight,minlen:Math.max(t.minlen,o.minlen)})}),e}function q(r){var e=new b({multigraph:r.isMultigraph()}).setGraph(r.graph());return f(r.nodes(),function(n){r.children(n).length||e.setNode(n,r.node(n))}),f(r.edges(),function(n){e.setEdge(n,r.edge(n))}),e}function Z(r,e){var n=r.x,t=r.y,o=e.x-n,a=e.y-t,i=r.width/2,s=r.height/2;if(!o&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,d;return Math.abs(a)*i>Math.abs(o)*s?(a<0&&(s=-s),u=s*o/a,d=s):(o<0&&(i=-i),u=i,d=i*a/o),{x:n+u,y:t+d}}function P(r){var e=v(x(rr(r)+1),function(){return[]});return f(r.nodes(),function(n){var t=r.node(n),o=t.rank;E(o)||(e[o][t.order]=n)}),e}function xr(r){var e=L(v(r.nodes(),function(n){return r.node(n).rank}));f(r.nodes(),function(n){var t=r.node(n);W(t,"rank")&&(t.rank-=e)})}function kr(r){var e=L(v(r.nodes(),function(a){return r.node(a).rank})),n=[];f(r.nodes(),function(a){var i=r.node(a).rank-e;n[i]||(n[i]=[]),n[i].push(a)});var t=0,o=r.graph().nodeRankFactor;f(n,function(a,i){E(a)&&i%o!==0?--t:t&&f(a,function(s){r.node(s).rank+=t})})}function $(r,e,n,t){var o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=t),k(r,"border",o,e)}function rr(r){return y(v(r.nodes(),function(e){var n=r.node(e).rank;if(!E(n))return n}))}function gr(r,e){var n={lhs:[],rhs:[]};return f(r,function(t){e(t)?n.lhs.push(t):n.rhs.push(t)}),n}function Nr(r,e){var n=K();try{return e()}finally{console.log(r+" time: "+(K()-n)+"ms")}}function Ir(r,e){return e()}function Lr(r){function e(n){var t=r.children(n),o=r.node(n);if(t.length&&f(t,e),Object.prototype.hasOwnProperty.call(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var a=o.minRank,i=o.maxRank+1;a0;--s)if(i=e[s].dequeue(),i){t=t.concat(tr(r,e,n,i,!0));break}}}return t}function tr(r,e,n,t,o){var a=o?[]:void 0;return f(r.inEdges(t.v),function(i){var s=r.edge(i),u=r.node(i.v);o&&a.push({v:i.v,w:i.w}),u.out-=s,or(e,n,u)}),f(r.outEdges(t.v),function(i){var s=r.edge(i),u=i.w,d=r.node(u);d.in-=s,or(e,n,d)}),r.removeNode(t.v),a}function be(r,e){var n=new b,t=0,o=0;f(r.nodes(),function(s){n.setNode(s,{v:s,in:0,out:0})}),f(r.edges(),function(s){var u=n.edge(s.v,s.w)||0,d=e(s),c=u+d;n.setEdge(s.v,s.w,c),o=Math.max(o,n.node(s.v).out+=d),t=Math.max(t,n.node(s.w).in+=d)});var a=x(o+t+3).map(function(){return new X}),i=t+1;return f(n.nodes(),function(s){or(a,i,n.node(s))}),{graph:n,buckets:a,zeroIdx:i}}function or(r,e,n){n.out?n.in?r[n.out-n.in+e].enqueue(n):r[r.length-1].enqueue(n):r[0].enqueue(n)}function Mr(r){var e=r.graph().acyclicer==="greedy"?Sr(r,n(r)):Ee(r);f(e,function(t){var o=r.edge(t);r.removeEdge(t),o.forwardName=t.name,o.reversed=!0,r.setEdge(t.w,t.v,o,B("rev"))});function n(t){return function(o){return t.edge(o).weight}}}function Ee(r){var e=[],n={},t={};function o(a){Object.prototype.hasOwnProperty.call(t,a)||(t[a]=!0,n[a]=!0,f(r.outEdges(a),function(i){Object.prototype.hasOwnProperty.call(n,i.w)?e.push(i):o(i.w)}),delete n[a])}return f(r.nodes(),o),e}function Fr(r){f(r.edges(),function(e){var n=r.edge(e);if(n.reversed){r.removeEdge(e);var t=n.forwardName;delete n.reversed,delete n.forwardName,r.setEdge(e.w,e.v,n,t)}})}function Vr(r){r.graph().dummyChains=[],f(r.edges(),function(e){ye(r,e)})}function ye(r,e){var n=e.v,t=r.node(n).rank,o=e.w,a=r.node(o).rank,i=e.name,s=r.edge(e),u=s.labelRank;if(a!==t+1){r.removeEdge(e);var d=void 0,c,h;for(h=0,++t;ti.lim&&(s=i,u=!0);var d=N(e.edges(),function(c){return u===Yr(r,r.node(c.v),s)&&u!==Yr(r,r.node(c.w),s)});return G(d,function(c){return S(e,c)})}function Xr(r,e,n,t){var o=n.v,a=n.w;r.removeEdge(o,a),r.setEdge(t.v,t.w,{}),ur(r),fr(r,e),Ce(r,e)}function Ce(r,e){var n=Y(r.nodes(),function(o){return!e.node(o).parent}),t=sr(r,n);t=t.slice(1),f(t,function(o){var a=r.node(o).parent,i=e.edge(o,a),s=!1;i||(i=e.edge(a,o),s=!0),e.node(o).rank=e.node(a).rank+(s?i.minlen:-i.minlen)})}function Te(r,e,n){return r.hasEdge(e,n)}function Yr(r,e,n){return n.low<=e.lim&&e.lim<=n.lim}function dr(r){switch(r.graph().ranker){case"network-simplex":Hr(r);break;case"tight-tree":Re(r);break;case"longest-path":je(r);break;default:Hr(r)}}var je=z;function Re(r){z(r),H(r)}function Hr(r){T(r)}function Jr(r){var e=k(r,"root",{},"_root"),n=Se(r),t=y(O(n))-1,o=2*t+1;r.graph().nestingRoot=e,f(r.edges(),function(i){r.edge(i).minlen*=o});var a=Me(r)+1;f(r.children(),function(i){Kr(r,e,o,a,t,n,i)}),r.graph().nodeRankFactor=o}function Kr(r,e,n,t,o,a,i){var s=r.children(i);if(!s.length){i!==e&&r.setEdge(e,i,{weight:0,minlen:n});return}var u=$(r,"_bt"),d=$(r,"_bb"),c=r.node(i);r.setParent(u,i),c.borderTop=u,r.setParent(d,i),c.borderBottom=d,f(s,function(h){Kr(r,e,n,t,o,a,h);var l=r.node(h),p=l.borderTop?l.borderTop:h,m=l.borderBottom?l.borderBottom:h,w=l.borderTop?t:2*t,A=p!==m?1:o-a[i]+1;r.setEdge(u,p,{weight:w,minlen:A,nestingEdge:!0}),r.setEdge(m,d,{weight:w,minlen:A,nestingEdge:!0})}),r.parent(i)||r.setEdge(e,u,{weight:0,minlen:o+a[i]})}function Se(r){var e={};function n(t,o){var a=r.children(t);a&&a.length&&f(a,function(i){n(i,o+1)}),e[t]=o}return f(r.children(),function(t){n(t,1)}),e}function Me(r){return R(r.edges(),function(e,n){return e+r.edge(n).weight},0)}function Qr(r){var e=r.graph();r.removeNode(e.nestingRoot),delete e.nestingRoot,f(r.edges(),function(n){var t=r.edge(n);t.nestingEdge&&r.removeEdge(n)})}function Zr(r,e,n){var t={},o;f(n,function(a){for(var i=r.parent(a),s,u;i;){if(s=r.parent(i),s?(u=t[s],t[s]=i):(u=o,o=i),u&&u!==i){e.setEdge(u,i);return}i=s}})}function $r(r,e,n){var t=Ge(r),o=new b({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(a){return r.node(a)});return f(r.nodes(),function(a){var i=r.node(a),s=r.parent(a);(i.rank===e||i.minRank<=e&&e<=i.maxRank)&&(o.setNode(a),o.setParent(a,s||t),f(r[n](a),function(u){var d=u.v===a?u.w:u.v,c=o.edge(d,a),h=E(c)?0:c.weight;o.setEdge(d,a,{weight:r.edge(u).weight+h})}),Object.prototype.hasOwnProperty.call(i,"minRank")&&o.setNode(a,{borderLeft:i.borderLeft[e],borderRight:i.borderRight[e]}))}),o}function Ge(r){for(var e;r.hasNode(e=B("_root")););return e}function re(r,e){for(var n=0,t=1;t0;)c%2&&(h+=s[c+1]),c=c-1>>1,s[c]+=d.weight;u+=d.weight*h})),u}function ee(r){var e={},n=N(r.nodes(),function(s){return!r.children(s).length}),t=y(v(n,function(s){return r.node(s).rank})),o=v(x(t+1),function(){return[]});function a(s){if(!W(e,s)){e[s]=!0;var u=r.node(s);o[u.rank].push(s),f(r.successors(s),a)}}var i=I(n,function(s){return r.node(s).rank});return f(i,a),o}function ne(r,e){return v(e,function(n){var t=r.inEdges(n);if(t.length){var o=R(t,function(a,i){var s=r.edge(i),u=r.node(i.v);return{sum:a.sum+s.weight*u.order,weight:a.weight+s.weight}},{sum:0,weight:0});return{v:n,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:n}})}function te(r,e){var n={};f(r,function(o,a){var i=n[o.v]={indegree:0,in:[],out:[],vs:[o.v],i:a};E(o.barycenter)||(i.barycenter=o.barycenter,i.weight=o.weight)}),f(e.edges(),function(o){var a=n[o.v],i=n[o.w];!E(a)&&!E(i)&&(i.indegree++,a.out.push(n[o.w]))});var t=N(n,function(o){return!o.indegree});return Be(t)}function Be(r){var e=[];function n(a){return function(i){i.merged||(E(i.barycenter)||E(a.barycenter)||i.barycenter>=a.barycenter)&&Ae(a,i)}}function t(a){return function(i){i.in.push(a),--i.indegree===0&&r.push(i)}}for(;r.length;){var o=r.pop();e.push(o),f(o.in.reverse(),n(o)),f(o.out,t(o))}return v(N(e,function(a){return!a.merged}),function(a){return V(a,["vs","i","barycenter","weight"])})}function Ae(r,e){var n=0,t=0;r.weight&&(n+=r.barycenter*r.weight,t+=r.weight),e.weight&&(n+=e.barycenter*e.weight,t+=e.weight),r.vs=e.vs.concat(r.vs),r.barycenter=n/t,r.weight=t,r.i=Math.min(e.i,r.i),e.merged=!0}function ae(r,e){var n=gr(r,function(c){return Object.prototype.hasOwnProperty.call(c,"barycenter")}),t=n.lhs,o=I(n.rhs,function(c){return-c.i}),a=[],i=0,s=0,u=0;t.sort(De(!!e)),u=oe(a,o,u),f(t,function(c){u+=c.vs.length,a.push(c.vs),i+=c.barycenter*c.weight,s+=c.weight,u=oe(a,o,u)});var d={vs:g(a)};return s&&(d.barycenter=i/s,d.weight=s),d}function oe(r,e,n){for(var t;e.length&&(t=j(e)).i<=n;)e.pop(),r.push(t.vs),n++;return n}function De(r){return function(e,n){return e.barycentern.barycenter?1:r?n.i-e.i:e.i-n.i}}function cr(r,e,n,t){var o=r.children(e),a=r.node(e),i=a?a.borderLeft:void 0,s=a?a.borderRight:void 0,u={};i&&(o=N(o,function(m){return m!==i&&m!==s}));var d=ne(r,o);f(d,function(m){if(r.children(m.v).length){var w=cr(r,m.v,n,t);u[m.v]=w,Object.prototype.hasOwnProperty.call(w,"barycenter")&&ze(m,w)}});var c=te(d,n);Ye(c,u);var h=ae(c,t);if(i&&(h.vs=g([i,h.vs,s]),r.predecessors(i).length)){var l=r.node(r.predecessors(i)[0]),p=r.node(r.predecessors(s)[0]);Object.prototype.hasOwnProperty.call(h,"barycenter")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+l.order+p.order)/(h.weight+2),h.weight+=2}return h}function Ye(r,e){f(r,function(n){n.vs=g(n.vs.map(function(t){return e[t]?e[t].vs:t}))})}function ze(r,e){E(r.barycenter)?(r.barycenter=e.barycenter,r.weight=e.weight):(r.barycenter=(r.barycenter*r.weight+e.barycenter*e.weight)/(r.weight+e.weight),r.weight+=e.weight)}function fe(r){var e=rr(r),n=ie(r,x(1,e+1),"inEdges"),t=ie(r,x(e-1,-1,-1),"outEdges"),o=ee(r);se(r,o);for(var a=Number.POSITIVE_INFINITY,i,s=0,u=0;u<4;++s,++u){Ue(s%2?n:t,s%4>=2),o=P(r);var d=re(r,o);di||s>e[u].lim));for(d=u,u=t;(u=r.parent(u))!==d;)a.push(u);return{path:o.concat(a.reverse()),lca:d}}function qe(r){var e={},n=0;function t(o){var a=n;f(r.children(o),t),e[o]={low:a,lim:n++}}return f(r.children(),t),e}function Xe(r,e){var n={};function t(o,a){var i=0,s=0,u=o.length,d=j(a);return f(a,function(c,h){var l=Je(r,c),p=l?r.node(l).order:u;(l||c===d)&&(f(a.slice(s,h+1),function(m){f(r.predecessors(m),function(w){var A=r.node(w),pr=A.order;(prd)&&de(n,l,c)})})}function o(a,i){var s=-1,u,d=0;return f(i,function(c,h){if(r.node(c).dummy==="border"){var l=r.predecessors(c);l.length&&(u=r.node(l[0]).order,t(i,d,h,s,u),d=h,s=u)}t(i,d,i.length,u,a.length)}),i}return R(e,o),n}function Je(r,e){if(r.node(e).dummy)return Y(r.predecessors(e),function(n){return r.node(n).dummy})}function de(r,e,n){if(e>n){var t=e;e=n,n=t}var o=r[e];o||(r[e]=o={}),o[n]=!0}function Ke(r,e,n){if(e>n){var t=e;e=n,n=t}return!!r[e]&&Object.prototype.hasOwnProperty.call(r[e],n)}function Qe(r,e,n,t){var o={},a={},i={};return f(e,function(s){f(s,function(u,d){o[u]=u,a[u]=u,i[u]=d})}),f(e,function(s){var u=-1;f(s,function(d){var c=t(d);if(c.length){c=I(c,function(w){return i[w]});for(var h=(c.length-1)/2,l=Math.floor(h),p=Math.ceil(h);l<=p;++l){var m=c[l];a[d]===d&&u{var t=n(" buildLayoutGraph",()=>wn(r));n(" runLayout",()=>fn(t,n)),n(" updateInputGraph",()=>un(r,t))})}function fn(r,e){e(" makeSpaceForEdgeLabels",()=>bn(r)),e(" removeSelfEdges",()=>Ln(r)),e(" acyclic",()=>Mr(r)),e(" nestingGraph.run",()=>Jr(r)),e(" rank",()=>dr(q(r))),e(" injectEdgeLabelProxies",()=>En(r)),e(" removeEmptyRanks",()=>kr(r)),e(" nestingGraph.cleanup",()=>Qr(r)),e(" normalizeRanks",()=>xr(r)),e(" assignRankMinMax",()=>yn(r)),e(" removeEdgeLabelProxies",()=>xn(r)),e(" normalize.run",()=>Vr(r)),e(" parentDummyChains",()=>ue(r)),e(" addBorderSegments",()=>Lr(r)),e(" order",()=>fe(r)),e(" insertSelfEdges",()=>Pn(r)),e(" adjustCoordinateSystem",()=>Cr(r)),e(" position",()=>he(r)),e(" positionSelfEdges",()=>Cn(r)),e(" removeBorderNodes",()=>On(r)),e(" normalize.undo",()=>Br(r)),e(" fixupEdgeLabelCoords",()=>Nn(r)),e(" undoCoordinateSystem",()=>Tr(r)),e(" translateGraph",()=>kn(r)),e(" assignNodeIntersects",()=>gn(r)),e(" reversePoints",()=>In(r)),e(" acyclic.undo",()=>Fr(r))}function un(r,e){f(r.nodes(),function(n){var t=r.node(n),o=e.node(n);t&&(t.x=o.x,t.y=o.y,e.children(n).length&&(t.width=o.width,t.height=o.height))}),f(r.edges(),function(n){var t=r.edge(n),o=e.edge(n);t.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(t.x=o.x,t.y=o.y)}),r.graph().width=e.graph().width,r.graph().height=e.graph().height}var dn=["nodesep","edgesep","ranksep","marginx","marginy"],cn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},hn=["acyclicer","ranker","rankdir","align"],ln=["width","height"],pn={width:0,height:0},mn=["minlen","weight","width","height","labeloffset"],vn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},_n=["labelpos"];function wn(r){var e=new b({multigraph:!0,compound:!0}),n=lr(r.graph());return e.setGraph(D({},cn,hr(n,dn),V(n,hn))),f(r.nodes(),function(t){var o=lr(r.node(t));e.setNode(t,_r(hr(o,ln),pn)),e.setParent(t,r.parent(t))}),f(r.edges(),function(t){var o=lr(r.edge(t));e.setEdge(t,D({},vn,hr(o,mn),V(o,_n)))}),e}function bn(r){var e=r.graph();e.ranksep/=2,f(r.edges(),function(n){var t=r.edge(n);t.minlen*=2,t.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?t.width+=t.labeloffset:t.height+=t.labeloffset)})}function En(r){f(r.edges(),function(e){var n=r.edge(e);if(n.width&&n.height){var t=r.node(e.v),o=r.node(e.w),a={rank:(o.rank-t.rank)/2+t.rank,e};k(r,"edge-proxy",a,"_ep")}})}function yn(r){var e=0;f(r.nodes(),function(n){var t=r.node(n);t.borderTop&&(t.minRank=r.node(t.borderTop).rank,t.maxRank=r.node(t.borderBottom).rank,e=y(e,t.maxRank))}),r.graph().maxRank=e}function xn(r){f(r.nodes(),function(e){var n=r.node(e);n.dummy==="edge-proxy"&&(r.edge(n.e).labelRank=n.rank,r.removeNode(e))})}function kn(r){var e=Number.POSITIVE_INFINITY,n=0,t=Number.POSITIVE_INFINITY,o=0,a=r.graph(),i=a.marginx||0,s=a.marginy||0;function u(d){var c=d.x,h=d.y,l=d.width,p=d.height;e=Math.min(e,c-l/2),n=Math.max(n,c+l/2),t=Math.min(t,h-p/2),o=Math.max(o,h+p/2)}f(r.nodes(),function(d){u(r.node(d))}),f(r.edges(),function(d){var c=r.edge(d);Object.prototype.hasOwnProperty.call(c,"x")&&u(c)}),e-=i,t-=s,f(r.nodes(),function(d){var c=r.node(d);c.x-=e,c.y-=t}),f(r.edges(),function(d){var c=r.edge(d);f(c.points,function(h){h.x-=e,h.y-=t}),Object.prototype.hasOwnProperty.call(c,"x")&&(c.x-=e),Object.prototype.hasOwnProperty.call(c,"y")&&(c.y-=t)}),a.width=n-e+i,a.height=o-t+s}function gn(r){f(r.edges(),function(e){var n=r.edge(e),t=r.node(e.v),o=r.node(e.w),a,i;n.points?(a=n.points[0],i=n.points[n.points.length-1]):(n.points=[],a=o,i=t),n.points.unshift(Z(t,a)),n.points.push(Z(o,i))})}function Nn(r){f(r.edges(),function(e){var n=r.edge(e);if(Object.prototype.hasOwnProperty.call(n,"x"))switch((n.labelpos==="l"||n.labelpos==="r")&&(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset;break}})}function In(r){f(r.edges(),function(e){var n=r.edge(e);n.reversed&&n.points.reverse()})}function On(r){f(r.nodes(),function(e){if(r.children(e).length){var n=r.node(e),t=r.node(n.borderTop),o=r.node(n.borderBottom),a=r.node(j(n.borderLeft)),i=r.node(j(n.borderRight));n.width=Math.abs(i.x-a.x),n.height=Math.abs(o.y-t.y),n.x=a.x+n.width/2,n.y=t.y+n.height/2}}),f(r.nodes(),function(e){r.node(e).dummy==="border"&&r.removeNode(e)})}function Ln(r){f(r.edges(),function(e){if(e.v===e.w){var n=r.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e,label:r.edge(e)}),r.removeEdge(e)}})}function Pn(r){var e=P(r);f(e,function(n){var t=0;f(n,function(o,a){var i=r.node(o);i.order=a+t,f(i.selfEdges,function(s){k(r,"selfedge",{width:s.label.width,height:s.label.height,rank:i.rank,order:a+ ++t,e:s.e,label:s.label},"_se")}),delete i.selfEdges})})}function Cn(r){f(r.nodes(),function(e){var n=r.node(e);if(n.dummy==="selfedge"){var t=r.node(n.e.v),o=t.x+t.width/2,a=t.y,i=n.x-o,s=t.height/2;r.setEdge(n.e,n.label),r.removeNode(e),n.label.points=[{x:o+2*i/3,y:a-s},{x:o+5*i/6,y:a-s},{x:o+i,y:a},{x:o+5*i/6,y:a+s},{x:o+2*i/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}})}function hr(r,e){return F(V(r,e),Number)}function lr(r){var e={};return f(r,function(n,t){e[t.toLowerCase()]=n}),e}export{sn as a};
+//# sourceMappingURL=chunk-B46QTP2J.min.js.map
diff --git a/docs/public/chunk-B46QTP2J.min.js.map b/docs/public/chunk-B46QTP2J.min.js.map
new file mode 100755
index 0000000..ab7f405
--- /dev/null
+++ b/docs/public/chunk-B46QTP2J.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/dagre-d3-es/src/dagre/util.js", "../../node_modules/dagre-d3-es/src/dagre/add-border-segments.js", "../../node_modules/dagre-d3-es/src/dagre/coordinate-system.js", "../../node_modules/dagre-d3-es/src/dagre/data/list.js", "../../node_modules/dagre-d3-es/src/dagre/greedy-fas.js", "../../node_modules/dagre-d3-es/src/dagre/acyclic.js", "../../node_modules/dagre-d3-es/src/dagre/normalize.js", "../../node_modules/dagre-d3-es/src/dagre/rank/util.js", "../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/postorder.js", "../../node_modules/dagre-d3-es/src/graphlib/alg/preorder.js", "../../node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js", "../../node_modules/dagre-d3-es/src/dagre/rank/index.js", "../../node_modules/dagre-d3-es/src/dagre/nesting-graph.js", "../../node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js", "../../node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js", "../../node_modules/dagre-d3-es/src/dagre/order/cross-count.js", "../../node_modules/dagre-d3-es/src/dagre/order/init-order.js", "../../node_modules/dagre-d3-es/src/dagre/order/barycenter.js", "../../node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js", "../../node_modules/dagre-d3-es/src/dagre/order/sort.js", "../../node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js", "../../node_modules/dagre-d3-es/src/dagre/order/index.js", "../../node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js", "../../node_modules/dagre-d3-es/src/dagre/position/bk.js", "../../node_modules/dagre-d3-es/src/dagre/position/index.js", "../../node_modules/dagre-d3-es/src/dagre/layout.js"],
+ "sourcesContent": ["import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\n\nexport {\n addDummyNode,\n simplify,\n asNonCompoundGraph,\n successorWeights,\n predecessorWeights,\n intersectRect,\n buildLayerMatrix,\n normalizeRanks,\n removeEmptyRanks,\n addBorderNode,\n maxRank,\n partition,\n time,\n notime,\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function (v) {\n simplified.setNode(v, g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen),\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function (v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function (e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function (v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function (e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function (v) {\n var preds = {};\n _.forEach(g.inEdges(v), function (e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error('Not possible to find intersection inside of the rectangle');\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function () {\n return [];\n });\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(\n _.map(g.nodes(), function (v) {\n return g.node(v).rank;\n }),\n );\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (_.has(node, 'rank')) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(\n _.map(g.nodes(), function (v) {\n return g.node(v).rank;\n }),\n );\n\n var layers = [];\n _.forEach(g.nodes(), function (v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function (vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function (v) {\n g.node(v).rank += delta;\n });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0,\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, 'border', node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(\n _.map(g.nodes(), function (v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }),\n );\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function (value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + ' time: ' + (_.now() - start) + 'ms');\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { addBorderSegments };\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (Object.prototype.hasOwnProperty.call(node, 'minRank')) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {\n addBorderNode(g, 'borderLeft', '_bl', v, node, rank);\n addBorderNode(g, 'borderRight', '_br', v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, 'border', label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n", "import * as _ from 'lodash-es';\n\nexport { adjust, undo };\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'bt' || rankDir === 'rl') {\n reverseY(g);\n }\n\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function (v) {\n swapWidthHeightOne(g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n swapWidthHeightOne(g.edge(e));\n });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function (v) {\n reverseYOne(g.node(v));\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (Object.prototype.hasOwnProperty.call(edge, 'y')) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function (v) {\n swapXYOne(g.node(v));\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n", "/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nexport { List };\n\nclass List {\n constructor() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n }\n dequeue() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n }\n enqueue(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n }\n toString() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return '[' + strs.join(', ') + ']';\n }\n}\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== '_next' && k !== '_prev') {\n return v;\n }\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\nimport { List } from './data/list.js';\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nexport { greedyFAS };\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(\n _.map(results, function (e) {\n return g.outEdges(e.v, e.w);\n }),\n );\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry['in'] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function (v) {\n fasGraph.setNode(v, { v: v, in: 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function (e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight));\n maxIn = Math.max(maxIn, (fasGraph.node(e.w)['in'] += weight));\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function () {\n return new List();\n });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function (v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry['in']) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry);\n }\n}\n", "import * as _ from 'lodash-es';\nimport { greedyFAS } from './greedy-fas.js';\n\nexport { run, undo };\n\nfunction run(g) {\n var fas = g.graph().acyclicer === 'greedy' ? greedyFAS(g, weightFn(g)) : dfsFAS(g);\n _.forEach(fas, function (e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId('rev'));\n });\n\n function weightFn(g) {\n return function (e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (Object.prototype.hasOwnProperty.call(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function (e) {\n if (Object.prototype.hasOwnProperty.call(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function (e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n", "/**\n * TypeScript type imports:\n *\n * @import { Graph } from '../graphlib/graph.js';\n */\nimport * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { run, undo };\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function (edge) {\n normalizeEdge(g, edge);\n });\n}\n\n/**\n * @param {Graph} g\n */\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n /**\n * @typedef {Object} Attrs\n * @property {number} width\n * @property {number} height\n * @property {ReturnType} edgeLabel\n * @property {any} edgeObj\n * @property {ReturnType[\"rank\"]} rank\n * @property {string} [dummy]\n * @property {ReturnType[\"labelpos\"]} [labelpos]\n */\n\n /** @type {Attrs | undefined} */\n var attrs = undefined;\n var dummy, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0,\n height: 0,\n edgeLabel: edgeLabel,\n edgeObj: e,\n rank: vRank,\n };\n dummy = util.addDummyNode(g, 'edge', attrs, '_d');\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = 'edge-label';\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === 'edge-label') {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { longestPath, slack };\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (Object.prototype.hasOwnProperty.call(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(\n _.map(g.outEdges(v), function (e) {\n return dfs(e.w) - g.edge(e).minlen;\n }),\n );\n\n if (\n rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null\n ) {\n // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport { slack } from './util.js';\n\nexport { feasibleTree };\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function (e) {\n var edgeV = e.v,\n w = v === edgeV ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function (e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function (v) {\n g.node(v).rank += delta;\n });\n}\n", "import * as _ from 'lodash-es';\nimport { PriorityQueue } from '../data/priority-queue.js';\n\nexport { dijkstra };\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(\n g,\n String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n },\n );\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function (edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\n 'dijkstra does not allow negative edge weights. ' +\n 'Bad edge: ' +\n edge +\n ' Weight: ' +\n weight,\n );\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function (v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n", "import * as _ from 'lodash-es';\n\nexport { floydWarshall };\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(\n g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n },\n );\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function (v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function (w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function (edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function (k) {\n var rowK = results[k];\n nodes.forEach(function (i) {\n var rowI = results[i];\n nodes.forEach(function (j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n", "import * as _ from 'lodash-es';\n\nexport { topsort, CycleException };\n\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (Object.prototype.hasOwnProperty.call(stack, node)) {\n throw new CycleException();\n }\n\n if (!Object.prototype.hasOwnProperty.call(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing\n", "import * as _ from 'lodash-es';\n\nexport { dfs };\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function (v) {\n if (!g.hasNode(v)) {\n throw new Error('Graph does not have node: ' + v);\n }\n\n doDfs(g, v, order === 'post', visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!Object.prototype.hasOwnProperty.call(visited, v)) {\n visited[v] = true;\n\n if (!postorder) {\n acc.push(v);\n }\n _.each(navigation(v), function (w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) {\n acc.push(v);\n }\n }\n}\n", "import { dfs } from './dfs.js';\n\nexport { postorder };\n\nfunction postorder(g, vs) {\n return dfs(g, vs, 'post');\n}\n", "import { dfs } from './dfs.js';\n\nexport { preorder };\n\nfunction preorder(g, vs) {\n return dfs(g, vs, 'pre');\n}\n", "import * as _ from 'lodash-es';\nimport * as alg from '../../graphlib/alg/index.js';\nimport { simplify } from '../util.js';\nimport { feasibleTree } from './feasible-tree.js';\nimport { longestPath, slack } from './util.js';\n\nexport { networkSimplex };\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n longestPath(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = alg.postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function (v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function (e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function (w) {\n if (!Object.prototype.hasOwnProperty.call(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function (e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function (edge) {\n return (\n flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel)\n );\n });\n\n return _.minBy(candidates, function (edge) {\n return slack(g, edge);\n });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function (v) {\n return !g.node(v).parent;\n });\n var vs = alg.preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function (v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n", "import { feasibleTree } from './feasible-tree.js';\nimport { networkSimplex } from './network-simplex.js';\nimport { longestPath } from './util.js';\n\nexport { rank };\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch (g.graph().ranker) {\n case 'network-simplex':\n networkSimplexRanker(g);\n break;\n case 'tight-tree':\n tightTreeRanker(g);\n break;\n case 'longest-path':\n longestPathRanker(g);\n break;\n default:\n networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n", "import * as _ from 'lodash-es';\nimport * as util from './util.js';\n\nexport { run, cleanup };\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, 'root', {}, '_root');\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function (e) {\n g.edge(e).minlen *= nodeSep;\n });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, '_bt');\n var bottom = util.addBorderNode(g, '_bb');\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function (child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function (v) {\n dfs(v, 1);\n });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(\n g.edges(),\n function (acc, e) {\n return acc + g.edge(e).weight;\n },\n 0,\n );\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { addSubgraphConstraints };\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function (v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\n\nexport { buildLayerGraph };\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true })\n .setGraph({ root: root })\n .setDefaultNodeLabel(function (v) {\n return g.node(v);\n });\n\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || (node.minRank <= rank && rank <= node.maxRank)) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function (e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (Object.prototype.hasOwnProperty.call(node, 'minRank')) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank],\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId('_root'))));\n return v;\n}\n", "import * as _ from 'lodash-es';\n\nexport { crossCount };\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(\n southLayer,\n _.map(southLayer, function (v, i) {\n return i;\n }),\n );\n var southEntries = _.flatten(\n _.map(northLayer, function (v) {\n return _.sortBy(\n _.map(g.outEdges(v), function (e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }),\n 'pos',\n );\n }),\n );\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function () {\n return 0;\n });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(\n // @ts-expect-error\n southEntries.forEach(function (entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n // @ts-expect-error\n while (index > 0) {\n // @ts-expect-error\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n // @ts-expect-error\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }),\n );\n\n return cc;\n}\n", "import * as _ from 'lodash-es';\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nexport function initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function (v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(\n _.map(simpleNodes, function (v) {\n return g.node(v).rank;\n }),\n );\n var layers = _.map(_.range(maxRank + 1), function () {\n return [];\n });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function (v) {\n return g.node(v).rank;\n });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n", "import * as _ from 'lodash-es';\n\nexport { barycenter };\n\nfunction barycenter(g, movable) {\n return _.map(movable, function (v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(\n inV,\n function (acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + edge.weight * nodeU.order,\n weight: acc.weight + edge.weight,\n };\n },\n { sum: 0, weight: 0 },\n );\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight,\n };\n }\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { resolveConflicts };\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function (entry, i) {\n var tmp = (mappedEntries[entry.v] = {\n indegree: 0,\n in: [],\n out: [],\n vs: [entry.v],\n i: i,\n });\n if (!_.isUndefined(entry.barycenter)) {\n // @ts-expect-error\n tmp.barycenter = entry.barycenter;\n // @ts-expect-error\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function (e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function (entry) {\n // @ts-expect-error\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function (uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (\n _.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter\n ) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function (wEntry) {\n wEntry['in'].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry['in'].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(\n _.filter(entries, function (entry) {\n return !entry.merged;\n }),\n function (entry) {\n return _.pick(entry, ['vs', 'i', 'barycenter', 'weight']);\n },\n );\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n", "import * as _ from 'lodash-es';\nimport * as util from '../util.js';\n\nexport { sort };\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function (entry) {\n return Object.prototype.hasOwnProperty.call(entry, 'barycenter');\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function (entry) {\n return -entry.i;\n }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function (entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n", "import * as _ from 'lodash-es';\nimport { barycenter } from './barycenter.js';\nimport { resolveConflicts } from './resolve-conflicts.js';\nimport { sort } from './sort.js';\n\nexport { sortSubgraph };\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight : undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function (w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function (entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (Object.prototype.hasOwnProperty.call(subgraphResult, 'barycenter')) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br]);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!Object.prototype.hasOwnProperty.call(result, 'barycenter')) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter =\n (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function (entry) {\n entry.vs = _.flatten(\n entry.vs.map(function (v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }),\n );\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter =\n (target.barycenter * target.weight + other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport * as util from '../util.js';\nimport { addSubgraphConstraints } from './add-subgraph-constraints.js';\nimport { buildLayerGraph } from './build-layer-graph.js';\nimport { crossCount } from './cross-count.js';\nimport { initOrder } from './init-order.js';\nimport { sortSubgraph } from './sort-subgraph.js';\n\nexport { order };\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), 'inEdges'),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), 'outEdges');\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function (rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function (lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function (v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function (layer) {\n _.forEach(layer, function (v, i) {\n g.node(v).order = i;\n });\n });\n}\n", "import * as _ from 'lodash-es';\n\nexport { parentDummyChains };\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (\n pathIdx < path.length - 1 &&\n g.node((pathV = path[pathIdx + 1])).minRank <= node.rank\n ) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../../graphlib/index.js';\nimport * as util from '../util.js';\n\n/*\n * This module provides coordinate assignment based on Brandes and K\u00F6pf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nexport {\n positionX,\n findType1Conflicts,\n findType2Conflicts,\n addConflict,\n hasConflict,\n verticalAlignment,\n horizontalCompaction,\n alignCoordinates,\n findSmallestWidthAlignment,\n balance,\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function (v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i + 1), function (scanNode) {\n _.forEach(g.predecessors(scanNode), function (u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n // @ts-expect-error\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function (i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function (u) {\n var uNode = g.node(u);\n if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function (v, southLookahead) {\n if (g.node(v).dummy === 'border') {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n // @ts-expect-error\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function (u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return !!conflicts[v] && Object.prototype.hasOwnProperty.call(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function (layer) {\n _.forEach(layer, function (v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function (layer) {\n var prevIdx = -1;\n _.forEach(layer, function (v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function (w) {\n return pos[w];\n });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v && prevIdx < pos[w] && !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? 'borderLeft' : 'borderRight';\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function (acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function (acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function (v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function (layer) {\n var u;\n _.forEach(layer, function (v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach(['u', 'd'], function (vert) {\n _.forEach(['l', 'r'], function (horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === 'l' ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function (x) {\n return x + delta;\n });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function (ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach(['u', 'd'], function (vert) {\n adjustedLayering = vert === 'u' ? layering : _.values(layering).reverse();\n _.forEach(['l', 'r'], function (horiz) {\n if (horiz === 'r') {\n adjustedLayering = _.map(adjustedLayering, function (inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === 'u' ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === 'r');\n if (horiz === 'r') {\n xs = _.mapValues(xs, function (x) {\n return -x;\n });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function (g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (Object.prototype.hasOwnProperty.call(vLabel, 'labelpos')) {\n switch (vLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = -vLabel.width / 2;\n break;\n case 'r':\n delta = vLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (Object.prototype.hasOwnProperty.call(wLabel, 'labelpos')) {\n switch (wLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = wLabel.width / 2;\n break;\n case 'r':\n delta = -wLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n", "import * as _ from 'lodash-es';\nimport * as util from '../util.js';\nimport { positionX } from './bk.js';\n\nexport { position };\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forOwn(positionX(g), function (x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function (layer) {\n var maxHeight = _.max(\n _.map(layer, function (v) {\n return g.node(v).height;\n }),\n );\n _.forEach(layer, function (v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n", "import * as _ from 'lodash-es';\nimport { Graph } from '../graphlib/index.js';\nimport { addBorderSegments } from './add-border-segments.js';\nimport * as coordinateSystem from './coordinate-system.js';\nimport * as acyclic from './acyclic.js';\nimport * as normalize from './normalize.js';\nimport { rank } from './rank/index.js';\nimport * as nestingGraph from './nesting-graph.js';\nimport { order } from './order/index.js';\nimport { parentDummyChains } from './parent-dummy-chains.js';\nimport { position } from './position/index.js';\nimport * as util from './util.js';\n\nexport { layout };\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time('layout', () => {\n var layoutGraph = time(' buildLayoutGraph', () => buildLayoutGraph(g));\n time(' runLayout', () => runLayout(layoutGraph, time));\n time(' updateInputGraph', () => updateInputGraph(g, layoutGraph));\n });\n}\n\nfunction runLayout(g, time) {\n time(' makeSpaceForEdgeLabels', () => makeSpaceForEdgeLabels(g));\n time(' removeSelfEdges', () => removeSelfEdges(g));\n time(' acyclic', () => acyclic.run(g));\n time(' nestingGraph.run', () => nestingGraph.run(g));\n time(' rank', () => rank(util.asNonCompoundGraph(g)));\n time(' injectEdgeLabelProxies', () => injectEdgeLabelProxies(g));\n time(' removeEmptyRanks', () => util.removeEmptyRanks(g));\n time(' nestingGraph.cleanup', () => nestingGraph.cleanup(g));\n time(' normalizeRanks', () => util.normalizeRanks(g));\n time(' assignRankMinMax', () => assignRankMinMax(g));\n time(' removeEdgeLabelProxies', () => removeEdgeLabelProxies(g));\n time(' normalize.run', () => normalize.run(g));\n time(' parentDummyChains', () => parentDummyChains(g));\n time(' addBorderSegments', () => addBorderSegments(g));\n time(' order', () => order(g));\n time(' insertSelfEdges', () => insertSelfEdges(g));\n time(' adjustCoordinateSystem', () => coordinateSystem.adjust(g));\n time(' position', () => position(g));\n time(' positionSelfEdges', () => positionSelfEdges(g));\n time(' removeBorderNodes', () => removeBorderNodes(g));\n time(' normalize.undo', () => normalize.undo(g));\n time(' fixupEdgeLabelCoords', () => fixupEdgeLabelCoords(g));\n time(' undoCoordinateSystem', () => coordinateSystem.undo(g));\n time(' translateGraph', () => translateGraph(g));\n time(' assignNodeIntersects', () => assignNodeIntersects(g));\n time(' reversePoints', () => reversePointsForReversedEdges(g));\n time(' acyclic.undo', () => acyclic.undo(g));\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function (v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function (e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (Object.prototype.hasOwnProperty.call(layoutLabel, 'x')) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy'];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' };\nvar graphAttrs = ['acyclicer', 'ranker', 'rankdir', 'align'];\nvar nodeNumAttrs = ['width', 'height'];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];\nvar edgeDefaults = {\n minlen: 1,\n weight: 1,\n width: 0,\n height: 0,\n labeloffset: 10,\n labelpos: 'r',\n};\nvar edgeAttrs = ['labelpos'];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(\n _.merge({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), _.pick(graph, graphAttrs)),\n );\n\n _.forEach(inputGraph.nodes(), function (v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function (e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(\n e,\n _.merge({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), _.pick(edge, edgeAttrs)),\n );\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== 'c') {\n if (graph.rankdir === 'TB' || graph.rankdir === 'BT') {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, 'edge-proxy', label, '_ep');\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n // @ts-expect-error\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'edge-proxy') {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function (v) {\n getExtremes(g.node(v));\n });\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function (p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n edge.x -= minX;\n }\n if (Object.prototype.hasOwnProperty.call(edge, 'y')) {\n edge.y -= minY;\n }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (Object.prototype.hasOwnProperty.call(edge, 'x')) {\n if (edge.labelpos === 'l' || edge.labelpos === 'r') {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case 'l':\n edge.x -= edge.width / 2 + edge.labeloffset;\n break;\n case 'r':\n edge.x += edge.width / 2 + edge.labeloffset;\n break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function (v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function (v) {\n if (g.node(v).dummy === 'border') {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function (e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function (layer) {\n var orderShift = 0;\n _.forEach(layer, function (v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function (selfEdge) {\n util.addDummyNode(\n g,\n 'selfedge',\n {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + ++orderShift,\n e: selfEdge.e,\n label: selfEdge.label,\n },\n '_se',\n );\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'selfedge') {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + (2 * dx) / 3, y: y - dy },\n { x: x + (5 * dx) / 6, y: y - dy },\n { x: x + dx, y: y },\n { x: x + (5 * dx) / 6, y: y + dy },\n { x: x + (2 * dx) / 3, y: y + dy },\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function (v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n"],
+ "mappings": "gUAuBA,SAASA,EAAaC,EAAGC,EAAMC,EAAOC,EAAM,CAC1C,IAAIC,EACJ,GACEA,EAAMC,EAASF,CAAI,QACZH,EAAE,QAAQI,CAAC,GAEpB,OAAAF,EAAM,MAAQD,EACdD,EAAE,QAAQI,EAAGF,CAAK,EACXE,CACT,CAMA,SAASE,GAASN,EAAG,CACnB,IAAIO,EAAa,IAAIC,EAAM,EAAE,SAASR,EAAE,MAAM,CAAC,EAC/C,OAAES,EAAQT,EAAE,MAAM,EAAG,SAAUI,EAAG,CAChCG,EAAW,QAAQH,EAAGJ,EAAE,KAAKI,CAAC,CAAC,CACjC,CAAC,EACCK,EAAQT,EAAE,MAAM,EAAG,SAAUU,EAAG,CAChC,IAAIC,EAAcJ,EAAW,KAAKG,EAAE,EAAGA,EAAE,CAAC,GAAK,CAAE,OAAQ,EAAG,OAAQ,CAAE,EAClEE,EAAQZ,EAAE,KAAKU,CAAC,EACpBH,EAAW,QAAQG,EAAE,EAAGA,EAAE,EAAG,CAC3B,OAAQC,EAAY,OAASC,EAAM,OACnC,OAAQ,KAAK,IAAID,EAAY,OAAQC,EAAM,MAAM,CACnD,CAAC,CACH,CAAC,EACML,CACT,CAEA,SAASM,EAAmBb,EAAG,CAC7B,IAAIO,EAAa,IAAIC,EAAM,CAAE,WAAYR,EAAE,aAAa,CAAE,CAAC,EAAE,SAASA,EAAE,MAAM,CAAC,EAC/E,OAAES,EAAQT,EAAE,MAAM,EAAG,SAAUI,EAAG,CAC3BJ,EAAE,SAASI,CAAC,EAAE,QACjBG,EAAW,QAAQH,EAAGJ,EAAE,KAAKI,CAAC,CAAC,CAEnC,CAAC,EACCK,EAAQT,EAAE,MAAM,EAAG,SAAUU,EAAG,CAChCH,EAAW,QAAQG,EAAGV,EAAE,KAAKU,CAAC,CAAC,CACjC,CAAC,EACMH,CACT,CA4BA,SAASO,EAAcC,EAAMC,EAAO,CAClC,IAAIC,EAAIF,EAAK,EACTG,EAAIH,EAAK,EAITI,EAAKH,EAAM,EAAIC,EACfG,EAAKJ,EAAM,EAAIE,EACfG,EAAIN,EAAK,MAAQ,EACjBO,EAAIP,EAAK,OAAS,EAEtB,GAAI,CAACI,GAAM,CAACC,EACV,MAAM,IAAI,MAAM,2DAA2D,EAG7E,IAAIG,EAAIC,EACR,OAAI,KAAK,IAAIJ,CAAE,EAAIC,EAAI,KAAK,IAAIF,CAAE,EAAIG,GAEhCF,EAAK,IACPE,EAAI,CAACA,GAEPC,EAAMD,EAAIH,EAAMC,EAChBI,EAAKF,IAGDH,EAAK,IACPE,EAAI,CAACA,GAEPE,EAAKF,EACLG,EAAMH,EAAID,EAAMD,GAGX,CAAE,EAAGF,EAAIM,EAAI,EAAGL,EAAIM,CAAG,CAChC,CAMA,SAASC,EAAiBC,EAAG,CAC3B,IAAIC,EAAaC,EAAMC,EAAMC,GAAQJ,CAAC,EAAI,CAAC,EAAG,UAAY,CACxD,MAAO,CAAC,CACV,CAAC,EACD,OAAEK,EAAQL,EAAE,MAAM,EAAG,SAAUM,EAAG,CAChC,IAAIC,EAAOP,EAAE,KAAKM,CAAC,EACfE,EAAOD,EAAK,KACTE,EAAYD,CAAI,IACrBP,EAASO,CAAI,EAAED,EAAK,KAAK,EAAID,EAEjC,CAAC,EACML,CACT,CAMA,SAASS,GAAeV,EAAG,CACzB,IAAIW,EAAQC,EACRV,EAAIF,EAAE,MAAM,EAAG,SAAUM,EAAG,CAC5B,OAAON,EAAE,KAAKM,CAAC,EAAE,IACnB,CAAC,CACH,EACED,EAAQL,EAAE,MAAM,EAAG,SAAUM,EAAG,CAChC,IAAIC,EAAOP,EAAE,KAAKM,CAAC,EACbO,EAAIN,EAAM,MAAM,IACpBA,EAAK,MAAQI,EAEjB,CAAC,CACH,CAEA,SAASG,GAAiBd,EAAG,CAE3B,IAAIe,EAAWH,EACXV,EAAIF,EAAE,MAAM,EAAG,SAAUM,EAAG,CAC5B,OAAON,EAAE,KAAKM,CAAC,EAAE,IACnB,CAAC,CACH,EAEIU,EAAS,CAAC,EACZX,EAAQL,EAAE,MAAM,EAAG,SAAUM,EAAG,CAChC,IAAIE,EAAOR,EAAE,KAAKM,CAAC,EAAE,KAAOS,EACvBC,EAAOR,CAAI,IACdQ,EAAOR,CAAI,EAAI,CAAC,GAElBQ,EAAOR,CAAI,EAAE,KAAKF,CAAC,CACrB,CAAC,EAED,IAAIW,EAAQ,EACRC,EAAiBlB,EAAE,MAAM,EAAE,eAC7BK,EAAQW,EAAQ,SAAUG,EAAI,EAAG,CAC3BV,EAAYU,CAAE,GAAK,EAAID,IAAmB,EAC9C,EAAED,EACOA,GACPZ,EAAQc,EAAI,SAAUb,EAAG,CACzBN,EAAE,KAAKM,CAAC,EAAE,MAAQW,CACpB,CAAC,CAEL,CAAC,CACH,CAEA,SAASG,EAAcpB,EAAGqB,EAAQb,EAAMc,EAAO,CAC7C,IAAIf,EAAO,CACT,MAAO,EACP,OAAQ,CACV,EACA,OAAI,UAAU,QAAU,IACtBA,EAAK,KAAOC,EACZD,EAAK,MAAQe,GAERC,EAAavB,EAAG,SAAUO,EAAMc,CAAM,CAC/C,CAEA,SAASjB,GAAQJ,EAAG,CAClB,OAASwB,EACLtB,EAAIF,EAAE,MAAM,EAAG,SAAUM,EAAG,CAC5B,IAAIE,EAAOR,EAAE,KAAKM,CAAC,EAAE,KACrB,GAAI,CAAGG,EAAYD,CAAI,EACrB,OAAOA,CAEX,CAAC,CACH,CACF,CAOA,SAASiB,GAAUC,EAAYC,EAAI,CACjC,IAAIC,EAAS,CAAE,IAAK,CAAC,EAAG,IAAK,CAAC,CAAE,EAChC,OAAEvB,EAAQqB,EAAY,SAAUG,EAAO,CACjCF,EAAGE,CAAK,EACVD,EAAO,IAAI,KAAKC,CAAK,EAErBD,EAAO,IAAI,KAAKC,CAAK,CAEzB,CAAC,EACMD,CACT,CAMA,SAASE,GAAKC,EAAMJ,EAAI,CACtB,IAAIK,EAAUC,EAAI,EAClB,GAAI,CACF,OAAON,EAAG,CACZ,QAAE,CACA,QAAQ,IAAII,EAAO,WAAeE,EAAI,EAAID,GAAS,IAAI,CACzD,CACF,CAEA,SAASE,GAAOH,EAAMJ,EAAI,CACxB,OAAOA,EAAG,CACZ,CCpPA,SAASQ,GAAkBC,EAAG,CAC5B,SAASC,EAAIC,EAAG,CACd,IAAIC,EAAWH,EAAE,SAASE,CAAC,EACvBE,EAAOJ,EAAE,KAAKE,CAAC,EAKnB,GAJIC,EAAS,QACTE,EAAQF,EAAUF,CAAG,EAGrB,OAAO,UAAU,eAAe,KAAKG,EAAM,SAAS,EAAG,CACzDA,EAAK,WAAa,CAAC,EACnBA,EAAK,YAAc,CAAC,EACpB,QAASE,EAAOF,EAAK,QAASG,EAAUH,EAAK,QAAU,EAAGE,EAAOC,EAAS,EAAED,EAC1EE,GAAcR,EAAG,aAAc,MAAOE,EAAGE,EAAME,CAAI,EACnDE,GAAcR,EAAG,cAAe,MAAOE,EAAGE,EAAME,CAAI,CAExD,CACF,CAEED,EAAQL,EAAE,SAAS,EAAGC,CAAG,CAC7B,CAEA,SAASO,GAAcR,EAAGS,EAAMC,EAAQC,EAAIC,EAAQN,EAAM,CACxD,IAAIO,EAAQ,CAAE,MAAO,EAAG,OAAQ,EAAG,KAAMP,EAAM,WAAYG,CAAK,EAC5DK,EAAOF,EAAOH,CAAI,EAAEH,EAAO,CAAC,EAC5BS,EAAYC,EAAahB,EAAG,SAAUa,EAAOH,CAAM,EACvDE,EAAOH,CAAI,EAAEH,CAAI,EAAIS,EACrBf,EAAE,UAAUe,EAAMJ,CAAE,EAChBG,GACFd,EAAE,QAAQc,EAAMC,EAAM,CAAE,OAAQ,CAAE,CAAC,CAEvC,CC/BA,SAASE,GAAOC,EAAG,CACjB,IAAIC,EAAUD,EAAE,MAAM,EAAE,QAAQ,YAAY,GACxCC,IAAY,MAAQA,IAAY,OAClCC,GAAgBF,CAAC,CAErB,CAEA,SAASG,GAAKH,EAAG,CACf,IAAIC,EAAUD,EAAE,MAAM,EAAE,QAAQ,YAAY,GACxCC,IAAY,MAAQA,IAAY,OAClCG,GAASJ,CAAC,GAGRC,IAAY,MAAQA,IAAY,QAClCI,GAAOL,CAAC,EACRE,GAAgBF,CAAC,EAErB,CAEA,SAASE,GAAgBF,EAAG,CACxBM,EAAQN,EAAE,MAAM,EAAG,SAAUO,EAAG,CAChCC,GAAmBR,EAAE,KAAKO,CAAC,CAAC,CAC9B,CAAC,EACCD,EAAQN,EAAE,MAAM,EAAG,SAAU,EAAG,CAChCQ,GAAmBR,EAAE,KAAK,CAAC,CAAC,CAC9B,CAAC,CACH,CAEA,SAASQ,GAAmBC,EAAO,CACjC,IAAIC,EAAID,EAAM,MACdA,EAAM,MAAQA,EAAM,OACpBA,EAAM,OAASC,CACjB,CAEA,SAASN,GAASJ,EAAG,CACjBM,EAAQN,EAAE,MAAM,EAAG,SAAUO,EAAG,CAChCI,GAAYX,EAAE,KAAKO,CAAC,CAAC,CACvB,CAAC,EAECD,EAAQN,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIY,EAAOZ,EAAE,KAAK,CAAC,EACjBM,EAAQM,EAAK,OAAQD,EAAW,EAC9B,OAAO,UAAU,eAAe,KAAKC,EAAM,GAAG,GAChDD,GAAYC,CAAI,CAEpB,CAAC,CACH,CAEA,SAASD,GAAYF,EAAO,CAC1BA,EAAM,EAAI,CAACA,EAAM,CACnB,CAEA,SAASJ,GAAOL,EAAG,CACfM,EAAQN,EAAE,MAAM,EAAG,SAAUO,EAAG,CAChCM,GAAUb,EAAE,KAAKO,CAAC,CAAC,CACrB,CAAC,EAECD,EAAQN,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIY,EAAOZ,EAAE,KAAK,CAAC,EACjBM,EAAQM,EAAK,OAAQC,EAAS,EAC5B,OAAO,UAAU,eAAe,KAAKD,EAAM,GAAG,GAChDC,GAAUD,CAAI,CAElB,CAAC,CACH,CAEA,SAASC,GAAUJ,EAAO,CACxB,IAAIK,EAAIL,EAAM,EACdA,EAAM,EAAIA,EAAM,EAChBA,EAAM,EAAIK,CACZ,CCnEA,IAAMC,EAAN,KAAW,CACT,aAAc,CACZ,IAAIC,EAAW,CAAC,EAChBA,EAAS,MAAQA,EAAS,MAAQA,EAClC,KAAK,UAAYA,CACnB,CACA,SAAU,CACR,IAAIA,EAAW,KAAK,UAChBC,EAAQD,EAAS,MACrB,GAAIC,IAAUD,EACZ,OAAAE,GAAOD,CAAK,EACLA,CAEX,CACA,QAAQA,EAAO,CACb,IAAID,EAAW,KAAK,UAChBC,EAAM,OAASA,EAAM,OACvBC,GAAOD,CAAK,EAEdA,EAAM,MAAQD,EAAS,MACvBA,EAAS,MAAM,MAAQC,EACvBD,EAAS,MAAQC,EACjBA,EAAM,MAAQD,CAChB,CACA,UAAW,CAIT,QAHIG,EAAO,CAAC,EACRH,EAAW,KAAK,UAChBI,EAAOJ,EAAS,MACbI,IAASJ,GACdG,EAAK,KAAK,KAAK,UAAUC,EAAMC,EAAc,CAAC,EAC9CD,EAAOA,EAAK,MAEd,MAAO,IAAMD,EAAK,KAAK,IAAI,EAAI,GACjC,CACF,EAEA,SAASD,GAAOD,EAAO,CACrBA,EAAM,MAAM,MAAQA,EAAM,MAC1BA,EAAM,MAAM,MAAQA,EAAM,MAC1B,OAAOA,EAAM,MACb,OAAOA,EAAM,KACf,CAEA,SAASI,GAAeC,EAAGC,EAAG,CAC5B,GAAID,IAAM,SAAWA,IAAM,QACzB,OAAOC,CAEX,CCzCA,IAAIC,GAAsBC,EAAS,CAAC,EAEpC,SAASC,GAAUC,EAAGC,EAAU,CAC9B,GAAID,EAAE,UAAU,GAAK,EACnB,MAAO,CAAC,EAEV,IAAIE,EAAQC,GAAWH,EAAGC,GAAYJ,EAAiB,EACnDO,EAAUC,GAAYH,EAAM,MAAOA,EAAM,QAASA,EAAM,OAAO,EAGnE,OAASI,EACLC,EAAIH,EAAS,SAAUI,EAAG,CAC1B,OAAOR,EAAE,SAASQ,EAAE,EAAGA,EAAE,CAAC,CAC5B,CAAC,CACH,CACF,CAEA,SAASH,GAAYL,EAAGS,EAASC,EAAS,CAMxC,QALIN,EAAU,CAAC,EACXO,EAAUF,EAAQA,EAAQ,OAAS,CAAC,EACpCG,EAAQH,EAAQ,CAAC,EAEjBI,EACGb,EAAE,UAAU,GAAG,CACpB,KAAQa,EAAQD,EAAM,QAAQ,GAC5BE,GAAWd,EAAGS,EAASC,EAASG,CAAK,EAEvC,KAAQA,EAAQF,EAAQ,QAAQ,GAC9BG,GAAWd,EAAGS,EAASC,EAASG,CAAK,EAEvC,GAAIb,EAAE,UAAU,GACd,QAASe,EAAIN,EAAQ,OAAS,EAAGM,EAAI,EAAG,EAAEA,EAExC,GADAF,EAAQJ,EAAQM,CAAC,EAAE,QAAQ,EACvBF,EAAO,CACTT,EAAUA,EAAQ,OAAOU,GAAWd,EAAGS,EAASC,EAASG,EAAO,EAAI,CAAC,EACrE,KACF,EAGN,CAEA,OAAOT,CACT,CAEA,SAASU,GAAWd,EAAGS,EAASC,EAASG,EAAOG,EAAqB,CACnE,IAAIZ,EAAUY,EAAsB,CAAC,EAAI,OAEzC,OAAEC,EAAQjB,EAAE,QAAQa,EAAM,CAAC,EAAG,SAAUK,EAAM,CAC5C,IAAIC,EAASnB,EAAE,KAAKkB,CAAI,EACpBE,EAASpB,EAAE,KAAKkB,EAAK,CAAC,EAEtBF,GACFZ,EAAQ,KAAK,CAAE,EAAGc,EAAK,EAAG,EAAGA,EAAK,CAAE,CAAC,EAGvCE,EAAO,KAAOD,EACdE,GAAaZ,EAASC,EAASU,CAAM,CACvC,CAAC,EAECH,EAAQjB,EAAE,SAASa,EAAM,CAAC,EAAG,SAAUK,EAAM,CAC7C,IAAIC,EAASnB,EAAE,KAAKkB,CAAI,EACpBI,EAAIJ,EAAK,EACTK,EAASvB,EAAE,KAAKsB,CAAC,EACrBC,EAAO,IAASJ,EAChBE,GAAaZ,EAASC,EAASa,CAAM,CACvC,CAAC,EAEDvB,EAAE,WAAWa,EAAM,CAAC,EAEbT,CACT,CAEA,SAASD,GAAWH,EAAGC,EAAU,CAC/B,IAAIuB,EAAW,IAAIC,EACfC,EAAQ,EACRC,EAAS,EAEXV,EAAQjB,EAAE,MAAM,EAAG,SAAU4B,EAAG,CAChCJ,EAAS,QAAQI,EAAG,CAAE,EAAGA,EAAG,GAAI,EAAG,IAAK,CAAE,CAAC,CAC7C,CAAC,EAICX,EAAQjB,EAAE,MAAM,EAAG,SAAUQ,EAAG,CAChC,IAAIqB,EAAaL,EAAS,KAAKhB,EAAE,EAAGA,EAAE,CAAC,GAAK,EACxCW,EAASlB,EAASO,CAAC,EACnBsB,EAAaD,EAAaV,EAC9BK,EAAS,QAAQhB,EAAE,EAAGA,EAAE,EAAGsB,CAAU,EACrCH,EAAS,KAAK,IAAIA,EAASH,EAAS,KAAKhB,EAAE,CAAC,EAAE,KAAOW,CAAO,EAC5DO,EAAQ,KAAK,IAAIA,EAAQF,EAAS,KAAKhB,EAAE,CAAC,EAAE,IAASW,CAAO,CAC9D,CAAC,EAED,IAAIV,EAAYsB,EAAMJ,EAASD,EAAQ,CAAC,EAAE,IAAI,UAAY,CACxD,OAAO,IAAIM,CACb,CAAC,EACGtB,EAAUgB,EAAQ,EAEtB,OAAET,EAAQO,EAAS,MAAM,EAAG,SAAUI,EAAG,CACvCP,GAAaZ,EAASC,EAASc,EAAS,KAAKI,CAAC,CAAC,CACjD,CAAC,EAEM,CAAE,MAAOJ,EAAU,QAASf,EAAS,QAASC,CAAQ,CAC/D,CAEA,SAASW,GAAaZ,EAASC,EAASG,EAAO,CACxCA,EAAM,IAECA,EAAM,GAGhBJ,EAAQI,EAAM,IAAMA,EAAM,GAAQH,CAAO,EAAE,QAAQG,CAAK,EAFxDJ,EAAQA,EAAQ,OAAS,CAAC,EAAE,QAAQI,CAAK,EAFzCJ,EAAQ,CAAC,EAAE,QAAQI,CAAK,CAM5B,CCxHA,SAASoB,GAAIC,EAAG,CACd,IAAIC,EAAMD,EAAE,MAAM,EAAE,YAAc,SAAWE,GAAUF,EAAGG,EAASH,CAAC,CAAC,EAAII,GAAOJ,CAAC,EAC/EK,EAAQJ,EAAK,SAAUK,EAAG,CAC1B,IAAIC,EAAQP,EAAE,KAAKM,CAAC,EACpBN,EAAE,WAAWM,CAAC,EACdC,EAAM,YAAcD,EAAE,KACtBC,EAAM,SAAW,GACjBP,EAAE,QAAQM,EAAE,EAAGA,EAAE,EAAGC,EAASC,EAAS,KAAK,CAAC,CAC9C,CAAC,EAED,SAASL,EAASH,EAAG,CACnB,OAAO,SAAUM,EAAG,CAClB,OAAON,EAAE,KAAKM,CAAC,EAAE,MACnB,CACF,CACF,CAEA,SAASF,GAAOJ,EAAG,CACjB,IAAIC,EAAM,CAAC,EACPQ,EAAQ,CAAC,EACTC,EAAU,CAAC,EAEf,SAASC,EAAIC,EAAG,CACV,OAAO,UAAU,eAAe,KAAKF,EAASE,CAAC,IAGnDF,EAAQE,CAAC,EAAI,GACbH,EAAMG,CAAC,EAAI,GACTP,EAAQL,EAAE,SAASY,CAAC,EAAG,SAAUN,EAAG,CAChC,OAAO,UAAU,eAAe,KAAKG,EAAOH,EAAE,CAAC,EACjDL,EAAI,KAAKK,CAAC,EAEVK,EAAIL,EAAE,CAAC,CAEX,CAAC,EACD,OAAOG,EAAMG,CAAC,EAChB,CAEA,OAAEP,EAAQL,EAAE,MAAM,EAAGW,CAAG,EACjBV,CACT,CAEA,SAASY,GAAKb,EAAG,CACbK,EAAQL,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIO,EAAQP,EAAE,KAAK,CAAC,EACpB,GAAIO,EAAM,SAAU,CAClBP,EAAE,WAAW,CAAC,EAEd,IAAIc,EAAcP,EAAM,YACxB,OAAOA,EAAM,SACb,OAAOA,EAAM,YACbP,EAAE,QAAQ,EAAE,EAAG,EAAE,EAAGO,EAAOO,CAAW,CACxC,CACF,CAAC,CACH,CCjCA,SAASC,GAAIC,EAAG,CACdA,EAAE,MAAM,EAAE,YAAc,CAAC,EACvBC,EAAQD,EAAE,MAAM,EAAG,SAAUE,EAAM,CACnCC,GAAcH,EAAGE,CAAI,CACvB,CAAC,CACH,CAKA,SAASC,GAAcH,EAAG,EAAG,CAC3B,IAAII,EAAI,EAAE,EACNC,EAAQL,EAAE,KAAKI,CAAC,EAAE,KAClBE,EAAI,EAAE,EACNC,EAAQP,EAAE,KAAKM,CAAC,EAAE,KAClBE,EAAO,EAAE,KACTC,EAAYT,EAAE,KAAK,CAAC,EACpBU,EAAYD,EAAU,UAE1B,GAAIF,IAAUF,EAAQ,EAEtB,CAAAL,EAAE,WAAW,CAAC,EAcd,IAAIW,EAAQ,OACRC,EAAOC,EACX,IAAKA,EAAI,EAAG,EAAER,EAAOA,EAAQE,EAAO,EAAEM,EAAG,EAAER,EACzCI,EAAU,OAAS,CAAC,EACpBE,EAAQ,CACN,MAAO,EACP,OAAQ,EACR,UAAWF,EACX,QAAS,EACT,KAAMJ,CACR,EACAO,EAAaE,EAAad,EAAG,OAAQW,EAAO,IAAI,EAC5CN,IAAUK,IACZC,EAAM,MAAQF,EAAU,MACxBE,EAAM,OAASF,EAAU,OACzBE,EAAM,MAAQ,aACdA,EAAM,SAAWF,EAAU,UAE7BT,EAAE,QAAQI,EAAGQ,EAAO,CAAE,OAAQH,EAAU,MAAO,EAAGD,CAAI,EAClDK,IAAM,GACRb,EAAE,MAAM,EAAE,YAAY,KAAKY,CAAK,EAElCR,EAAIQ,EAGNZ,EAAE,QAAQI,EAAGE,EAAG,CAAE,OAAQG,EAAU,MAAO,EAAGD,CAAI,EACpD,CAEA,SAASO,GAAKf,EAAG,CACbC,EAAQD,EAAE,MAAM,EAAE,YAAa,SAAUI,EAAG,CAC5C,IAAIY,EAAOhB,EAAE,KAAKI,CAAC,EACfa,EAAYD,EAAK,UACjBV,EAEJ,IADAN,EAAE,QAAQgB,EAAK,QAASC,CAAS,EAC1BD,EAAK,OACVV,EAAIN,EAAE,WAAWI,CAAC,EAAE,CAAC,EACrBJ,EAAE,WAAWI,CAAC,EACda,EAAU,OAAO,KAAK,CAAE,EAAGD,EAAK,EAAG,EAAGA,EAAK,CAAE,CAAC,EAC1CA,EAAK,QAAU,eACjBC,EAAU,EAAID,EAAK,EACnBC,EAAU,EAAID,EAAK,EACnBC,EAAU,MAAQD,EAAK,MACvBC,EAAU,OAASD,EAAK,QAE1BZ,EAAIE,EACJU,EAAOhB,EAAE,KAAKI,CAAC,CAEnB,CAAC,CACH,CCpFA,SAASc,EAAYC,EAAG,CACtB,IAAIC,EAAU,CAAC,EAEf,SAASC,EAAIC,EAAG,CACd,IAAIC,EAAQJ,EAAE,KAAKG,CAAC,EACpB,GAAI,OAAO,UAAU,eAAe,KAAKF,EAASE,CAAC,EACjD,OAAOC,EAAM,KAEfH,EAAQE,CAAC,EAAI,GAEb,IAAIE,EAASC,EACTC,EAAIP,EAAE,SAASG,CAAC,EAAG,SAAUK,EAAG,CAChC,OAAON,EAAIM,EAAE,CAAC,EAAIR,EAAE,KAAKQ,CAAC,EAAE,MAC9B,CAAC,CACH,EAEA,OACEH,IAAS,OAAO,mBAChBA,IAAS,QACTA,IAAS,QAGTA,EAAO,GAGDD,EAAM,KAAOC,CACvB,CAEEI,EAAQT,EAAE,QAAQ,EAAGE,CAAG,CAC5B,CAMA,SAASQ,EAAMV,EAAG,EAAG,CACnB,OAAOA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAOA,EAAE,KAAK,EAAE,CAAC,EAAE,KAAOA,EAAE,KAAK,CAAC,EAAE,MACzD,CC/BA,SAASW,EAAaC,EAAG,CACvB,IAAIC,EAAI,IAAIC,EAAM,CAAE,SAAU,EAAM,CAAC,EAGjCC,EAAQH,EAAE,MAAM,EAAE,CAAC,EACnBI,EAAOJ,EAAE,UAAU,EACvBC,EAAE,QAAQE,EAAO,CAAC,CAAC,EAGnB,QADIE,EAAMC,EACHC,GAAUN,EAAGD,CAAC,EAAII,GACvBC,EAAOG,GAAiBP,EAAGD,CAAC,EAC5BM,EAAQL,EAAE,QAAQI,EAAK,CAAC,EAAII,EAAMT,EAAGK,CAAI,EAAI,CAACI,EAAMT,EAAGK,CAAI,EAC3DK,GAAWT,EAAGD,EAAGM,CAAK,EAGxB,OAAOL,CACT,CAMA,SAASM,GAAUN,EAAGD,EAAG,CACvB,SAASW,EAAIC,EAAG,CACZC,EAAQb,EAAE,UAAUY,CAAC,EAAG,SAAUE,EAAG,CACrC,IAAIC,EAAQD,EAAE,EACZE,EAAIJ,IAAMG,EAAQD,EAAE,EAAIC,EACtB,CAACd,EAAE,QAAQe,CAAC,GAAK,CAACP,EAAMT,EAAGc,CAAC,IAC9Bb,EAAE,QAAQe,EAAG,CAAC,CAAC,EACff,EAAE,QAAQW,EAAGI,EAAG,CAAC,CAAC,EAClBL,EAAIK,CAAC,EAET,CAAC,CACH,CAEA,OAAEH,EAAQZ,EAAE,MAAM,EAAGU,CAAG,EACjBV,EAAE,UAAU,CACrB,CAMA,SAASO,GAAiBP,EAAGD,EAAG,CAC9B,OAASiB,EAAMjB,EAAE,MAAM,EAAG,SAAUc,EAAG,CACrC,GAAIb,EAAE,QAAQa,EAAE,CAAC,IAAMb,EAAE,QAAQa,EAAE,CAAC,EAClC,OAAOL,EAAMT,EAAGc,CAAC,CAErB,CAAC,CACH,CAEA,SAASJ,GAAWT,EAAGD,EAAGM,EAAO,CAC7BO,EAAQZ,EAAE,MAAM,EAAG,SAAUW,EAAG,CAChCZ,EAAE,KAAKY,CAAC,EAAE,MAAQN,CACpB,CAAC,CACH,CCjFA,IAAIY,GAAwBC,EAAS,CAAC,ECDtC,IAAIC,GAAwBC,EAAS,CAAC,ECAtCC,GAAQ,eAAiBC,EAEzB,SAASD,GAAQE,EAAG,CAClB,IAAIC,EAAU,CAAC,EACXC,EAAQ,CAAC,EACTC,EAAU,CAAC,EAEf,SAASC,EAAMC,EAAM,CACnB,GAAI,OAAO,UAAU,eAAe,KAAKH,EAAOG,CAAI,EAClD,MAAM,IAAIN,EAGP,OAAO,UAAU,eAAe,KAAKE,EAASI,CAAI,IACrDH,EAAMG,CAAI,EAAI,GACdJ,EAAQI,CAAI,EAAI,GACdC,EAAKN,EAAE,aAAaK,CAAI,EAAGD,CAAK,EAClC,OAAOF,EAAMG,CAAI,EACjBF,EAAQ,KAAKE,CAAI,EAErB,CAIA,GAFEC,EAAKN,EAAE,MAAM,EAAGI,CAAK,EAEjBG,GAAKN,CAAO,IAAMD,EAAE,UAAU,EAClC,MAAM,IAAID,EAGZ,OAAOI,CACT,CAEA,SAASJ,GAAiB,CAAC,CAC3BA,EAAe,UAAY,IAAI,MCvB/B,SAASS,EAAIC,EAAGC,EAAIC,EAAO,CAClBC,GAAQF,CAAE,IACfA,EAAK,CAACA,CAAE,GAGV,IAAIG,GAAcJ,EAAE,WAAW,EAAIA,EAAE,WAAaA,EAAE,WAAW,KAAKA,CAAC,EAEjEK,EAAM,CAAC,EACPC,EAAU,CAAC,EACf,OAAEC,EAAKN,EAAI,SAAUO,EAAG,CACtB,GAAI,CAACR,EAAE,QAAQQ,CAAC,EACd,MAAM,IAAI,MAAM,6BAA+BA,CAAC,EAGlDC,GAAMT,EAAGQ,EAAGN,IAAU,OAAQI,EAASF,EAAYC,CAAG,CACxD,CAAC,EACMA,CACT,CAEA,SAASI,GAAMT,EAAGQ,EAAGE,EAAWJ,EAASF,EAAYC,EAAK,CACnD,OAAO,UAAU,eAAe,KAAKC,EAASE,CAAC,IAClDF,EAAQE,CAAC,EAAI,GAERE,GACHL,EAAI,KAAKG,CAAC,EAEVD,EAAKH,EAAWI,CAAC,EAAG,SAAUG,EAAG,CACjCF,GAAMT,EAAGW,EAAGD,EAAWJ,EAASF,EAAYC,CAAG,CACjD,CAAC,EACGK,GACFL,EAAI,KAAKG,CAAC,EAGhB,CCzCA,SAASI,GAAUC,EAAGC,EAAI,CACxB,OAAOC,EAAIF,EAAGC,EAAI,MAAM,CAC1B,CCFA,SAASE,GAASC,EAAGC,EAAI,CACvB,OAAOC,EAAIF,EAAGC,EAAI,KAAK,CACzB,CCGAE,EAAe,iBAAmBC,GAClCD,EAAe,cAAgBE,GAC/BF,EAAe,aAAeG,GAC9BH,EAAe,UAAYI,GAC3BJ,EAAe,UAAYK,GAC3BL,EAAe,cAAgBM,GAmC/B,SAASN,EAAeO,EAAG,CACzBA,EAAIC,GAASD,CAAC,EACdE,EAAYF,CAAC,EACb,IAAIG,EAAIC,EAAaJ,CAAC,EACtBN,GAAiBS,CAAC,EAClBR,GAAcQ,EAAGH,CAAC,EAGlB,QADIK,EAAGC,EACCD,EAAIR,GAAUM,CAAC,GACrBG,EAAIR,GAAUK,EAAGH,EAAGK,CAAC,EACrBN,GAAcI,EAAGH,EAAGK,EAAGC,CAAC,CAE5B,CAKA,SAASX,GAAcQ,EAAGH,EAAG,CAC3B,IAAIO,EAASC,GAAUL,EAAGA,EAAE,MAAM,CAAC,EACnCI,EAAKA,EAAG,MAAM,EAAGA,EAAG,OAAS,CAAC,EAC5BE,EAAQF,EAAI,SAAUG,EAAG,CACzBC,GAAeR,EAAGH,EAAGU,CAAC,CACxB,CAAC,CACH,CAEA,SAASC,GAAeR,EAAGH,EAAGY,EAAO,CACnC,IAAIC,EAAWV,EAAE,KAAKS,CAAK,EACvBE,EAASD,EAAS,OACtBV,EAAE,KAAKS,EAAOE,CAAM,EAAE,SAAWlB,GAAaO,EAAGH,EAAGY,CAAK,CAC3D,CAMA,SAAShB,GAAaO,EAAGH,EAAGY,EAAO,CACjC,IAAIC,EAAWV,EAAE,KAAKS,CAAK,EACvBE,EAASD,EAAS,OAElBE,EAAc,GAEdC,EAAYhB,EAAE,KAAKY,EAAOE,CAAM,EAEhCG,EAAW,EAEf,OAAKD,IACHD,EAAc,GACdC,EAAYhB,EAAE,KAAKc,EAAQF,CAAK,GAGlCK,EAAWD,EAAU,OAEnBP,EAAQT,EAAE,UAAUY,CAAK,EAAG,SAAUP,EAAG,CACzC,IAAIa,EAAYb,EAAE,IAAMO,EACtBO,EAAQD,EAAYb,EAAE,EAAIA,EAAE,EAE9B,GAAIc,IAAUL,EAAQ,CACpB,IAAIM,EAAeF,IAAcH,EAC/BM,EAAcrB,EAAE,KAAKK,CAAC,EAAE,OAG1B,GADAY,GAAYG,EAAeC,EAAc,CAACA,EACtCC,GAAWnB,EAAGS,EAAOO,CAAK,EAAG,CAC/B,IAAII,EAAgBpB,EAAE,KAAKS,EAAOO,CAAK,EAAE,SACzCF,GAAYG,EAAe,CAACG,EAAgBA,CAC9C,CACF,CACF,CAAC,EAEMN,CACT,CAEA,SAASvB,GAAiB8B,EAAMC,EAAM,CAChC,UAAU,OAAS,IACrBA,EAAOD,EAAK,MAAM,EAAE,CAAC,GAEvBE,GAAgBF,EAAM,CAAC,EAAG,EAAGC,CAAI,CACnC,CAEA,SAASC,GAAgBF,EAAMG,EAASC,EAASlB,EAAGI,EAAQ,CAC1D,IAAIe,EAAMD,EACNE,EAAQN,EAAK,KAAKd,CAAC,EAEvB,OAAAiB,EAAQjB,CAAC,EAAI,GACXD,EAAQe,EAAK,UAAUd,CAAC,EAAG,SAAUqB,EAAG,CACnC,OAAO,UAAU,eAAe,KAAKJ,EAASI,CAAC,IAClDH,EAAUF,GAAgBF,EAAMG,EAASC,EAASG,EAAGrB,CAAC,EAE1D,CAAC,EAEDoB,EAAM,IAAMD,EACZC,EAAM,IAAMF,IACRd,EACFgB,EAAM,OAAShB,EAGf,OAAOgB,EAAM,OAGRF,CACT,CAEA,SAAS/B,GAAU2B,EAAM,CACvB,OAASQ,EAAKR,EAAK,MAAM,EAAG,SAAU,EAAG,CACvC,OAAOA,EAAK,KAAK,CAAC,EAAE,SAAW,CACjC,CAAC,CACH,CAEA,SAAS1B,GAAUK,EAAGH,EAAGiC,EAAM,CAC7B,IAAIvB,EAAIuB,EAAK,EACTF,EAAIE,EAAK,EAKRjC,EAAE,QAAQU,EAAGqB,CAAC,IACjBrB,EAAIuB,EAAK,EACTF,EAAIE,EAAK,GAGX,IAAIC,EAAS/B,EAAE,KAAKO,CAAC,EACjByB,EAAShC,EAAE,KAAK4B,CAAC,EACjBK,EAAYF,EACZG,EAAO,GAIPH,EAAO,IAAMC,EAAO,MACtBC,EAAYD,EACZE,EAAO,IAGT,IAAIC,EAAeC,EAAOvC,EAAE,MAAM,EAAG,SAAUiC,EAAM,CACnD,OACEI,IAASG,GAAarC,EAAGA,EAAE,KAAK8B,EAAK,CAAC,EAAGG,CAAS,GAClDC,IAASG,GAAarC,EAAGA,EAAE,KAAK8B,EAAK,CAAC,EAAGG,CAAS,CAEtD,CAAC,EAED,OAASK,EAAMH,EAAY,SAAUL,EAAM,CACzC,OAAOS,EAAM1C,EAAGiC,CAAI,CACtB,CAAC,CACH,CAEA,SAASlC,GAAcI,EAAGH,EAAGK,EAAGC,EAAG,CACjC,IAAII,EAAIL,EAAE,EACN0B,EAAI1B,EAAE,EACVF,EAAE,WAAWO,EAAGqB,CAAC,EACjB5B,EAAE,QAAQG,EAAE,EAAGA,EAAE,EAAG,CAAC,CAAC,EACtBZ,GAAiBS,CAAC,EAClBR,GAAcQ,EAAGH,CAAC,EAClB2C,GAAYxC,EAAGH,CAAC,CAClB,CAEA,SAAS2C,GAAYxC,EAAGH,EAAG,CACzB,IAAIyB,EAASO,EAAK7B,EAAE,MAAM,EAAG,SAAUO,EAAG,CACxC,MAAO,CAACV,EAAE,KAAKU,CAAC,EAAE,MACpB,CAAC,EACGH,EAASqC,GAASzC,EAAGsB,CAAI,EAC7BlB,EAAKA,EAAG,MAAM,CAAC,EACbE,EAAQF,EAAI,SAAUG,EAAG,CACzB,IAAII,EAASX,EAAE,KAAKO,CAAC,EAAE,OACrBuB,EAAOjC,EAAE,KAAKU,EAAGI,CAAM,EACvB+B,EAAU,GAEPZ,IACHA,EAAOjC,EAAE,KAAKc,EAAQJ,CAAC,EACvBmC,EAAU,IAGZ7C,EAAE,KAAKU,CAAC,EAAE,KAAOV,EAAE,KAAKc,CAAM,EAAE,MAAQ+B,EAAUZ,EAAK,OAAS,CAACA,EAAK,OACxE,CAAC,CACH,CAKA,SAASX,GAAWE,EAAMsB,EAAGpC,EAAG,CAC9B,OAAOc,EAAK,QAAQsB,EAAGpC,CAAC,CAC1B,CAMA,SAAS8B,GAAahB,EAAMU,EAAQa,EAAW,CAC7C,OAAOA,EAAU,KAAOb,EAAO,KAAOA,EAAO,KAAOa,EAAU,GAChE,CClNA,SAASC,GAAKC,EAAG,CACf,OAAQA,EAAE,MAAM,EAAE,OAAQ,CACxB,IAAK,kBACHC,GAAqBD,CAAC,EACtB,MACF,IAAK,aACHE,GAAgBF,CAAC,EACjB,MACF,IAAK,eACHG,GAAkBH,CAAC,EACnB,MACF,QACEC,GAAqBD,CAAC,CAC1B,CACF,CAGA,IAAIG,GAAoBC,EAExB,SAASF,GAAgBF,EAAG,CAC1BI,EAAYJ,CAAC,EACbK,EAAaL,CAAC,CAChB,CAEA,SAASC,GAAqBD,EAAG,CAC/BM,EAAeN,CAAC,CAClB,CCvBA,SAASO,GAAIC,EAAG,CACd,IAAIC,EAAYC,EAAaF,EAAG,OAAQ,CAAC,EAAG,OAAO,EAC/CG,EAASC,GAAWJ,CAAC,EACrBK,EAAWC,EAAMC,EAAOJ,CAAM,CAAC,EAAI,EACnCK,EAAU,EAAIH,EAAS,EAE3BL,EAAE,MAAM,EAAE,YAAcC,EAGtBQ,EAAQT,EAAE,MAAM,EAAG,SAAUU,EAAG,CAChCV,EAAE,KAAKU,CAAC,EAAE,QAAUF,CACtB,CAAC,EAGD,IAAIG,EAASC,GAAWZ,CAAC,EAAI,EAG3BS,EAAQT,EAAE,SAAS,EAAG,SAAUa,EAAO,CACvCC,GAAId,EAAGC,EAAMO,EAASG,EAAQN,EAAQF,EAAQU,CAAK,CACrD,CAAC,EAIDb,EAAE,MAAM,EAAE,eAAiBQ,CAC7B,CAEA,SAASM,GAAId,EAAGC,EAAMO,EAASG,EAAQN,EAAQF,EAAQY,EAAG,CACxD,IAAIC,EAAWhB,EAAE,SAASe,CAAC,EAC3B,GAAI,CAACC,EAAS,OAAQ,CAChBD,IAAMd,GACRD,EAAE,QAAQC,EAAMc,EAAG,CAAE,OAAQ,EAAG,OAAQP,CAAQ,CAAC,EAEnD,MACF,CAEA,IAAIS,EAAWC,EAAclB,EAAG,KAAK,EACjCmB,EAAcD,EAAclB,EAAG,KAAK,EACpCoB,EAAQpB,EAAE,KAAKe,CAAC,EAEpBf,EAAE,UAAUiB,EAAKF,CAAC,EAClBK,EAAM,UAAYH,EAClBjB,EAAE,UAAUmB,EAAQJ,CAAC,EACrBK,EAAM,aAAeD,EAEnBV,EAAQO,EAAU,SAAUH,EAAO,CACnCC,GAAId,EAAGC,EAAMO,EAASG,EAAQN,EAAQF,EAAQU,CAAK,EAEnD,IAAIQ,EAAYrB,EAAE,KAAKa,CAAK,EACxBS,EAAWD,EAAU,UAAYA,EAAU,UAAYR,EACvDU,EAAcF,EAAU,aAAeA,EAAU,aAAeR,EAChEW,EAAaH,EAAU,UAAYV,EAAS,EAAIA,EAChDc,EAASH,IAAaC,EAAc,EAAIlB,EAASF,EAAOY,CAAC,EAAI,EAEjEf,EAAE,QAAQiB,EAAKK,EAAU,CACvB,OAAQE,EACR,OAAQC,EACR,YAAa,EACf,CAAC,EAEDzB,EAAE,QAAQuB,EAAaJ,EAAQ,CAC7B,OAAQK,EACR,OAAQC,EACR,YAAa,EACf,CAAC,CACH,CAAC,EAEIzB,EAAE,OAAOe,CAAC,GACbf,EAAE,QAAQC,EAAMgB,EAAK,CAAE,OAAQ,EAAG,OAAQZ,EAASF,EAAOY,CAAC,CAAE,CAAC,CAElE,CAEA,SAASX,GAAWJ,EAAG,CACrB,IAAIG,EAAS,CAAC,EACd,SAASW,EAAIC,EAAGW,EAAO,CACrB,IAAIV,EAAWhB,EAAE,SAASe,CAAC,EACvBC,GAAYA,EAAS,QACrBP,EAAQO,EAAU,SAAUH,EAAO,CACnCC,EAAID,EAAOa,EAAQ,CAAC,CACtB,CAAC,EAEHvB,EAAOY,CAAC,EAAIW,CACd,CACA,OAAEjB,EAAQT,EAAE,SAAS,EAAG,SAAUe,EAAG,CACnCD,EAAIC,EAAG,CAAC,CACV,CAAC,EACMZ,CACT,CAEA,SAASS,GAAWZ,EAAG,CACrB,OAAS2B,EACP3B,EAAE,MAAM,EACR,SAAU4B,EAAKlB,EAAG,CAChB,OAAOkB,EAAM5B,EAAE,KAAKU,CAAC,EAAE,MACzB,EACA,CACF,CACF,CAEA,SAASmB,GAAQ7B,EAAG,CAClB,IAAI8B,EAAa9B,EAAE,MAAM,EACzBA,EAAE,WAAW8B,EAAW,WAAW,EACnC,OAAOA,EAAW,YAChBrB,EAAQT,EAAE,MAAM,EAAG,SAAUU,EAAG,CAChC,IAAIqB,EAAO/B,EAAE,KAAKU,CAAC,EACfqB,EAAK,aACP/B,EAAE,WAAWU,CAAC,CAElB,CAAC,CACH,CCpIA,SAASsB,GAAuBC,EAAGC,EAAIC,EAAI,CACzC,IAAIC,EAAO,CAAC,EACVC,EAEAC,EAAQH,EAAI,SAAUI,EAAG,CAIzB,QAHIC,EAAQP,EAAE,OAAOM,CAAC,EACpBE,EACAC,EACKF,GAAO,CASZ,GARAC,EAASR,EAAE,OAAOO,CAAK,EACnBC,GACFC,EAAYN,EAAKK,CAAM,EACvBL,EAAKK,CAAM,EAAID,IAEfE,EAAYL,EACZA,EAAWG,GAETE,GAAaA,IAAcF,EAAO,CACpCN,EAAG,QAAQQ,EAAWF,CAAK,EAC3B,MACF,CACAA,EAAQC,CACV,CACF,CAAC,CAyBH,CCjBA,SAASE,GAAgBC,EAAGC,EAAMC,EAAc,CAC9C,IAAIC,EAAOC,GAAeJ,CAAC,EACzBK,EAAS,IAAIC,EAAM,CAAE,SAAU,EAAK,CAAC,EAClC,SAAS,CAAE,KAAMH,CAAK,CAAC,EACvB,oBAAoB,SAAUI,EAAG,CAChC,OAAOP,EAAE,KAAKO,CAAC,CACjB,CAAC,EAEL,OAAEC,EAAQR,EAAE,MAAM,EAAG,SAAUO,EAAG,CAChC,IAAIE,EAAOT,EAAE,KAAKO,CAAC,EACjBG,EAASV,EAAE,OAAOO,CAAC,GAEjBE,EAAK,OAASR,GAASQ,EAAK,SAAWR,GAAQA,GAAQQ,EAAK,WAC9DJ,EAAO,QAAQE,CAAC,EAChBF,EAAO,UAAUE,EAAGG,GAAUP,CAAI,EAGhCK,EAAQR,EAAEE,CAAY,EAAEK,CAAC,EAAG,SAAUI,EAAG,CACzC,IAAIC,EAAID,EAAE,IAAMJ,EAAII,EAAE,EAAIA,EAAE,EAC1BE,EAAOR,EAAO,KAAKO,EAAGL,CAAC,EACvBO,EAAYC,EAAYF,CAAI,EAAkB,EAAdA,EAAK,OACvCR,EAAO,QAAQO,EAAGL,EAAG,CAAE,OAAQP,EAAE,KAAKW,CAAC,EAAE,OAASG,CAAO,CAAC,CAC5D,CAAC,EAEG,OAAO,UAAU,eAAe,KAAKL,EAAM,SAAS,GACtDJ,EAAO,QAAQE,EAAG,CAChB,WAAYE,EAAK,WAAWR,CAAI,EAChC,YAAaQ,EAAK,YAAYR,CAAI,CACpC,CAAC,EAGP,CAAC,EAEMI,CACT,CAEA,SAASD,GAAeJ,EAAG,CAEzB,QADIO,EACGP,EAAE,QAASO,EAAMS,EAAS,OAAO,CAAE,GAAE,CAC5C,OAAOT,CACT,CCvDA,SAASU,GAAWC,EAAGC,EAAU,CAE/B,QADIC,EAAK,EACAC,EAAI,EAAGA,EAAIF,EAAS,OAAQ,EAAEE,EACrCD,GAAME,GAAmBJ,EAAGC,EAASE,EAAI,CAAC,EAAGF,EAASE,CAAC,CAAC,EAE1D,OAAOD,CACT,CAEA,SAASE,GAAmBJ,EAAGK,EAAYC,EAAY,CAuBrD,QAnBIC,EAAaC,EACfF,EACEG,EAAIH,EAAY,SAAUI,EAAGP,EAAG,CAChC,OAAOA,CACT,CAAC,CACH,EACIQ,EAAiBC,EACjBH,EAAIJ,EAAY,SAAUK,EAAG,CAC7B,OAASG,EACLJ,EAAIT,EAAE,SAASU,CAAC,EAAG,SAAUI,EAAG,CAChC,MAAO,CAAE,IAAKP,EAASO,EAAE,CAAC,EAAG,OAAQd,EAAE,KAAKc,CAAC,EAAE,MAAO,CACxD,CAAC,EACD,KACF,CACF,CAAC,CACH,EAGIC,EAAa,EACVA,EAAaT,EAAW,QAAQS,IAAe,EACtD,IAAIC,EAAW,EAAID,EAAa,EAChCA,GAAc,EACd,IAAIE,EAASR,EAAI,IAAI,MAAMO,CAAQ,EAAG,UAAY,CAChD,MAAO,EACT,CAAC,EAGGd,EAAK,EACT,OAAEgB,EAEAP,EAAa,QAAQ,SAAUQ,EAAO,CACpC,IAAIC,EAAQD,EAAM,IAAMJ,EACxBE,EAAKG,CAAK,GAAKD,EAAM,OAGrB,QAFIE,EAAY,EAETD,EAAQ,GAETA,EAAQ,IACVC,GAAaJ,EAAKG,EAAQ,CAAC,GAG7BA,EAASA,EAAQ,GAAM,EACvBH,EAAKG,CAAK,GAAKD,EAAM,OAEvBjB,GAAMiB,EAAM,OAASE,CACvB,CAAC,CACH,EAEOnB,CACT,CCpEO,SAASoB,GAAUC,EAAG,CAC3B,IAAIC,EAAU,CAAC,EACXC,EAAgBC,EAAOH,EAAE,MAAM,EAAG,SAAUI,EAAG,CACjD,MAAO,CAACJ,EAAE,SAASI,CAAC,EAAE,MACxB,CAAC,EACGC,EAAYC,EACZC,EAAIL,EAAa,SAAUE,EAAG,CAC9B,OAAOJ,EAAE,KAAKI,CAAC,EAAE,IACnB,CAAC,CACH,EACII,EAAWD,EAAME,EAAMJ,EAAU,CAAC,EAAG,UAAY,CACnD,MAAO,CAAC,CACV,CAAC,EAED,SAASK,EAAIN,EAAG,CACd,GAAI,CAAEO,EAAIV,EAASG,CAAC,EACpB,CAAAH,EAAQG,CAAC,EAAI,GACb,IAAIQ,EAAOZ,EAAE,KAAKI,CAAC,EACnBI,EAAOI,EAAK,IAAI,EAAE,KAAKR,CAAC,EACtBS,EAAQb,EAAE,WAAWI,CAAC,EAAGM,CAAG,EAChC,CAEA,IAAII,EAAcC,EAAOb,EAAa,SAAUE,EAAG,CACjD,OAAOJ,EAAE,KAAKI,CAAC,EAAE,IACnB,CAAC,EACD,OAAES,EAAQC,EAAWJ,CAAG,EAEjBF,CACT,CCrCA,SAASQ,GAAWC,EAAGC,EAAS,CAC9B,OAASC,EAAID,EAAS,SAAUE,EAAG,CACjC,IAAIC,EAAMJ,EAAE,QAAQG,CAAC,EACrB,GAAKC,EAAI,OAEF,CACL,IAAIC,EAAWC,EACbF,EACA,SAAUG,EAAKC,EAAG,CAChB,IAAIC,EAAOT,EAAE,KAAKQ,CAAC,EACjBE,EAAQV,EAAE,KAAKQ,EAAE,CAAC,EACpB,MAAO,CACL,IAAKD,EAAI,IAAME,EAAK,OAASC,EAAM,MACnC,OAAQH,EAAI,OAASE,EAAK,MAC5B,CACF,EACA,CAAE,IAAK,EAAG,OAAQ,CAAE,CACtB,EAEA,MAAO,CACL,EAAGN,EACH,WAAYE,EAAO,IAAMA,EAAO,OAChC,OAAQA,EAAO,MACjB,CACF,KApBE,OAAO,CAAE,EAAGF,CAAE,CAqBlB,CAAC,CACH,CCDA,SAASQ,GAAiBC,EAASC,EAAI,CACrC,IAAIC,EAAgB,CAAC,EACnBC,EAAQH,EAAS,SAAUI,EAAOC,EAAG,CACrC,IAAIC,EAAOJ,EAAcE,EAAM,CAAC,EAAI,CAClC,SAAU,EACV,GAAI,CAAC,EACL,IAAK,CAAC,EACN,GAAI,CAACA,EAAM,CAAC,EACZ,EAAGC,CACL,EACOE,EAAYH,EAAM,UAAU,IAEjCE,EAAI,WAAaF,EAAM,WAEvBE,EAAI,OAASF,EAAM,OAEvB,CAAC,EAECD,EAAQF,EAAG,MAAM,EAAG,SAAUO,EAAG,CACjC,IAAIC,EAASP,EAAcM,EAAE,CAAC,EAC1BE,EAASR,EAAcM,EAAE,CAAC,EAC1B,CAAGD,EAAYE,CAAM,GAAK,CAAGF,EAAYG,CAAM,IACjDA,EAAO,WACPD,EAAO,IAAI,KAAKP,EAAcM,EAAE,CAAC,CAAC,EAEtC,CAAC,EAED,IAAIG,EAAcC,EAAOV,EAAe,SAAUE,EAAO,CAEvD,MAAO,CAACA,EAAM,QAChB,CAAC,EAED,OAAOS,GAAmBF,CAAS,CACrC,CAEA,SAASE,GAAmBF,EAAW,CACrC,IAAIX,EAAU,CAAC,EAEf,SAASc,EAASC,EAAQ,CACxB,OAAO,SAAUC,EAAQ,CACnBA,EAAO,SAIPT,EAAYS,EAAO,UAAU,GAC7BT,EAAYQ,EAAO,UAAU,GAC/BC,EAAO,YAAcD,EAAO,aAE5BE,GAAaF,EAAQC,CAAM,CAE/B,CACF,CAEA,SAASE,EAAUH,EAAQ,CACzB,OAAO,SAAUI,EAAQ,CACvBA,EAAO,GAAM,KAAKJ,CAAM,EACpB,EAAEI,EAAO,WAAa,GACxBR,EAAU,KAAKQ,CAAM,CAEzB,CACF,CAEA,KAAOR,EAAU,QAAQ,CACvB,IAAIP,EAAQO,EAAU,IAAI,EAC1BX,EAAQ,KAAKI,CAAK,EAChBD,EAAQC,EAAM,GAAM,QAAQ,EAAGU,EAASV,CAAK,CAAC,EAC9CD,EAAQC,EAAM,IAAKc,EAAUd,CAAK,CAAC,CACvC,CAEA,OAASgB,EACLR,EAAOZ,EAAS,SAAUI,EAAO,CACjC,MAAO,CAACA,EAAM,MAChB,CAAC,EACD,SAAUA,EAAO,CACf,OAASiB,EAAKjB,EAAO,CAAC,KAAM,IAAK,aAAc,QAAQ,CAAC,CAC1D,CACF,CACF,CAEA,SAASa,GAAaK,EAAQC,EAAQ,CACpC,IAAIC,EAAM,EACNC,EAAS,EAETH,EAAO,SACTE,GAAOF,EAAO,WAAaA,EAAO,OAClCG,GAAUH,EAAO,QAGfC,EAAO,SACTC,GAAOD,EAAO,WAAaA,EAAO,OAClCE,GAAUF,EAAO,QAGnBD,EAAO,GAAKC,EAAO,GAAG,OAAOD,EAAO,EAAE,EACtCA,EAAO,WAAaE,EAAMC,EAC1BH,EAAO,OAASG,EAChBH,EAAO,EAAI,KAAK,IAAIC,EAAO,EAAGD,EAAO,CAAC,EACtCC,EAAO,OAAS,EAClB,CC1HA,SAASG,GAAKC,EAASC,EAAW,CAChC,IAAIC,EAAaC,GAAUH,EAAS,SAAUI,EAAO,CACnD,OAAO,OAAO,UAAU,eAAe,KAAKA,EAAO,YAAY,CACjE,CAAC,EACGC,EAAWH,EAAM,IACnBI,EAAeC,EAAOL,EAAM,IAAK,SAAUE,EAAO,CAChD,MAAO,CAACA,EAAM,CAChB,CAAC,EACDI,EAAK,CAAC,EACNC,EAAM,EACNC,EAAS,EACTC,EAAU,EAEZN,EAAS,KAAKO,GAAgB,CAAC,CAACX,CAAS,CAAC,EAE1CU,EAAUE,GAAkBL,EAAIF,EAAYK,CAAO,EAEjDG,EAAQT,EAAU,SAAUD,EAAO,CACnCO,GAAWP,EAAM,GAAG,OACpBI,EAAG,KAAKJ,EAAM,EAAE,EAChBK,GAAOL,EAAM,WAAaA,EAAM,OAChCM,GAAUN,EAAM,OAChBO,EAAUE,GAAkBL,EAAIF,EAAYK,CAAO,CACrD,CAAC,EAED,IAAII,EAAS,CAAE,GAAMC,EAAQR,CAAE,CAAE,EACjC,OAAIE,IACFK,EAAO,WAAaN,EAAMC,EAC1BK,EAAO,OAASL,GAEXK,CACT,CAEA,SAASF,GAAkBL,EAAIF,EAAYW,EAAO,CAEhD,QADIC,EACGZ,EAAW,SAAWY,EAASC,EAAKb,CAAU,GAAG,GAAKW,GAC3DX,EAAW,IAAI,EACfE,EAAG,KAAKU,EAAK,EAAE,EACfD,IAEF,OAAOA,CACT,CAEA,SAASL,GAAgBQ,EAAM,CAC7B,OAAO,SAAUC,EAAQC,EAAQ,CAC/B,OAAID,EAAO,WAAaC,EAAO,WACtB,GACED,EAAO,WAAaC,EAAO,WAC7B,EAGDF,EAA6BE,EAAO,EAAID,EAAO,EAAxCA,EAAO,EAAIC,EAAO,CACnC,CACF,CCnDA,SAASC,GAAaC,EAAGC,EAAGC,EAAIC,EAAW,CACzC,IAAIC,EAAUJ,EAAE,SAASC,CAAC,EACtBI,EAAOL,EAAE,KAAKC,CAAC,EACfK,EAAKD,EAAOA,EAAK,WAAa,OAC9BE,EAAKF,EAAOA,EAAK,YAAc,OAC/BG,EAAY,CAAC,EAEbF,IACFF,EAAYK,EAAOL,EAAS,SAAUM,EAAG,CACvC,OAAOA,IAAMJ,GAAMI,IAAMH,CAC3B,CAAC,GAGH,IAAII,EAAcC,GAAWZ,EAAGI,CAAO,EACrCS,EAAQF,EAAa,SAAUG,EAAO,CACtC,GAAId,EAAE,SAASc,EAAM,CAAC,EAAE,OAAQ,CAC9B,IAAIC,EAAiBhB,GAAaC,EAAGc,EAAM,EAAGZ,EAAIC,CAAS,EAC3DK,EAAUM,EAAM,CAAC,EAAIC,EACjB,OAAO,UAAU,eAAe,KAAKA,EAAgB,YAAY,GACnEC,GAAiBF,EAAOC,CAAc,CAE1C,CACF,CAAC,EAED,IAAIE,EAAUC,GAAiBP,EAAaT,CAAE,EAC9CiB,GAAgBF,EAAST,CAAS,EAElC,IAAIY,EAASC,GAAKJ,EAASd,CAAS,EAEpC,GAAIG,IACFc,EAAO,GAAOE,EAAQ,CAAChB,EAAIc,EAAO,GAAIb,CAAE,CAAC,EACrCP,EAAE,aAAaM,CAAE,EAAE,QAAQ,CAC7B,IAAIiB,EAASvB,EAAE,KAAKA,EAAE,aAAaM,CAAE,EAAE,CAAC,CAAC,EACvCkB,EAASxB,EAAE,KAAKA,EAAE,aAAaO,CAAE,EAAE,CAAC,CAAC,EAClC,OAAO,UAAU,eAAe,KAAKa,EAAQ,YAAY,IAC5DA,EAAO,WAAa,EACpBA,EAAO,OAAS,GAElBA,EAAO,YACJA,EAAO,WAAaA,EAAO,OAASG,EAAO,MAAQC,EAAO,QAAUJ,EAAO,OAAS,GACvFA,EAAO,QAAU,CACnB,CAGF,OAAOA,CACT,CAEA,SAASD,GAAgBF,EAAST,EAAW,CACzCK,EAAQI,EAAS,SAAUH,EAAO,CAClCA,EAAM,GAAOQ,EACXR,EAAM,GAAG,IAAI,SAAUb,EAAG,CACxB,OAAIO,EAAUP,CAAC,EACNO,EAAUP,CAAC,EAAE,GAEfA,CACT,CAAC,CACH,CACF,CAAC,CACH,CAEA,SAASe,GAAiBS,EAAQC,EAAO,CAChCC,EAAYF,EAAO,UAAU,GAMlCA,EAAO,WAAaC,EAAM,WAC1BD,EAAO,OAASC,EAAM,SANtBD,EAAO,YACJA,EAAO,WAAaA,EAAO,OAASC,EAAM,WAAaA,EAAM,SAC7DD,EAAO,OAASC,EAAM,QACzBD,EAAO,QAAUC,EAAM,OAK3B,CCnDA,SAASE,GAAMC,EAAG,CAChB,IAAIC,EAAeA,GAAQD,CAAC,EAC1BE,EAAkBC,GAAiBH,EAAKI,EAAM,EAAGH,EAAU,CAAC,EAAG,SAAS,EACxEI,EAAgBF,GAAiBH,EAAKI,EAAMH,EAAU,EAAG,GAAI,EAAE,EAAG,UAAU,EAE1EK,EAAWC,GAAUP,CAAC,EAC1BQ,GAAYR,EAAGM,CAAQ,EAKvB,QAHIG,EAAS,OAAO,kBAClBC,EAEOC,EAAI,EAAGC,EAAW,EAAGA,EAAW,EAAG,EAAED,EAAG,EAAEC,EAAU,CAC3DC,GAAiBF,EAAI,EAAIT,EAAkBG,EAAeM,EAAI,GAAK,CAAC,EAEpEL,EAAgBQ,EAAiBd,CAAC,EAClC,IAAIe,EAAKC,GAAWhB,EAAGM,CAAQ,EAC3BS,EAAKN,IACPG,EAAW,EACXF,EAASO,GAAUX,CAAQ,EAC3BG,EAASM,EAEb,CAEAP,GAAYR,EAAGU,CAAI,CACrB,CAEA,SAASP,GAAiBH,EAAGkB,EAAOC,EAAc,CAChD,OAASC,EAAIF,EAAO,SAAUG,EAAM,CAClC,OAAOC,GAAgBtB,EAAGqB,EAAMF,CAAY,CAC9C,CAAC,CACH,CAEA,SAASN,GAAiBU,EAAaC,EAAW,CAChD,IAAIC,EAAK,IAAIC,EACXC,EAAQJ,EAAa,SAAUK,EAAI,CACnC,IAAIC,EAAOD,EAAG,MAAM,EAAE,KAClBE,EAASC,GAAaH,EAAIC,EAAMJ,EAAID,CAAS,EAC/CG,EAAQG,EAAO,GAAI,SAAUE,EAAGrB,EAAG,CACnCiB,EAAG,KAAKI,CAAC,EAAE,MAAQrB,CACrB,CAAC,EACDsB,GAAuBL,EAAIH,EAAIK,EAAO,EAAE,CAC1C,CAAC,CACH,CAEA,SAAStB,GAAYR,EAAGM,EAAU,CAC9BqB,EAAQrB,EAAU,SAAU4B,EAAO,CACjCP,EAAQO,EAAO,SAAUF,EAAGrB,EAAG,CAC/BX,EAAE,KAAKgC,CAAC,EAAE,MAAQrB,CACpB,CAAC,CACH,CAAC,CACH,CCxEA,SAASwB,GAAkBC,EAAG,CAC5B,IAAIC,EAAgBC,GAAUF,CAAC,EAE7BG,EAAQH,EAAE,MAAM,EAAE,YAAa,SAAUI,EAAG,CAU5C,QATIC,EAAOL,EAAE,KAAKI,CAAC,EACfE,EAAUD,EAAK,QACfE,EAAWC,GAASR,EAAGC,EAAeK,EAAQ,EAAGA,EAAQ,CAAC,EAC1DG,EAAOF,EAAS,KAChBG,EAAMH,EAAS,IACfI,EAAU,EACVC,EAAQH,EAAKE,CAAO,EACpBE,EAAY,GAETT,IAAME,EAAQ,GAAG,CAGtB,GAFAD,EAAOL,EAAE,KAAKI,CAAC,EAEXS,EAAW,CACb,MAAQD,EAAQH,EAAKE,CAAO,KAAOD,GAAOV,EAAE,KAAKY,CAAK,EAAE,QAAUP,EAAK,MACrEM,IAGEC,IAAUF,IACZG,EAAY,GAEhB,CAEA,GAAI,CAACA,EAAW,CACd,KACEF,EAAUF,EAAK,OAAS,GACxBT,EAAE,KAAMY,EAAQH,EAAKE,EAAU,CAAC,CAAE,EAAE,SAAWN,EAAK,MAEpDM,IAEFC,EAAQH,EAAKE,CAAO,CACtB,CAEAX,EAAE,UAAUI,EAAGQ,CAAK,EACpBR,EAAIJ,EAAE,WAAWI,CAAC,EAAE,CAAC,CACvB,CACF,CAAC,CACH,CAIA,SAASI,GAASR,EAAGC,EAAeG,EAAGU,EAAG,CACxC,IAAIC,EAAQ,CAAC,EACTC,EAAQ,CAAC,EACTC,EAAM,KAAK,IAAIhB,EAAcG,CAAC,EAAE,IAAKH,EAAca,CAAC,EAAE,GAAG,EACzDI,EAAM,KAAK,IAAIjB,EAAcG,CAAC,EAAE,IAAKH,EAAca,CAAC,EAAE,GAAG,EACzDK,EACAT,EAGJS,EAASf,EACT,GACEe,EAASnB,EAAE,OAAOmB,CAAM,EACxBJ,EAAM,KAAKI,CAAM,QACVA,IAAWlB,EAAckB,CAAM,EAAE,IAAMF,GAAOC,EAAMjB,EAAckB,CAAM,EAAE,MAKnF,IAJAT,EAAMS,EAGNA,EAASL,GACDK,EAASnB,EAAE,OAAOmB,CAAM,KAAOT,GACrCM,EAAM,KAAKG,CAAM,EAGnB,MAAO,CAAE,KAAMJ,EAAM,OAAOC,EAAM,QAAQ,CAAC,EAAG,IAAKN,CAAI,CACzD,CAEA,SAASR,GAAUF,EAAG,CACpB,IAAIoB,EAAS,CAAC,EACVF,EAAM,EAEV,SAASG,EAAIjB,EAAG,CACd,IAAIa,EAAMC,EACRf,EAAQH,EAAE,SAASI,CAAC,EAAGiB,CAAG,EAC5BD,EAAOhB,CAAC,EAAI,CAAE,IAAKa,EAAK,IAAKC,GAAM,CACrC,CACA,OAAEf,EAAQH,EAAE,SAAS,EAAGqB,CAAG,EAEpBD,CACT,CC9CA,SAASE,GAAmBC,EAAGC,EAAU,CACvC,IAAIC,EAAY,CAAC,EAEjB,SAASC,EAAWC,EAAWC,EAAO,CACpC,IAEEC,EAAK,EAGLC,EAAU,EACVC,EAAkBJ,EAAU,OAC5BK,EAAaC,EAAKL,CAAK,EAEzB,OAAEM,EAAQN,EAAO,SAAUO,EAAGC,EAAG,CAC/B,IAAIC,EAAIC,GAA0Bf,EAAGY,CAAC,EACpCI,EAAKF,EAAId,EAAE,KAAKc,CAAC,EAAE,MAAQN,GAEzBM,GAAKF,IAAMH,KACXE,EAAQN,EAAM,MAAME,EAASM,EAAI,CAAC,EAAG,SAAUI,EAAU,CACvDN,EAAQX,EAAE,aAAaiB,CAAQ,EAAG,SAAUC,EAAG,CAC/C,IAAIC,EAASnB,EAAE,KAAKkB,CAAC,EACnBE,GAAOD,EAAO,OACXC,GAAOd,GAAMU,EAAKI,KAAS,EAAED,EAAO,OAASnB,EAAE,KAAKiB,CAAQ,EAAE,QACjEI,GAAYnB,EAAWgB,EAAGD,CAAQ,CAEtC,CAAC,CACH,CAAC,EAEDV,EAAUM,EAAI,EACdP,EAAKU,EAET,CAAC,EAEMX,CACT,CAEA,OAAEiB,EAAOrB,EAAUE,CAAU,EACtBD,CACT,CAEA,SAASqB,GAAmBvB,EAAGC,EAAU,CACvC,IAAIC,EAAY,CAAC,EAEjB,SAASsB,EAAKC,EAAOC,EAAUC,EAAUC,EAAiBC,EAAiB,CACzE,IAAIjB,EACFD,EAAUmB,EAAMJ,EAAUC,CAAQ,EAAG,SAAUd,EAAG,CAClDD,EAAIa,EAAMZ,CAAC,EACPb,EAAE,KAAKY,CAAC,EAAE,OACVD,EAAQX,EAAE,aAAaY,CAAC,EAAG,SAAUM,EAAG,CACxC,IAAIa,EAAQ/B,EAAE,KAAKkB,CAAC,EAChBa,EAAM,QAAUA,EAAM,MAAQH,GAAmBG,EAAM,MAAQF,IACjER,GAAYnB,EAAWgB,EAAGN,CAAC,CAE/B,CAAC,CAEL,CAAC,CACH,CAEA,SAAST,EAAW6B,EAAOP,EAAO,CAChC,IAAIQ,EAAe,GACjBC,EACAR,EAAW,EAEb,OAAEf,EAAQc,EAAO,SAAUb,EAAGuB,EAAgB,CAC5C,GAAInC,EAAE,KAAKY,CAAC,EAAE,QAAU,SAAU,CAChC,IAAIwB,EAAepC,EAAE,aAAaY,CAAC,EAC/BwB,EAAa,SACfF,EAAelC,EAAE,KAAKoC,EAAa,CAAC,CAAC,EAAE,MACvCZ,EAAKC,EAAOC,EAAUS,EAAgBF,EAAcC,CAAY,EAEhER,EAAWS,EACXF,EAAeC,EAEnB,CACAV,EAAKC,EAAOC,EAAUD,EAAM,OAAQS,EAAcF,EAAM,MAAM,CAChE,CAAC,EAEMP,CACT,CAEA,OAAEH,EAAOrB,EAAUE,CAAU,EACtBD,CACT,CAEA,SAASa,GAA0Bf,EAAGY,EAAG,CACvC,GAAIZ,EAAE,KAAKY,CAAC,EAAE,MACZ,OAASyB,EAAKrC,EAAE,aAAaY,CAAC,EAAG,SAAUM,EAAG,CAC5C,OAAOlB,EAAE,KAAKkB,CAAC,EAAE,KACnB,CAAC,CAEL,CAEA,SAASG,GAAYnB,EAAWU,EAAGE,EAAG,CACpC,GAAIF,EAAIE,EAAG,CACT,IAAIwB,EAAM1B,EACVA,EAAIE,EACJA,EAAIwB,CACN,CAEA,IAAIC,EAAarC,EAAUU,CAAC,EACvB2B,IACHrC,EAAUU,CAAC,EAAI2B,EAAa,CAAC,GAE/BA,EAAWzB,CAAC,EAAI,EAClB,CAEA,SAAS0B,GAAYtC,EAAWU,EAAGE,EAAG,CACpC,GAAIF,EAAIE,EAAG,CACT,IAAIwB,EAAM1B,EACVA,EAAIE,EACJA,EAAIwB,CACN,CACA,MAAO,CAAC,CAACpC,EAAUU,CAAC,GAAK,OAAO,UAAU,eAAe,KAAKV,EAAUU,CAAC,EAAGE,CAAC,CAC/E,CAUA,SAAS2B,GAAkBzC,EAAGC,EAAUC,EAAWwC,EAAY,CAC7D,IAAIC,EAAO,CAAC,EACVC,EAAQ,CAAC,EACTC,EAAM,CAAC,EAKT,OAAElC,EAAQV,EAAU,SAAUI,EAAO,CACjCM,EAAQN,EAAO,SAAUO,EAAGkC,EAAO,CACnCH,EAAK/B,CAAC,EAAIA,EACVgC,EAAMhC,CAAC,EAAIA,EACXiC,EAAIjC,CAAC,EAAIkC,CACX,CAAC,CACH,CAAC,EAECnC,EAAQV,EAAU,SAAUI,EAAO,CACnC,IAAI0C,EAAU,GACZpC,EAAQN,EAAO,SAAUO,EAAG,CAC5B,IAAIoC,EAAKN,EAAW9B,CAAC,EACrB,GAAIoC,EAAG,OAAQ,CACbA,EAAOC,EAAOD,EAAI,SAAU,EAAG,CAC7B,OAAOH,EAAI,CAAC,CACd,CAAC,EAED,QADIK,GAAMF,EAAG,OAAS,GAAK,EAClBnC,EAAI,KAAK,MAAMqC,CAAE,EAAGC,EAAK,KAAK,KAAKD,CAAE,EAAGrC,GAAKsC,EAAI,EAAEtC,EAAG,CAC7D,IAAIC,EAAIkC,EAAGnC,CAAC,EACR+B,EAAMhC,CAAC,IAAMA,GAAKmC,EAAUF,EAAI/B,CAAC,GAAK,CAAC0B,GAAYtC,EAAWU,EAAGE,CAAC,IACpE8B,EAAM9B,CAAC,EAAIF,EACXgC,EAAMhC,CAAC,EAAI+B,EAAK/B,CAAC,EAAI+B,EAAK7B,CAAC,EAC3BiC,EAAUF,EAAI/B,CAAC,EAEnB,CACF,CACF,CAAC,CACH,CAAC,EAEM,CAAE,KAAM6B,EAAM,MAAOC,CAAM,CACpC,CAEA,SAASQ,GAAqBpD,EAAGC,EAAU0C,EAAMC,EAAOS,EAAY,CAMlE,IAAIC,EAAK,CAAC,EACRC,EAASC,GAAgBxD,EAAGC,EAAU0C,EAAMU,CAAU,EACtDI,EAAaJ,EAAa,aAAe,cAE3C,SAASK,EAAQC,EAAWC,EAAe,CAIzC,QAHIC,EAAQN,EAAO,MAAM,EACrBO,EAAOD,EAAM,IAAI,EACjBE,EAAU,CAAC,EACRD,GACDC,EAAQD,CAAI,EACdH,EAAUG,CAAI,GAEdC,EAAQD,CAAI,EAAI,GAChBD,EAAM,KAAKC,CAAI,EACfD,EAAQA,EAAM,OAAOD,EAAcE,CAAI,CAAC,GAG1CA,EAAOD,EAAM,IAAI,CAErB,CAGA,SAASG,EAAMF,EAAM,CACnBR,EAAGQ,CAAI,EAAIP,EAAO,QAAQO,CAAI,EAAE,OAAO,SAAUG,EAAKC,EAAG,CACvD,OAAO,KAAK,IAAID,EAAKX,EAAGY,EAAE,CAAC,EAAIX,EAAO,KAAKW,CAAC,CAAC,CAC/C,EAAG,CAAC,CACN,CAGA,SAASC,EAAML,EAAM,CACnB,IAAIM,EAAMb,EAAO,SAASO,CAAI,EAAE,OAAO,SAAUG,EAAKC,EAAG,CACvD,OAAO,KAAK,IAAID,EAAKX,EAAGY,EAAE,CAAC,EAAIX,EAAO,KAAKW,CAAC,CAAC,CAC/C,EAAG,OAAO,iBAAiB,EAEvBG,EAAOrE,EAAE,KAAK8D,CAAI,EAClBM,IAAQ,OAAO,mBAAqBC,EAAK,aAAeZ,IAC1DH,EAAGQ,CAAI,EAAI,KAAK,IAAIR,EAAGQ,CAAI,EAAGM,CAAG,EAErC,CAEA,OAAAV,EAAQM,EAAOT,EAAO,aAAa,KAAKA,CAAM,CAAC,EAC/CG,EAAQS,EAAOZ,EAAO,WAAW,KAAKA,CAAM,CAAC,EAG3C5C,EAAQiC,EAAO,SAAUhC,EAAG,CAC5B0C,EAAG1C,CAAC,EAAI0C,EAAGX,EAAK/B,CAAC,CAAC,CACpB,CAAC,EAEM0C,CACT,CAEA,SAASE,GAAgBxD,EAAGC,EAAU0C,EAAMU,EAAY,CACtD,IAAIiB,EAAa,IAAIC,EACnBC,EAAaxE,EAAE,MAAM,EACrByE,EAAQC,GAAIF,EAAW,QAASA,EAAW,QAASnB,CAAU,EAEhE,OAAE1C,EAAQV,EAAU,SAAUI,EAAO,CACnC,IAAI,EACFM,EAAQN,EAAO,SAAUO,EAAG,CAC5B,IAAI+D,EAAQhC,EAAK/B,CAAC,EAElB,GADA0D,EAAW,QAAQK,CAAK,EACpB,EAAG,CACL,IAAIC,EAAQjC,EAAK,CAAC,EAChBkC,EAAUP,EAAW,KAAKM,EAAOD,CAAK,EACxCL,EAAW,QAAQM,EAAOD,EAAO,KAAK,IAAIF,EAAMzE,EAAGY,EAAG,CAAC,EAAGiE,GAAW,CAAC,CAAC,CACzE,CACA,EAAIjE,CACN,CAAC,CACH,CAAC,EAEM0D,CACT,CAKA,SAASQ,GAA2B9E,EAAG+E,EAAK,CAC1C,OAASC,EAAQC,EAAOF,CAAG,EAAG,SAAUzB,EAAI,CAC1C,IAAI4B,EAAM,OAAO,kBACbd,EAAM,OAAO,kBAEjB,OAAEe,GAAM7B,EAAI,SAAU8B,EAAGxE,EAAG,CAC1B,IAAIyE,EAAYC,GAAMtF,EAAGY,CAAC,EAAI,EAE9BsE,EAAM,KAAK,IAAIE,EAAIC,EAAWH,CAAG,EACjCd,EAAM,KAAK,IAAIgB,EAAIC,EAAWjB,CAAG,CACnC,CAAC,EAEMc,EAAMd,CACf,CAAC,CACH,CASA,SAASmB,GAAiBR,EAAKS,EAAS,CACtC,IAAIC,EAAgBR,EAAOO,CAAO,EAChCE,EAAeC,EAAIF,CAAW,EAC9BG,EAAeC,EAAIJ,CAAW,EAE9B9E,EAAQ,CAAC,IAAK,GAAG,EAAG,SAAUmF,EAAM,CAClCnF,EAAQ,CAAC,IAAK,GAAG,EAAG,SAAUoF,EAAO,CACrC,IAAIC,EAAYF,EAAOC,EACrBzC,EAAKyB,EAAIiB,CAAS,EAClBC,EACF,GAAI3C,IAAOkC,EAEX,KAAIU,EAAWjB,EAAO3B,CAAE,EACxB2C,EAAQF,IAAU,IAAML,EAAeC,EAAIO,CAAM,EAAIN,EAAeC,EAAIK,CAAM,EAE1ED,IACFlB,EAAIiB,CAAS,EAAMG,EAAU7C,EAAI,SAAU8B,EAAG,CAC5C,OAAOA,EAAIa,CACb,CAAC,GAEL,CAAC,CACH,CAAC,CACH,CAEA,SAASG,GAAQrB,EAAKnC,EAAO,CAC3B,OAASuD,EAAUpB,EAAI,GAAI,SAAUsB,EAAQzF,EAAG,CAC9C,GAAIgC,EACF,OAAOmC,EAAInC,EAAM,YAAY,CAAC,EAAEhC,CAAC,EAEjC,IAAI0C,EAAOL,EAASqD,EAAIvB,EAAKnE,CAAC,CAAC,EAC/B,OAAQ0C,EAAG,CAAC,EAAIA,EAAG,CAAC,GAAK,CAE7B,CAAC,CACH,CAEA,SAASiD,GAAUvG,EAAG,CACpB,IAAIC,EAAgBuG,EAAiBxG,CAAC,EAClCE,EAAcuG,EAAM1G,GAAmBC,EAAGC,CAAQ,EAAGsB,GAAmBvB,EAAGC,CAAQ,CAAC,EAEpF8E,EAAM,CAAC,EACP2B,EACF/F,EAAQ,CAAC,IAAK,GAAG,EAAG,SAAUmF,EAAM,CACpCY,EAAmBZ,IAAS,IAAM7F,EAAagF,EAAOhF,CAAQ,EAAE,QAAQ,EACtEU,EAAQ,CAAC,IAAK,GAAG,EAAG,SAAUoF,EAAO,CACjCA,IAAU,MACZW,EAAqBJ,EAAII,EAAkB,SAAUC,EAAO,CAC1D,OAAS1B,EAAO0B,CAAK,EAAE,QAAQ,CACjC,CAAC,GAGH,IAAIjE,GAAcoD,IAAS,IAAM9F,EAAE,aAAeA,EAAE,YAAY,KAAKA,CAAC,EAClE4C,EAAQH,GAAkBzC,EAAG0G,EAAkBxG,EAAWwC,CAAU,EACpEY,EAAKF,GAAqBpD,EAAG0G,EAAkB9D,EAAM,KAAMA,EAAM,MAAOmD,IAAU,GAAG,EACrFA,IAAU,MACZzC,EAAO6C,EAAU7C,EAAI,SAAU8B,EAAG,CAChC,MAAO,CAACA,CACV,CAAC,GAEHL,EAAIe,EAAOC,CAAK,EAAIzC,CACtB,CAAC,CACH,CAAC,EAED,IAAIsD,EAAgB9B,GAA2B9E,EAAG+E,CAAG,EACrD,OAAAQ,GAAiBR,EAAK6B,CAAa,EAC5BR,GAAQrB,EAAK/E,EAAE,MAAM,EAAE,KAAK,CACrC,CAEA,SAAS0E,GAAImC,EAASC,EAASzD,EAAY,CACzC,OAAO,SAAUrD,EAAGY,EAAGE,EAAG,CACxB,IAAIiG,EAAS/G,EAAE,KAAKY,CAAC,EACjBoG,EAAShH,EAAE,KAAKc,CAAC,EACjBmG,EAAM,EACNhB,EAGJ,GADAgB,GAAOF,EAAO,MAAQ,EAClB,OAAO,UAAU,eAAe,KAAKA,EAAQ,UAAU,EACzD,OAAQA,EAAO,SAAS,YAAY,EAAG,CACrC,IAAK,IACHd,EAAQ,CAACc,EAAO,MAAQ,EACxB,MACF,IAAK,IACHd,EAAQc,EAAO,MAAQ,EACvB,KACJ,CAWF,GATId,IACFgB,GAAO5D,EAAa4C,EAAQ,CAACA,GAE/BA,EAAQ,EAERgB,IAAQF,EAAO,MAAQD,EAAUD,GAAW,EAC5CI,IAAQD,EAAO,MAAQF,EAAUD,GAAW,EAE5CI,GAAOD,EAAO,MAAQ,EAClB,OAAO,UAAU,eAAe,KAAKA,EAAQ,UAAU,EACzD,OAAQA,EAAO,SAAS,YAAY,EAAG,CACrC,IAAK,IACHf,EAAQe,EAAO,MAAQ,EACvB,MACF,IAAK,IACHf,EAAQ,CAACe,EAAO,MAAQ,EACxB,KACJ,CAEF,OAAIf,IACFgB,GAAO5D,EAAa4C,EAAQ,CAACA,GAE/BA,EAAQ,EAEDgB,CACT,CACF,CAEA,SAAS3B,GAAMtF,EAAGY,EAAG,CACnB,OAAOZ,EAAE,KAAKY,CAAC,EAAE,KACnB,CChaA,SAASsG,GAASC,EAAG,CACnBA,EAASC,EAAmBD,CAAC,EAE7BE,GAAUF,CAAC,EACTG,GAAOC,GAAUJ,CAAC,EAAG,SAAUK,EAAGC,EAAG,CACrCN,EAAE,KAAKM,CAAC,EAAE,EAAID,CAChB,CAAC,CACH,CAEA,SAASH,GAAUF,EAAG,CACpB,IAAIO,EAAgBC,EAAiBR,CAAC,EAClCS,EAAUT,EAAE,MAAM,EAAE,QACpBU,EAAQ,EACVC,EAAQJ,EAAU,SAAUK,EAAO,CACnC,IAAIC,EAAcC,EACdC,EAAIH,EAAO,SAAUN,EAAG,CACxB,OAAON,EAAE,KAAKM,CAAC,EAAE,MACnB,CAAC,CACH,EACEK,EAAQC,EAAO,SAAUN,EAAG,CAC5BN,EAAE,KAAKM,CAAC,EAAE,EAAII,EAAQG,EAAY,CACpC,CAAC,EACDH,GAASG,EAAYJ,CACvB,CAAC,CACH,CCfA,SAASO,GAAOC,EAAGC,EAAM,CACvB,IAAIC,EAAOD,GAAQA,EAAK,YAAmBC,GAAYC,GACvDD,EAAK,SAAU,IAAM,CACnB,IAAIE,EAAcF,EAAK,qBAAsB,IAAMG,GAAiBL,CAAC,CAAC,EACtEE,EAAK,cAAe,IAAMI,GAAUF,EAAaF,CAAI,CAAC,EACtDA,EAAK,qBAAsB,IAAMK,GAAiBP,EAAGI,CAAW,CAAC,CACnE,CAAC,CACH,CAEA,SAASE,GAAUN,EAAGE,EAAM,CAC1BA,EAAK,6BAA8B,IAAMM,GAAuBR,CAAC,CAAC,EAClEE,EAAK,sBAAuB,IAAMO,GAAgBT,CAAC,CAAC,EACpDE,EAAK,cAAe,IAAcQ,GAAIV,CAAC,CAAC,EACxCE,EAAK,uBAAwB,IAAmBQ,GAAIV,CAAC,CAAC,EACtDE,EAAK,WAAY,IAAMS,GAAUC,EAAmBZ,CAAC,CAAC,CAAC,EACvDE,EAAK,6BAA8B,IAAMW,GAAuBb,CAAC,CAAC,EAClEE,EAAK,uBAAwB,IAAWY,GAAiBd,CAAC,CAAC,EAC3DE,EAAK,2BAA4B,IAAmBa,GAAQf,CAAC,CAAC,EAC9DE,EAAK,qBAAsB,IAAWc,GAAehB,CAAC,CAAC,EACvDE,EAAK,uBAAwB,IAAMe,GAAiBjB,CAAC,CAAC,EACtDE,EAAK,6BAA8B,IAAMgB,GAAuBlB,CAAC,CAAC,EAClEE,EAAK,oBAAqB,IAAgBQ,GAAIV,CAAC,CAAC,EAChDE,EAAK,wBAAyB,IAAMiB,GAAkBnB,CAAC,CAAC,EACxDE,EAAK,wBAAyB,IAAMkB,GAAkBpB,CAAC,CAAC,EACxDE,EAAK,YAAa,IAAMmB,GAAMrB,CAAC,CAAC,EAChCE,EAAK,sBAAuB,IAAMoB,GAAgBtB,CAAC,CAAC,EACpDE,EAAK,6BAA8B,IAAuBqB,GAAOvB,CAAC,CAAC,EACnEE,EAAK,eAAgB,IAAMsB,GAASxB,CAAC,CAAC,EACtCE,EAAK,wBAAyB,IAAMuB,GAAkBzB,CAAC,CAAC,EACxDE,EAAK,wBAAyB,IAAMwB,GAAkB1B,CAAC,CAAC,EACxDE,EAAK,qBAAsB,IAAgByB,GAAK3B,CAAC,CAAC,EAClDE,EAAK,2BAA4B,IAAM0B,GAAqB5B,CAAC,CAAC,EAC9DE,EAAK,2BAA4B,IAAuByB,GAAK3B,CAAC,CAAC,EAC/DE,EAAK,qBAAsB,IAAM2B,GAAe7B,CAAC,CAAC,EAClDE,EAAK,2BAA4B,IAAM4B,GAAqB9B,CAAC,CAAC,EAC9DE,EAAK,oBAAqB,IAAM6B,GAA8B/B,CAAC,CAAC,EAChEE,EAAK,mBAAoB,IAAcyB,GAAK3B,CAAC,CAAC,CAChD,CAQA,SAASO,GAAiByB,EAAY5B,EAAa,CAC/C6B,EAAQD,EAAW,MAAM,EAAG,SAAUE,EAAG,CACzC,IAAIC,EAAaH,EAAW,KAAKE,CAAC,EAC9BE,EAAchC,EAAY,KAAK8B,CAAC,EAEhCC,IACFA,EAAW,EAAIC,EAAY,EAC3BD,EAAW,EAAIC,EAAY,EAEvBhC,EAAY,SAAS8B,CAAC,EAAE,SAC1BC,EAAW,MAAQC,EAAY,MAC/BD,EAAW,OAASC,EAAY,QAGtC,CAAC,EAECH,EAAQD,EAAW,MAAM,EAAG,SAAUK,EAAG,CACzC,IAAIF,EAAaH,EAAW,KAAKK,CAAC,EAC9BD,EAAchC,EAAY,KAAKiC,CAAC,EAEpCF,EAAW,OAASC,EAAY,OAC5B,OAAO,UAAU,eAAe,KAAKA,EAAa,GAAG,IACvDD,EAAW,EAAIC,EAAY,EAC3BD,EAAW,EAAIC,EAAY,EAE/B,CAAC,EAEDJ,EAAW,MAAM,EAAE,MAAQ5B,EAAY,MAAM,EAAE,MAC/C4B,EAAW,MAAM,EAAE,OAAS5B,EAAY,MAAM,EAAE,MAClD,CAEA,IAAIkC,GAAgB,CAAC,UAAW,UAAW,UAAW,UAAW,SAAS,EACtEC,GAAgB,CAAE,QAAS,GAAI,QAAS,GAAI,QAAS,GAAI,QAAS,IAAK,EACvEC,GAAa,CAAC,YAAa,SAAU,UAAW,OAAO,EACvDC,GAAe,CAAC,QAAS,QAAQ,EACjCC,GAAe,CAAE,MAAO,EAAG,OAAQ,CAAE,EACrCC,GAAe,CAAC,SAAU,SAAU,QAAS,SAAU,aAAa,EACpEC,GAAe,CACjB,OAAQ,EACR,OAAQ,EACR,MAAO,EACP,OAAQ,EACR,YAAa,GACb,SAAU,GACZ,EACIC,GAAY,CAAC,UAAU,EAQ3B,SAASxC,GAAiB2B,EAAY,CACpC,IAAIhC,EAAI,IAAI8C,EAAM,CAAE,WAAY,GAAM,SAAU,EAAK,CAAC,EAClDC,EAAQC,GAAahB,EAAW,MAAM,CAAC,EAE3C,OAAAhC,EAAE,SACEiD,EAAM,CAAC,EAAGV,GAAeW,GAAkBH,EAAOT,EAAa,EAAKa,EAAKJ,EAAOP,EAAU,CAAC,CAC/F,EAEEP,EAAQD,EAAW,MAAM,EAAG,SAAUE,EAAG,CACzC,IAAIkB,EAAOJ,GAAahB,EAAW,KAAKE,CAAC,CAAC,EAC1ClC,EAAE,QAAQkC,EAAKmB,GAASH,GAAkBE,EAAMX,EAAY,EAAGC,EAAY,CAAC,EAC5E1C,EAAE,UAAUkC,EAAGF,EAAW,OAAOE,CAAC,CAAC,CACrC,CAAC,EAECD,EAAQD,EAAW,MAAM,EAAG,SAAUK,EAAG,CACzC,IAAIiB,EAAON,GAAahB,EAAW,KAAKK,CAAC,CAAC,EAC1CrC,EAAE,QACAqC,EACEY,EAAM,CAAC,EAAGL,GAAcM,GAAkBI,EAAMX,EAAY,EAAKQ,EAAKG,EAAMT,EAAS,CAAC,CAC1F,CACF,CAAC,EAEM7C,CACT,CAUA,SAASQ,GAAuBR,EAAG,CACjC,IAAI+C,EAAQ/C,EAAE,MAAM,EACpB+C,EAAM,SAAW,EACfd,EAAQjC,EAAE,MAAM,EAAG,SAAUqC,EAAG,CAChC,IAAIiB,EAAOtD,EAAE,KAAKqC,CAAC,EACnBiB,EAAK,QAAU,EACXA,EAAK,SAAS,YAAY,IAAM,MAC9BP,EAAM,UAAY,MAAQA,EAAM,UAAY,KAC9CO,EAAK,OAASA,EAAK,YAEnBA,EAAK,QAAUA,EAAK,YAG1B,CAAC,CACH,CAQA,SAASzC,GAAuBb,EAAG,CAC/BiC,EAAQjC,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIsD,EAAOtD,EAAE,KAAK,CAAC,EACnB,GAAIsD,EAAK,OAASA,EAAK,OAAQ,CAC7B,IAAIpB,EAAIlC,EAAE,KAAK,EAAE,CAAC,EACduD,EAAIvD,EAAE,KAAK,EAAE,CAAC,EACdwD,EAAQ,CAAE,MAAOD,EAAE,KAAOrB,EAAE,MAAQ,EAAIA,EAAE,KAAM,CAAK,EACpDuB,EAAazD,EAAG,aAAcwD,EAAO,KAAK,CACjD,CACF,CAAC,CACH,CAEA,SAASvC,GAAiBjB,EAAG,CAC3B,IAAI0D,EAAU,EACZzB,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAChC,IAAIkB,EAAOpD,EAAE,KAAKkC,CAAC,EACfkB,EAAK,YACPA,EAAK,QAAUpD,EAAE,KAAKoD,EAAK,SAAS,EAAE,KACtCA,EAAK,QAAUpD,EAAE,KAAKoD,EAAK,YAAY,EAAE,KAEzCM,EAAYC,EAAID,EAASN,EAAK,OAAO,EAEzC,CAAC,EACDpD,EAAE,MAAM,EAAE,QAAU0D,CACtB,CAEA,SAASxC,GAAuBlB,EAAG,CAC/BiC,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAChC,IAAIkB,EAAOpD,EAAE,KAAKkC,CAAC,EACfkB,EAAK,QAAU,eACjBpD,EAAE,KAAKoD,EAAK,CAAC,EAAE,UAAYA,EAAK,KAChCpD,EAAE,WAAWkC,CAAC,EAElB,CAAC,CACH,CAEA,SAASL,GAAe7B,EAAG,CACzB,IAAI4D,EAAO,OAAO,kBACdC,EAAO,EACPC,EAAO,OAAO,kBACdC,EAAO,EACPC,EAAahE,EAAE,MAAM,EACrBiE,EAAUD,EAAW,SAAW,EAChCE,EAAUF,EAAW,SAAW,EAEpC,SAASG,EAAYC,EAAO,CAC1B,IAAIC,EAAID,EAAM,EACVE,EAAIF,EAAM,EACVb,EAAIa,EAAM,MACVG,EAAIH,EAAM,OACdR,EAAO,KAAK,IAAIA,EAAMS,EAAId,EAAI,CAAC,EAC/BM,EAAO,KAAK,IAAIA,EAAMQ,EAAId,EAAI,CAAC,EAC/BO,EAAO,KAAK,IAAIA,EAAMQ,EAAIC,EAAI,CAAC,EAC/BR,EAAO,KAAK,IAAIA,EAAMO,EAAIC,EAAI,CAAC,CACjC,CAEEtC,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAChCiC,EAAYnE,EAAE,KAAKkC,CAAC,CAAC,CACvB,CAAC,EACCD,EAAQjC,EAAE,MAAM,EAAG,SAAUqC,EAAG,CAChC,IAAIiB,EAAOtD,EAAE,KAAKqC,CAAC,EACf,OAAO,UAAU,eAAe,KAAKiB,EAAM,GAAG,GAChDa,EAAYb,CAAI,CAEpB,CAAC,EAEDM,GAAQK,EACRH,GAAQI,EAENjC,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAChC,IAAIkB,EAAOpD,EAAE,KAAKkC,CAAC,EACnBkB,EAAK,GAAKQ,EACVR,EAAK,GAAKU,CACZ,CAAC,EAEC7B,EAAQjC,EAAE,MAAM,EAAG,SAAUqC,EAAG,CAChC,IAAIiB,EAAOtD,EAAE,KAAKqC,CAAC,EACjBJ,EAAQqB,EAAK,OAAQ,SAAUkB,EAAG,CAClCA,EAAE,GAAKZ,EACPY,EAAE,GAAKV,CACT,CAAC,EACG,OAAO,UAAU,eAAe,KAAKR,EAAM,GAAG,IAChDA,EAAK,GAAKM,GAER,OAAO,UAAU,eAAe,KAAKN,EAAM,GAAG,IAChDA,EAAK,GAAKQ,EAEd,CAAC,EAEDE,EAAW,MAAQH,EAAOD,EAAOK,EACjCD,EAAW,OAASD,EAAOD,EAAOI,CACpC,CAEA,SAASpC,GAAqB9B,EAAG,CAC7BiC,EAAQjC,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIsD,EAAOtD,EAAE,KAAK,CAAC,EACfyE,EAAQzE,EAAE,KAAK,EAAE,CAAC,EAClB0E,EAAQ1E,EAAE,KAAK,EAAE,CAAC,EAClB2E,EAAIC,EACHtB,EAAK,QAKRqB,EAAKrB,EAAK,OAAO,CAAC,EAClBsB,EAAKtB,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,IALvCA,EAAK,OAAS,CAAC,EACfqB,EAAKD,EACLE,EAAKH,GAKPnB,EAAK,OAAO,QAAauB,EAAcJ,EAAOE,CAAE,CAAC,EACjDrB,EAAK,OAAO,KAAUuB,EAAcH,EAAOE,CAAE,CAAC,CAChD,CAAC,CACH,CAEA,SAAShD,GAAqB5B,EAAG,CAC7BiC,EAAQjC,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIsD,EAAOtD,EAAE,KAAK,CAAC,EACnB,GAAI,OAAO,UAAU,eAAe,KAAKsD,EAAM,GAAG,EAIhD,QAHIA,EAAK,WAAa,KAAOA,EAAK,WAAa,OAC7CA,EAAK,OAASA,EAAK,aAEbA,EAAK,SAAU,CACrB,IAAK,IACHA,EAAK,GAAKA,EAAK,MAAQ,EAAIA,EAAK,YAChC,MACF,IAAK,IACHA,EAAK,GAAKA,EAAK,MAAQ,EAAIA,EAAK,YAChC,KACJ,CAEJ,CAAC,CACH,CAEA,SAASvB,GAA8B/B,EAAG,CACtCiC,EAAQjC,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,IAAIsD,EAAOtD,EAAE,KAAK,CAAC,EACfsD,EAAK,UACPA,EAAK,OAAO,QAAQ,CAExB,CAAC,CACH,CAEA,SAAS5B,GAAkB1B,EAAG,CAC1BiC,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAChC,GAAIlC,EAAE,SAASkC,CAAC,EAAE,OAAQ,CACxB,IAAIkB,EAAOpD,EAAE,KAAKkC,CAAC,EACf,EAAIlC,EAAE,KAAKoD,EAAK,SAAS,EACzB0B,EAAI9E,EAAE,KAAKoD,EAAK,YAAY,EAC5B2B,EAAI/E,EAAE,KAAOgF,EAAK5B,EAAK,UAAU,CAAC,EAClC6B,EAAIjF,EAAE,KAAOgF,EAAK5B,EAAK,WAAW,CAAC,EAEvCA,EAAK,MAAQ,KAAK,IAAI6B,EAAE,EAAIF,EAAE,CAAC,EAC/B3B,EAAK,OAAS,KAAK,IAAI0B,EAAE,EAAI,EAAE,CAAC,EAChC1B,EAAK,EAAI2B,EAAE,EAAI3B,EAAK,MAAQ,EAC5BA,EAAK,EAAI,EAAE,EAAIA,EAAK,OAAS,CAC/B,CACF,CAAC,EAECnB,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAC5BlC,EAAE,KAAKkC,CAAC,EAAE,QAAU,UACtBlC,EAAE,WAAWkC,CAAC,CAElB,CAAC,CACH,CAEA,SAASzB,GAAgBT,EAAG,CACxBiC,EAAQjC,EAAE,MAAM,EAAG,SAAU,EAAG,CAChC,GAAI,EAAE,IAAM,EAAE,EAAG,CACf,IAAIoD,EAAOpD,EAAE,KAAK,EAAE,CAAC,EAChBoD,EAAK,YACRA,EAAK,UAAY,CAAC,GAEpBA,EAAK,UAAU,KAAK,CAAE,EAAM,MAAOpD,EAAE,KAAK,CAAC,CAAE,CAAC,EAC9CA,EAAE,WAAW,CAAC,CAChB,CACF,CAAC,CACH,CAEA,SAASsB,GAAgBtB,EAAG,CAC1B,IAAIkF,EAAcC,EAAiBnF,CAAC,EAClCiC,EAAQiD,EAAQ,SAAUE,EAAO,CACjC,IAAIC,EAAa,EACfpD,EAAQmD,EAAO,SAAUlD,EAAGoD,EAAG,CAC/B,IAAIlC,EAAOpD,EAAE,KAAKkC,CAAC,EACnBkB,EAAK,MAAQkC,EAAID,EACfpD,EAAQmB,EAAK,UAAW,SAAUmC,EAAU,CACvC9B,EACHzD,EACA,WACA,CACE,MAAOuF,EAAS,MAAM,MACtB,OAAQA,EAAS,MAAM,OACvB,KAAMnC,EAAK,KACX,MAAOkC,GAAI,EAAED,EACb,EAAGE,EAAS,EACZ,MAAOA,EAAS,KAClB,EACA,KACF,CACF,CAAC,EACD,OAAOnC,EAAK,SACd,CAAC,CACH,CAAC,CACH,CAEA,SAAS3B,GAAkBzB,EAAG,CAC1BiC,EAAQjC,EAAE,MAAM,EAAG,SAAUkC,EAAG,CAChC,IAAIkB,EAAOpD,EAAE,KAAKkC,CAAC,EACnB,GAAIkB,EAAK,QAAU,WAAY,CAC7B,IAAIoC,EAAWxF,EAAE,KAAKoD,EAAK,EAAE,CAAC,EAC1BiB,EAAImB,EAAS,EAAIA,EAAS,MAAQ,EAClClB,EAAIkB,EAAS,EACbC,EAAKrC,EAAK,EAAIiB,EACdqB,EAAKF,EAAS,OAAS,EAC3BxF,EAAE,QAAQoD,EAAK,EAAGA,EAAK,KAAK,EAC5BpD,EAAE,WAAWkC,CAAC,EACdkB,EAAK,MAAM,OAAS,CAClB,CAAE,EAAGiB,EAAK,EAAIoB,EAAM,EAAG,EAAGnB,EAAIoB,CAAG,EACjC,CAAE,EAAGrB,EAAK,EAAIoB,EAAM,EAAG,EAAGnB,EAAIoB,CAAG,EACjC,CAAE,EAAGrB,EAAIoB,EAAI,EAAGnB,CAAE,EAClB,CAAE,EAAGD,EAAK,EAAIoB,EAAM,EAAG,EAAGnB,EAAIoB,CAAG,EACjC,CAAE,EAAGrB,EAAK,EAAIoB,EAAM,EAAG,EAAGnB,EAAIoB,CAAG,CACnC,EACAtC,EAAK,MAAM,EAAIA,EAAK,EACpBA,EAAK,MAAM,EAAIA,EAAK,CACtB,CACF,CAAC,CACH,CAEA,SAASF,GAAkByC,EAAKvB,EAAO,CACrC,OAASwB,EAAYzC,EAAKwC,EAAKvB,CAAK,EAAG,MAAM,CAC/C,CAEA,SAASpB,GAAaoB,EAAO,CAC3B,IAAIyB,EAAW,CAAC,EAChB,OAAE5D,EAAQmC,EAAO,SAAUlC,EAAG4D,EAAG,CAC/BD,EAASC,EAAE,YAAY,CAAC,EAAI5D,CAC9B,CAAC,EACM2D,CACT",
+ "names": ["addDummyNode", "g", "type", "attrs", "name", "v", "uniqueId_default", "simplify", "simplified", "Graph", "forEach_default", "e", "simpleLabel", "label", "asNonCompoundGraph", "intersectRect", "rect", "point", "x", "y", "dx", "dy", "w", "h", "sx", "sy", "buildLayerMatrix", "g", "layering", "map_default", "range_default", "maxRank", "forEach_default", "v", "node", "rank", "isUndefined_default", "normalizeRanks", "min", "min_default", "has_default", "removeEmptyRanks", "offset", "layers", "delta", "nodeRankFactor", "vs", "addBorderNode", "prefix", "order", "addDummyNode", "max_default", "partition", "collection", "fn", "result", "value", "time", "name", "start", "now_default", "notime", "addBorderSegments", "g", "dfs", "v", "children", "node", "forEach_default", "rank", "maxRank", "addBorderNode", "prop", "prefix", "sg", "sgNode", "label", "prev", "curr", "addDummyNode", "adjust", "g", "rankDir", "swapWidthHeight", "undo", "reverseY", "swapXY", "forEach_default", "v", "swapWidthHeightOne", "attrs", "w", "reverseYOne", "edge", "swapXYOne", "x", "List", "sentinel", "entry", "unlink", "strs", "curr", "filterOutLinks", "k", "v", "DEFAULT_WEIGHT_FN", "constant_default", "greedyFAS", "g", "weightFn", "state", "buildState", "results", "doGreedyFAS", "flatten_default", "map_default", "e", "buckets", "zeroIdx", "sources", "sinks", "entry", "removeNode", "i", "collectPredecessors", "forEach_default", "edge", "weight", "uEntry", "assignBucket", "w", "wEntry", "fasGraph", "Graph", "maxIn", "maxOut", "v", "prevWeight", "edgeWeight", "range_default", "List", "run", "g", "fas", "greedyFAS", "weightFn", "dfsFAS", "forEach_default", "e", "label", "uniqueId_default", "stack", "visited", "dfs", "v", "undo", "forwardName", "run", "g", "forEach_default", "edge", "normalizeEdge", "v", "vRank", "w", "wRank", "name", "edgeLabel", "labelRank", "attrs", "dummy", "i", "addDummyNode", "undo", "node", "origLabel", "longestPath", "g", "visited", "dfs", "v", "label", "rank", "min_default", "map_default", "e", "forEach_default", "slack", "feasibleTree", "g", "t", "Graph", "start", "size", "edge", "delta", "tightTree", "findMinSlackEdge", "slack", "shiftRanks", "dfs", "v", "forEach_default", "e", "edgeV", "w", "minBy_default", "DEFAULT_WEIGHT_FUNC", "constant_default", "DEFAULT_WEIGHT_FUNC", "constant_default", "topsort", "CycleException", "g", "visited", "stack", "results", "visit", "node", "forEach_default", "size_default", "dfs", "g", "vs", "order", "isArray_default", "navigation", "acc", "visited", "forEach_default", "v", "doDfs", "postorder", "w", "postorder", "g", "vs", "dfs", "preorder", "g", "vs", "dfs", "networkSimplex", "initLowLimValues", "initCutValues", "calcCutValue", "leaveEdge", "enterEdge", "exchangeEdges", "g", "simplify", "longestPath", "t", "feasibleTree", "e", "f", "vs", "postorder", "forEach_default", "v", "assignCutValue", "child", "childLab", "parent", "childIsTail", "graphEdge", "cutValue", "isOutEdge", "other", "pointsToHead", "otherWeight", "isTreeEdge", "otherCutValue", "tree", "root", "dfsAssignLowLim", "visited", "nextLim", "low", "label", "w", "find_default", "edge", "vLabel", "wLabel", "tailLabel", "flip", "candidates", "filter_default", "isDescendant", "minBy_default", "slack", "updateRanks", "preorder", "flipped", "u", "rootLabel", "rank", "g", "networkSimplexRanker", "tightTreeRanker", "longestPathRanker", "longestPath", "feasibleTree", "networkSimplex", "run", "g", "root", "addDummyNode", "depths", "treeDepths", "height", "max_default", "values_default", "nodeSep", "forEach_default", "e", "weight", "sumWeights", "child", "dfs", "v", "children", "top", "addBorderNode", "bottom", "label", "childNode", "childTop", "childBottom", "thisWeight", "minlen", "depth", "reduce_default", "acc", "cleanup", "graphLabel", "edge", "addSubgraphConstraints", "g", "cg", "vs", "prev", "rootPrev", "forEach_default", "v", "child", "parent", "prevChild", "buildLayerGraph", "g", "rank", "relationship", "root", "createRootNode", "result", "Graph", "v", "forEach_default", "node", "parent", "e", "u", "edge", "weight", "isUndefined_default", "uniqueId_default", "crossCount", "g", "layering", "cc", "i", "twoLayerCrossCount", "northLayer", "southLayer", "southPos", "zipObject_default", "map_default", "v", "southEntries", "flatten_default", "sortBy_default", "e", "firstIndex", "treeSize", "tree", "forEach_default", "entry", "index", "weightSum", "initOrder", "g", "visited", "simpleNodes", "filter_default", "v", "maxRank", "max_default", "map_default", "layers", "range_default", "dfs", "has_default", "node", "forEach_default", "orderedVs", "sortBy_default", "barycenter", "g", "movable", "map_default", "v", "inV", "result", "reduce_default", "acc", "e", "edge", "nodeU", "resolveConflicts", "entries", "cg", "mappedEntries", "forEach_default", "entry", "i", "tmp", "isUndefined_default", "e", "entryV", "entryW", "sourceSet", "filter_default", "doResolveConflicts", "handleIn", "vEntry", "uEntry", "mergeEntries", "handleOut", "wEntry", "map_default", "pick_default", "target", "source", "sum", "weight", "sort", "entries", "biasRight", "parts", "partition", "entry", "sortable", "unsortable", "sortBy_default", "vs", "sum", "weight", "vsIndex", "compareWithBias", "consumeUnsortable", "forEach_default", "result", "flatten_default", "index", "last", "last_default", "bias", "entryV", "entryW", "sortSubgraph", "g", "v", "cg", "biasRight", "movable", "node", "bl", "br", "subgraphs", "filter_default", "w", "barycenters", "barycenter", "forEach_default", "entry", "subgraphResult", "mergeBarycenters", "entries", "resolveConflicts", "expandSubgraphs", "result", "sort", "flatten_default", "blPred", "brPred", "target", "other", "isUndefined_default", "order", "g", "maxRank", "downLayerGraphs", "buildLayerGraphs", "range_default", "upLayerGraphs", "layering", "initOrder", "assignOrder", "bestCC", "best", "i", "lastBest", "sweepLayerGraphs", "buildLayerMatrix", "cc", "crossCount", "cloneDeep_default", "ranks", "relationship", "map_default", "rank", "buildLayerGraph", "layerGraphs", "biasRight", "cg", "Graph", "forEach_default", "lg", "root", "sorted", "sortSubgraph", "v", "addSubgraphConstraints", "layer", "parentDummyChains", "g", "postorderNums", "postorder", "forEach_default", "v", "node", "edgeObj", "pathData", "findPath", "path", "lca", "pathIdx", "pathV", "ascending", "w", "vPath", "wPath", "low", "lim", "parent", "result", "dfs", "findType1Conflicts", "g", "layering", "conflicts", "visitLayer", "prevLayer", "layer", "k0", "scanPos", "prevLayerLength", "lastNode", "last_default", "forEach_default", "v", "i", "w", "findOtherInnerSegmentNode", "k1", "scanNode", "u", "uLabel", "uPos", "addConflict", "reduce_default", "findType2Conflicts", "scan", "south", "southPos", "southEnd", "prevNorthBorder", "nextNorthBorder", "range_default", "uNode", "north", "prevNorthPos", "nextNorthPos", "southLookahead", "predecessors", "find_default", "tmp", "conflictsV", "hasConflict", "verticalAlignment", "neighborFn", "root", "align", "pos", "order", "prevIdx", "ws", "sortBy_default", "mp", "il", "horizontalCompaction", "reverseSep", "xs", "blockG", "buildBlockGraph", "borderType", "iterate", "setXsFunc", "nextNodesFunc", "stack", "elem", "visited", "pass1", "acc", "e", "pass2", "min", "node", "blockGraph", "Graph", "graphLabel", "sepFn", "sep", "vRoot", "uRoot", "prevMax", "findSmallestWidthAlignment", "xss", "minBy_default", "values_default", "max", "forIn_default", "x", "halfWidth", "width", "alignCoordinates", "alignTo", "alignToVals", "alignToMin", "min_default", "alignToMax", "max_default", "vert", "horiz", "alignment", "delta", "xsVals", "mapValues_default", "balance", "ignore", "map_default", "positionX", "buildLayerMatrix", "merge_default", "adjustedLayering", "inner", "smallestWidth", "nodeSep", "edgeSep", "vLabel", "wLabel", "sum", "position", "g", "asNonCompoundGraph", "positionY", "forOwn_default", "positionX", "x", "v", "layering", "buildLayerMatrix", "rankSep", "prevY", "forEach_default", "layer", "maxHeight", "max_default", "map_default", "layout", "g", "opts", "time", "notime", "layoutGraph", "buildLayoutGraph", "runLayout", "updateInputGraph", "makeSpaceForEdgeLabels", "removeSelfEdges", "run", "rank", "asNonCompoundGraph", "injectEdgeLabelProxies", "removeEmptyRanks", "cleanup", "normalizeRanks", "assignRankMinMax", "removeEdgeLabelProxies", "parentDummyChains", "addBorderSegments", "order", "insertSelfEdges", "adjust", "position", "positionSelfEdges", "removeBorderNodes", "undo", "fixupEdgeLabelCoords", "translateGraph", "assignNodeIntersects", "reversePointsForReversedEdges", "inputGraph", "forEach_default", "v", "inputLabel", "layoutLabel", "e", "graphNumAttrs", "graphDefaults", "graphAttrs", "nodeNumAttrs", "nodeDefaults", "edgeNumAttrs", "edgeDefaults", "edgeAttrs", "Graph", "graph", "canonicalize", "merge_default", "selectNumberAttrs", "pick_default", "node", "defaults_default", "edge", "w", "label", "addDummyNode", "maxRank", "max_default", "minX", "maxX", "minY", "maxY", "graphLabel", "marginX", "marginY", "getExtremes", "attrs", "x", "y", "h", "p", "nodeV", "nodeW", "p1", "p2", "intersectRect", "b", "l", "last_default", "r", "layers", "buildLayerMatrix", "layer", "orderShift", "i", "selfEdge", "selfNode", "dx", "dy", "obj", "mapValues_default", "newAttrs", "k"]
+}
diff --git a/docs/public/chunk-CM5D5KZN.min.js b/docs/public/chunk-CM5D5KZN.min.js
new file mode 100755
index 0000000..76e50e8
--- /dev/null
+++ b/docs/public/chunk-CM5D5KZN.min.js
@@ -0,0 +1,2 @@
+import{a as m}from"./chunk-OSRY5VT3.min.js";var R=m(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0;e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;e.htmlEntitiesRegex=/(\w+)(^\w|;)?/g;e.htmlCtrlEntityRegex=/&(newline|tab);/gi;e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;e.urlSchemeRegex=/^.+(:|:)/gim;e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;e.relativeFirstCharacters=[".","/"];e.BLANK_URL="about:blank"});var p=m(s=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0});s.sanitizeUrl=void 0;var t=R();function d(r){return t.relativeFirstCharacters.indexOf(r[0])>-1}function v(r){var c=r.replace(t.ctrlCharactersRegex,"");return c.replace(t.htmlEntitiesRegex,function(a,i){return String.fromCharCode(i)})}function x(r){return URL.canParse(r)}function g(r){try{return decodeURIComponent(r)}catch{return r}}function C(r){if(!r)return t.BLANK_URL;var c,a=g(r.trim());do a=v(a).replace(t.htmlCtrlEntityRegex,"").replace(t.ctrlCharactersRegex,"").replace(t.whitespaceEscapeCharsRegex,"").trim(),a=g(a),c=a.match(t.ctrlCharactersRegex)||a.match(t.htmlEntitiesRegex)||a.match(t.htmlCtrlEntityRegex)||a.match(t.whitespaceEscapeCharsRegex);while(c&&c.length>0);var i=a;if(!i)return t.BLANK_URL;if(d(i))return i;var h=i.trimStart(),u=h.match(t.urlSchemeRegex);if(!u)return i;var n=u[0].toLowerCase().trim();if(t.invalidProtocolRegex.test(n))return t.BLANK_URL;var o=h.replace(/\\/g,"/");if(n==="mailto:"||n.includes("://"))return o;if(n==="http:"||n==="https:"){if(!x(o))return t.BLANK_URL;var l=new URL(o);return l.protocol=l.protocol.toLowerCase(),l.hostname=l.hostname.toLowerCase(),l.toString()}return o}s.sanitizeUrl=C});export{p as a};
+//# sourceMappingURL=chunk-CM5D5KZN.min.js.map
diff --git a/docs/public/chunk-CM5D5KZN.min.js.map b/docs/public/chunk-CM5D5KZN.min.js.map
new file mode 100755
index 0000000..508e75f
--- /dev/null
+++ b/docs/public/chunk-CM5D5KZN.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@braintree/sanitize-url/dist/constants.js", "../../node_modules/@braintree/sanitize-url/dist/index.js"],
+ "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|:)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction isValidUrl(url) {\n return URL.canParse(url);\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url.trim());\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n // Remove any leading whitespace before checking the URL scheme\n var trimmedUrl = sanitizedUrl.trimStart();\n var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n var backSanitized = trimmedUrl.replace(/\\\\/g, \"/\");\n // Handle special cases for mailto: and custom deep-link protocols\n if (urlScheme === \"mailto:\" || urlScheme.includes(\"://\")) {\n return backSanitized;\n }\n // For http and https URLs, perform additional validation\n if (urlScheme === \"http:\" || urlScheme === \"https:\") {\n if (!isValidUrl(backSanitized)) {\n return constants_1.BLANK_URL;\n }\n var url_1 = new URL(backSanitized);\n url_1.protocol = url_1.protocol.toLowerCase();\n url_1.hostname = url_1.hostname.toLowerCase();\n return url_1.toString();\n }\n return backSanitized;\n}\nexports.sanitizeUrl = sanitizeUrl;\n"],
+ "mappings": "4CAAA,IAAAA,EAAAC,EAAAC,GAAA,cACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5DA,EAAQ,UAAYA,EAAQ,wBAA0BA,EAAQ,2BAA6BA,EAAQ,eAAiBA,EAAQ,oBAAsBA,EAAQ,oBAAsBA,EAAQ,kBAAoBA,EAAQ,qBAAuB,OAC3OA,EAAQ,qBAAuB,wCAC/BA,EAAQ,kBAAoB,mBAC5BA,EAAQ,oBAAsB,oBAC9BA,EAAQ,oBAAsB,qDAC9BA,EAAQ,eAAiB,oBACzBA,EAAQ,2BAA6B,uCACrCA,EAAQ,wBAA0B,CAAC,IAAK,GAAG,EAC3CA,EAAQ,UAAY,gBCVpB,IAAAC,EAAAC,EAAAC,GAAA,cACA,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5DA,EAAQ,YAAc,OACtB,IAAIC,EAAc,IAClB,SAASC,EAA6BC,EAAK,CACvC,OAAOF,EAAY,wBAAwB,QAAQE,EAAI,CAAC,CAAC,EAAI,EACjE,CACA,SAASC,EAAqBC,EAAK,CAC/B,IAAIC,EAAkBD,EAAI,QAAQJ,EAAY,oBAAqB,EAAE,EACrE,OAAOK,EAAgB,QAAQL,EAAY,kBAAmB,SAAUM,EAAOC,EAAK,CAChF,OAAO,OAAO,aAAaA,CAAG,CAClC,CAAC,CACL,CACA,SAASC,EAAWN,EAAK,CACrB,OAAO,IAAI,SAASA,CAAG,CAC3B,CACA,SAASO,EAAUC,EAAK,CACpB,GAAI,CACA,OAAO,mBAAmBA,CAAG,CACjC,MACU,CAIN,OAAOA,CACX,CACJ,CACA,SAASC,EAAYT,EAAK,CACtB,GAAI,CAACA,EACD,OAAOF,EAAY,UAEvB,IAAIY,EACAC,EAAaJ,EAAUP,EAAI,KAAK,CAAC,EACrC,GACIW,EAAaV,EAAqBU,CAAU,EACvC,QAAQb,EAAY,oBAAqB,EAAE,EAC3C,QAAQA,EAAY,oBAAqB,EAAE,EAC3C,QAAQA,EAAY,2BAA4B,EAAE,EAClD,KAAK,EACVa,EAAaJ,EAAUI,CAAU,EACjCD,EACIC,EAAW,MAAMb,EAAY,mBAAmB,GAC5Ca,EAAW,MAAMb,EAAY,iBAAiB,GAC9Ca,EAAW,MAAMb,EAAY,mBAAmB,GAChDa,EAAW,MAAMb,EAAY,0BAA0B,QAC1DY,GAAiBA,EAAc,OAAS,GACjD,IAAIE,EAAeD,EACnB,GAAI,CAACC,EACD,OAAOd,EAAY,UAEvB,GAAIC,EAA6Ba,CAAY,EACzC,OAAOA,EAGX,IAAIC,EAAaD,EAAa,UAAU,EACpCE,EAAwBD,EAAW,MAAMf,EAAY,cAAc,EACvE,GAAI,CAACgB,EACD,OAAOF,EAEX,IAAIG,EAAYD,EAAsB,CAAC,EAAE,YAAY,EAAE,KAAK,EAC5D,GAAIhB,EAAY,qBAAqB,KAAKiB,CAAS,EAC/C,OAAOjB,EAAY,UAEvB,IAAIkB,EAAgBH,EAAW,QAAQ,MAAO,GAAG,EAEjD,GAAIE,IAAc,WAAaA,EAAU,SAAS,KAAK,EACnD,OAAOC,EAGX,GAAID,IAAc,SAAWA,IAAc,SAAU,CACjD,GAAI,CAACT,EAAWU,CAAa,EACzB,OAAOlB,EAAY,UAEvB,IAAImB,EAAQ,IAAI,IAAID,CAAa,EACjC,OAAAC,EAAM,SAAWA,EAAM,SAAS,YAAY,EAC5CA,EAAM,SAAWA,EAAM,SAAS,YAAY,EACrCA,EAAM,SAAS,CAC1B,CACA,OAAOD,CACX,CACAnB,EAAQ,YAAcY",
+ "names": ["require_constants", "__commonJSMin", "exports", "require_dist", "__commonJSMin", "exports", "constants_1", "isRelativeUrlWithoutProtocol", "url", "decodeHtmlCharacters", "str", "removedNullByte", "match", "dec", "isValidUrl", "decodeURI", "uri", "sanitizeUrl", "charsToDecode", "decodedUrl", "sanitizedUrl", "trimmedUrl", "urlSchemeParseResults", "urlScheme", "backSanitized", "url_1"]
+}
diff --git a/docs/public/chunk-CQUFH26W.min.js b/docs/public/chunk-CQUFH26W.min.js
new file mode 100755
index 0000000..6feafe5
--- /dev/null
+++ b/docs/public/chunk-CQUFH26W.min.js
@@ -0,0 +1,2 @@
+import{a as o,b as d,c as a,d as n,e as m,f as e,g as i,m as u,p as l,q as s}from"./chunk-LBFZT66H.min.js";var v=class extends s{static{e(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},R={parser:{TokenBuilder:e(()=>new v,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function M(c=n){let r=a(d(c),i),t=a(o({shared:r}),u,R);return r.ServiceRegistry.register(t),{shared:r,Radar:t}}e(M,"createRadarServices");export{R as a,M as b};
+//# sourceMappingURL=chunk-CQUFH26W.min.js.map
diff --git a/docs/public/chunk-CQUFH26W.min.js.map b/docs/public/chunk-CQUFH26W.min.js.map
new file mode 100755
index 0000000..67753fd
--- /dev/null
+++ b/docs/public/chunk-CQUFH26W.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-WFRQ32O7.mjs"],
+ "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n MermaidGeneratedSharedModule,\n RadarGeneratedModule,\n __name\n} from \"./chunk-4KMFLZZN.mjs\";\n\n// src/language/radar/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/radar/tokenBuilder.ts\nvar RadarTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"RadarTokenBuilder\");\n }\n constructor() {\n super([\"radar-beta\"]);\n }\n};\n\n// src/language/radar/module.ts\nvar RadarModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new RadarTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createRadarServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Radar = inject(\n createDefaultCoreModule({ shared }),\n RadarGeneratedModule,\n RadarModule\n );\n shared.ServiceRegistry.register(Radar);\n return { shared, Radar };\n}\n__name(createRadarServices, \"createRadarServices\");\n\nexport {\n RadarModule,\n createRadarServices\n};\n"],
+ "mappings": "2GAiBA,IAAIA,EAAoB,cAAcC,CAA4B,CAChE,MAAO,CACLC,EAAO,KAAM,mBAAmB,CAClC,CACA,aAAc,CACZ,MAAM,CAAC,YAAY,CAAC,CACtB,CACF,EAGIC,EAAc,CAChB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAqB,cAAc,EAClF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAoBC,EAAUC,EAAiB,CACtD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAQH,EACZI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAK,EAC9B,CAAE,OAAAJ,EAAQ,MAAAI,CAAM,CACzB,CACAV,EAAOG,EAAqB,qBAAqB",
+ "names": ["RadarTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "RadarModule", "CommonValueConverter", "createRadarServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Radar", "createDefaultCoreModule", "RadarGeneratedModule"]
+}
diff --git a/docs/public/chunk-E5F23VE2.min.js b/docs/public/chunk-E5F23VE2.min.js
new file mode 100755
index 0000000..064c5d3
--- /dev/null
+++ b/docs/public/chunk-E5F23VE2.min.js
@@ -0,0 +1,2 @@
+var Pr=typeof global=="object"&&global&&global.Object===Object&&global,U=Pr;var Sr=typeof self=="object"&&self&&self.Object===Object&&self,Ir=U||Sr||Function("return this")(),c=Ir;var Mr=c.Symbol,_=Mr;var nt=Object.prototype,Er=nt.hasOwnProperty,Fr=nt.toString,E=_?_.toStringTag:void 0;function Lr(t){var r=Er.call(t,E),e=t[E];try{t[E]=void 0;var o=!0}catch{}var a=Fr.call(t);return o&&(r?t[E]=e:delete t[E]),a}var it=Lr;var Dr=Object.prototype,Gr=Dr.toString;function Nr(t){return Gr.call(t)}var ft=Nr;var zr="[object Null]",Ur="[object Undefined]",pt=_?_.toStringTag:void 0;function Rr(t){return t==null?t===void 0?Ur:zr:pt&&pt in Object(t)?it(t):ft(t)}var g=Rr;function Hr(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var s=Hr;var Br="[object AsyncFunction]",Vr="[object Function]",Kr="[object GeneratorFunction]",qr="[object Proxy]";function $r(t){if(!s(t))return!1;var r=g(t);return r==Vr||r==Kr||r==Br||r==qr}var O=$r;var Xr=c["__core-js_shared__"],R=Xr;var ut=(function(){var t=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function Jr(t){return!!ut&&ut in t}var st=Jr;var Wr=Function.prototype,Yr=Wr.toString;function Zr(t){if(t!=null){try{return Yr.call(t)}catch{}try{return t+""}catch{}}return""}var mt=Zr;var Qr=/[\\^$.*+?()[\]{}|]/g,kr=/^\[object .+?Constructor\]$/,te=Function.prototype,re=Object.prototype,ee=te.toString,oe=re.hasOwnProperty,ae=RegExp("^"+ee.call(oe).replace(Qr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ne(t){if(!s(t)||st(t))return!1;var r=O(t)?ae:kr;return r.test(mt(t))}var lt=ne;function ie(t,r){return t?.[r]}var ct=ie;function fe(t,r){var e=ct(t,r);return lt(e)?e:void 0}var T=fe;var pe=T(Object,"create"),h=pe;function ue(){this.__data__=h?h(null):{},this.size=0}var dt=ue;function se(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}var ht=se;var me="__lodash_hash_undefined__",le=Object.prototype,ce=le.hasOwnProperty;function de(t){var r=this.__data__;if(h){var e=r[t];return e===me?void 0:e}return ce.call(r,t)?r[t]:void 0}var gt=de;var he=Object.prototype,ge=he.hasOwnProperty;function ye(t){var r=this.__data__;return h?r[t]!==void 0:ge.call(r,t)}var yt=ye;var be="__lodash_hash_undefined__";function xe(t,r){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=h&&r===void 0?be:r,this}var bt=xe;function j(t){var r=-1,e=t==null?0:t.length;for(this.clear();++r-1}var Ot=we;function Pe(t,r){var e=this.__data__,o=b(e,t);return o<0?(++this.size,e.push([t,r])):e[o][1]=r,this}var Tt=Pe;function A(t){var r=-1,e=t==null?0:t.length;for(this.clear();++r-1&&t%1==0&&t<=Xe}var V=Je;function We(t){return t!=null&&V(t.length)&&!O(t)}var w=We;function Ye(){return!1}var Mt=Ye;var Lt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Et=Lt&&typeof module=="object"&&module&&!module.nodeType&&module,Ze=Et&&Et.exports===Lt,Ft=Ze?c.Buffer:void 0,Qe=Ft?Ft.isBuffer:void 0,ke=Qe||Mt,K=ke;var to="[object Arguments]",ro="[object Array]",eo="[object Boolean]",oo="[object Date]",ao="[object Error]",no="[object Function]",io="[object Map]",fo="[object Number]",po="[object Object]",uo="[object RegExp]",so="[object Set]",mo="[object String]",lo="[object WeakMap]",co="[object ArrayBuffer]",ho="[object DataView]",go="[object Float32Array]",yo="[object Float64Array]",bo="[object Int8Array]",xo="[object Int16Array]",vo="[object Int32Array]",_o="[object Uint8Array]",Oo="[object Uint8ClampedArray]",To="[object Uint16Array]",jo="[object Uint32Array]",p={};p[go]=p[yo]=p[bo]=p[xo]=p[vo]=p[_o]=p[Oo]=p[To]=p[jo]=!0;p[to]=p[ro]=p[co]=p[eo]=p[ho]=p[oo]=p[ao]=p[no]=p[io]=p[fo]=p[po]=p[uo]=p[so]=p[mo]=p[lo]=!1;function Ao(t){return d(t)&&V(t.length)&&!!p[g(t)]}var Dt=Ao;function Co(t){return function(r){return t(r)}}var Gt=Co;var Nt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,G=Nt&&typeof module=="object"&&module&&!module.nodeType&&module,wo=G&&G.exports===Nt,rt=wo&&U.process,Po=(function(){try{var t=G&&G.require&&G.require("util").types;return t||rt&&rt.binding&&rt.binding("util")}catch{}})(),et=Po;var zt=et&&et.isTypedArray,So=zt?Gt(zt):Dt,q=So;function Io(t){return function(){return t}}var Ut=Io;function Mo(){this.__data__=new x,this.size=0}var Rt=Mo;function Eo(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e}var Ht=Eo;function Fo(t){return this.__data__.get(t)}var Bt=Fo;function Lo(t){return this.__data__.has(t)}var Vt=Lo;var Do=200;function Go(t,r){var e=this.__data__;if(e instanceof x){var o=e.__data__;if(!H||o.length-1&&t%1==0&&t0){if(++r>=Pa)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}var Tr=Ma;var Ea=Tr(Or),jr=Ea;function Fa(t,r){return jr(_r(t,r,W),t+"")}var Ar=Fa;function La(t,r,e){if(!s(e))return!1;var o=typeof r;return(o=="number"?w(e)&&X(r,e.length):o=="string"&&r in e)?y(e[r],t):!1}var Cr=La;function Da(t){return Ar(function(r,e){var o=-1,a=e.length,i=a>1?e[a-1]:void 0,f=a>2?e[2]:void 0;for(i=t.length>3&&typeof i=="function"?(a--,i):void 0,f&&Cr(e[0],e[1],f)&&(i=a<3?void 0:i,a=1),r=Object(r);++o true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n", "import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n", "import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n", "/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n", "import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n", "/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n", "import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n", "import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n", "import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n", "/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n", "import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n", "import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n", "/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n", "/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n", "import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n", "import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n", "import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n", "import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n", "import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n", "/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n", "import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n", "import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n", "import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n", "import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n", "import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n", "/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n", "import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n", "/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n", "import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n", "import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n", "/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n", "import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n", "/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n", "import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n", "/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n", "/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n", "/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n", "import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n", "import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n", "import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n", "import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n", "/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n", "import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n", "import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n", "import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n", "import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n", "/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n", "import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n", "/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n", "import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n", "import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n", "import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n", "import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n", "/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n", "import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n", "import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n", "/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n", "/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n", "import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n", "/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n", "import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n", "import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n", "import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n", "import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n", "import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n", "/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n", "/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n", "import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n", "import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n", "/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n", "import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n", "import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n", "import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n", "import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n", "import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n"],
+ "mappings": "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",
+ "names": ["freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "baseGetTag_default", "isObject", "value", "type", "isObject_default", "asyncTag", "funcTag", "genTag", "proxyTag", "isFunction", "value", "isObject_default", "tag", "baseGetTag_default", "isFunction_default", "coreJsData", "root_default", "coreJsData_default", "maskSrcKey", "uid", "coreJsData_default", "isMasked", "func", "isMasked_default", "funcProto", "funcToString", "toSource", "func", "toSource_default", "reRegExpChar", "reIsHostCtor", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "reIsNative", "baseIsNative", "value", "isObject_default", "isMasked_default", "pattern", "isFunction_default", "toSource_default", "baseIsNative_default", "getValue", "object", "key", "getValue_default", "getNative", "object", "key", "value", "getValue_default", "baseIsNative_default", "getNative_default", "nativeCreate", "getNative_default", "nativeCreate_default", "hashClear", "nativeCreate_default", "hashClear_default", "hashDelete", "key", "result", "hashDelete_default", "HASH_UNDEFINED", "objectProto", "hasOwnProperty", "hashGet", "key", "data", "nativeCreate_default", "result", "hashGet_default", "objectProto", "hasOwnProperty", "hashHas", "key", "data", "nativeCreate_default", "hashHas_default", "HASH_UNDEFINED", "hashSet", "key", "value", "data", "nativeCreate_default", "hashSet_default", "Hash", "entries", "index", "length", "entry", "hashClear_default", "hashDelete_default", "hashGet_default", "hashHas_default", "hashSet_default", "Hash_default", "listCacheClear", "listCacheClear_default", "eq", "value", "other", "eq_default", "assocIndexOf", "array", "key", "length", "eq_default", "assocIndexOf_default", "arrayProto", "splice", "listCacheDelete", "key", "data", "index", "assocIndexOf_default", "lastIndex", "listCacheDelete_default", "listCacheGet", "key", "data", "index", "assocIndexOf_default", "listCacheGet_default", "listCacheHas", "key", "assocIndexOf_default", "listCacheHas_default", "listCacheSet", "key", "value", "data", "index", "assocIndexOf_default", "listCacheSet_default", "ListCache", "entries", "index", "length", "entry", "listCacheClear_default", "listCacheDelete_default", "listCacheGet_default", "listCacheHas_default", "listCacheSet_default", "ListCache_default", "Map", "getNative_default", "root_default", "Map_default", "mapCacheClear", "Hash_default", "Map_default", "ListCache_default", "mapCacheClear_default", "isKeyable", "value", "type", "isKeyable_default", "getMapData", "map", "key", "data", "isKeyable_default", "getMapData_default", "mapCacheDelete", "key", "result", "getMapData_default", "mapCacheDelete_default", "mapCacheGet", "key", "getMapData_default", "mapCacheGet_default", "mapCacheHas", "key", "getMapData_default", "mapCacheHas_default", "mapCacheSet", "key", "value", "data", "getMapData_default", "size", "mapCacheSet_default", "MapCache", "entries", "index", "length", "entry", "mapCacheClear_default", "mapCacheDelete_default", "mapCacheGet_default", "mapCacheHas_default", "mapCacheSet_default", "MapCache_default", "FUNC_ERROR_TEXT", "memoize", "func", "resolver", "memoized", "args", "key", "cache", "result", "MapCache_default", "memoize_default", "objectProto", "isPrototype", "value", "Ctor", "proto", "isPrototype_default", "isObjectLike", "value", "isObjectLike_default", "argsTag", "baseIsArguments", "value", "isObjectLike_default", "baseGetTag_default", "baseIsArguments_default", "objectProto", "hasOwnProperty", "propertyIsEnumerable", "isArguments", "baseIsArguments_default", "value", "isObjectLike_default", "isArguments_default", "isArray", "isArray_default", "MAX_SAFE_INTEGER", "isLength", "value", "isLength_default", "isArrayLike", "value", "isLength_default", "isFunction_default", "isArrayLike_default", "stubFalse", "stubFalse_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "nativeIsBuffer", "isBuffer", "stubFalse_default", "isBuffer_default", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "mapTag", "numberTag", "objectTag", "regexpTag", "setTag", "stringTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "typedArrayTags", "baseIsTypedArray", "value", "isObjectLike_default", "isLength_default", "baseGetTag_default", "baseIsTypedArray_default", "baseUnary", "func", "value", "baseUnary_default", "freeExports", "freeModule", "moduleExports", "freeProcess", "freeGlobal_default", "nodeUtil", "types", "nodeUtil_default", "nodeIsTypedArray", "nodeUtil_default", "isTypedArray", "baseUnary_default", "baseIsTypedArray_default", "isTypedArray_default", "constant", "value", "constant_default", "stackClear", "ListCache_default", "stackClear_default", "stackDelete", "key", "data", "result", "stackDelete_default", "stackGet", "key", "stackGet_default", "stackHas", "key", "stackHas_default", "LARGE_ARRAY_SIZE", "stackSet", "key", "value", "data", "ListCache_default", "pairs", "Map_default", "MapCache_default", "stackSet_default", "Stack", "entries", "data", "ListCache_default", "stackClear_default", "stackDelete_default", "stackGet_default", "stackHas_default", "stackSet_default", "Stack_default", "defineProperty", "func", "getNative_default", "defineProperty_default", "baseAssignValue", "object", "key", "value", "defineProperty_default", "baseAssignValue_default", "assignMergeValue", "object", "key", "value", "eq_default", "baseAssignValue_default", "assignMergeValue_default", "createBaseFor", "fromRight", "object", "iteratee", "keysFunc", "index", "iterable", "props", "length", "key", "createBaseFor_default", "baseFor", "createBaseFor_default", "baseFor_default", "freeExports", "freeModule", "moduleExports", "Buffer", "root_default", "allocUnsafe", "cloneBuffer", "buffer", "isDeep", "length", "result", "cloneBuffer_default", "Uint8Array", "root_default", "Uint8Array_default", "cloneArrayBuffer", "arrayBuffer", "result", "Uint8Array_default", "cloneArrayBuffer_default", "cloneTypedArray", "typedArray", "isDeep", "buffer", "cloneArrayBuffer_default", "cloneTypedArray_default", "copyArray", "source", "array", "index", "length", "copyArray_default", "objectCreate", "baseCreate", "object", "proto", "isObject_default", "result", "baseCreate_default", "overArg", "func", "transform", "arg", "overArg_default", "getPrototype", "overArg_default", "getPrototype_default", "initCloneObject", "object", "isPrototype_default", "baseCreate_default", "getPrototype_default", "initCloneObject_default", "isArrayLikeObject", "value", "isObjectLike_default", "isArrayLike_default", "isArrayLikeObject_default", "objectTag", "funcProto", "objectProto", "funcToString", "hasOwnProperty", "objectCtorString", "isPlainObject", "value", "isObjectLike_default", "baseGetTag_default", "proto", "getPrototype_default", "Ctor", "isPlainObject_default", "safeGet", "object", "key", "safeGet_default", "objectProto", "hasOwnProperty", "assignValue", "object", "key", "value", "objValue", "eq_default", "baseAssignValue_default", "assignValue_default", "copyObject", "source", "props", "object", "customizer", "isNew", "index", "length", "key", "newValue", "baseAssignValue_default", "assignValue_default", "copyObject_default", "baseTimes", "n", "iteratee", "index", "result", "baseTimes_default", "MAX_SAFE_INTEGER", "reIsUint", "isIndex", "value", "length", "type", "isIndex_default", "objectProto", "hasOwnProperty", "arrayLikeKeys", "value", "inherited", "isArr", "isArray_default", "isArg", "isArguments_default", "isBuff", "isBuffer_default", "isType", "isTypedArray_default", "skipIndexes", "result", "baseTimes_default", "length", "key", "isIndex_default", "arrayLikeKeys_default", "nativeKeysIn", "object", "result", "key", "nativeKeysIn_default", "objectProto", "hasOwnProperty", "baseKeysIn", "object", "isObject_default", "nativeKeysIn_default", "isProto", "isPrototype_default", "result", "key", "baseKeysIn_default", "keysIn", "object", "isArrayLike_default", "arrayLikeKeys_default", "baseKeysIn_default", "keysIn_default", "toPlainObject", "value", "copyObject_default", "keysIn_default", "toPlainObject_default", "baseMergeDeep", "object", "source", "key", "srcIndex", "mergeFunc", "customizer", "stack", "objValue", "safeGet_default", "srcValue", "stacked", "assignMergeValue_default", "newValue", "isCommon", "isArr", "isArray_default", "isBuff", "isBuffer_default", "isTyped", "isTypedArray_default", "isArrayLikeObject_default", "copyArray_default", "cloneBuffer_default", "cloneTypedArray_default", "isPlainObject_default", "isArguments_default", "toPlainObject_default", "isObject_default", "isFunction_default", "initCloneObject_default", "baseMergeDeep_default", "baseMerge", "object", "source", "srcIndex", "customizer", "stack", "baseFor_default", "srcValue", "key", "Stack_default", "isObject_default", "baseMergeDeep_default", "newValue", "safeGet_default", "assignMergeValue_default", "keysIn_default", "baseMerge_default", "identity", "value", "identity_default", "apply", "func", "thisArg", "args", "apply_default", "nativeMax", "overRest", "func", "start", "transform", "args", "index", "length", "array", "otherArgs", "apply_default", "overRest_default", "baseSetToString", "defineProperty_default", "func", "string", "constant_default", "identity_default", "baseSetToString_default", "HOT_COUNT", "HOT_SPAN", "nativeNow", "shortOut", "func", "count", "lastCalled", "stamp", "remaining", "shortOut_default", "setToString", "shortOut_default", "baseSetToString_default", "setToString_default", "baseRest", "func", "start", "setToString_default", "overRest_default", "identity_default", "baseRest_default", "isIterateeCall", "value", "index", "object", "isObject_default", "type", "isArrayLike_default", "isIndex_default", "eq_default", "isIterateeCall_default", "createAssigner", "assigner", "baseRest_default", "object", "sources", "index", "length", "customizer", "guard", "isIterateeCall_default", "source", "createAssigner_default", "merge", "createAssigner_default", "object", "source", "srcIndex", "baseMerge_default", "merge_default"]
+}
diff --git a/docs/public/chunk-EU44H33B.min.js b/docs/public/chunk-EU44H33B.min.js
new file mode 100755
index 0000000..fd352cd
--- /dev/null
+++ b/docs/public/chunk-EU44H33B.min.js
@@ -0,0 +1,2 @@
+import{a as i,b as o,c as t,d as n,e as c,f as e,g as u,l as d,p as l,q as s}from"./chunk-LBFZT66H.min.js";var p=class extends s{static{e(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},h={parser:{TokenBuilder:e(()=>new p,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function m(G=n){let r=t(o(G),u),a=t(i({shared:r}),d,h);return r.ServiceRegistry.register(a),{shared:r,GitGraph:a}}e(m,"createGitGraphServices");export{h as a,m as b};
+//# sourceMappingURL=chunk-EU44H33B.min.js.map
diff --git a/docs/public/chunk-EU44H33B.min.js.map b/docs/public/chunk-EU44H33B.min.js.map
new file mode 100755
index 0000000..0d9e098
--- /dev/null
+++ b/docs/public/chunk-EU44H33B.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-BN7GFLIU.mjs"],
+ "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n GitGraphGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-4KMFLZZN.mjs\";\n\n// src/language/gitGraph/module.ts\nimport {\n inject,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n EmptyFileSystem\n} from \"langium\";\n\n// src/language/gitGraph/tokenBuilder.ts\nvar GitGraphTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"GitGraphTokenBuilder\");\n }\n constructor() {\n super([\"gitGraph\"]);\n }\n};\n\n// src/language/gitGraph/module.ts\nvar GitGraphModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new GitGraphTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createGitGraphServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const GitGraph = inject(\n createDefaultCoreModule({ shared }),\n GitGraphGeneratedModule,\n GitGraphModule\n );\n shared.ServiceRegistry.register(GitGraph);\n return { shared, GitGraph };\n}\n__name(createGitGraphServices, \"createGitGraphServices\");\n\nexport {\n GitGraphModule,\n createGitGraphServices\n};\n"],
+ "mappings": "2GAiBA,IAAIA,EAAuB,cAAcC,CAA4B,CACnE,MAAO,CACLC,EAAO,KAAM,sBAAsB,CACrC,CACA,aAAc,CACZ,MAAM,CAAC,UAAU,CAAC,CACpB,CACF,EAGIC,EAAiB,CACnB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAwB,cAAc,EACrF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAuBC,EAAUC,EAAiB,CACzD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAWH,EACfI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAQ,EACjC,CAAE,OAAAJ,EAAQ,SAAAI,CAAS,CAC5B,CACAV,EAAOG,EAAwB,wBAAwB",
+ "names": ["GitGraphTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "GitGraphModule", "CommonValueConverter", "createGitGraphServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "GitGraph", "createDefaultCoreModule", "GitGraphGeneratedModule"]
+}
diff --git a/docs/public/chunk-FNCPGT3X.min.js b/docs/public/chunk-FNCPGT3X.min.js
new file mode 100755
index 0000000..7731632
--- /dev/null
+++ b/docs/public/chunk-FNCPGT3X.min.js
@@ -0,0 +1,221 @@
+import{a as Vt}from"./chunk-WNTLZBBZ.min.js";import{a as Mt}from"./chunk-ORLGEIQN.min.js";import{b as Bt}from"./chunk-VTDY5BYI.min.js";import{e as Yt,m as Gt}from"./chunk-QZZKR5JD.min.js";import{K as G,P as Ot,Q as Rt,R as Nt,S as wt,T as $t,U as Pt,V as Ft,W as w}from"./chunk-3EE2TK35.min.js";import{b as d,d as b}from"./chunk-6TVUEPFY.min.js";var vt=(function(){var t=d(function(Y,a,c,r){for(c=c||{},r=Y.length;r--;c[Y[r]]=a);return c},"o"),e=[1,2],o=[1,3],s=[1,4],h=[2,4],u=[1,9],S=[1,11],g=[1,16],n=[1,17],T=[1,18],k=[1,19],A=[1,33],x=[1,20],D=[1,21],f=[1,22],m=[1,23],R=[1,24],L=[1,26],$=[1,27],I=[1,28],P=[1,29],et=[1,30],st=[1,31],it=[1,32],rt=[1,35],at=[1,36],nt=[1,37],ot=[1,38],j=[1,34],p=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],lt=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],xt=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],gt={trace:d(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:d(function(a,c,r,y,E,i,X){var l=i.length-1;switch(E){case 3:return y.setRootDoc(i[l]),i[l];break;case 4:this.$=[];break;case 5:i[l]!="nl"&&(i[l-1].push(i[l]),this.$=i[l-1]);break;case 6:case 7:this.$=i[l];break;case 8:this.$="nl";break;case 12:this.$=i[l];break;case 13:let ht=i[l-1];ht.description=y.trimColon(i[l]),this.$=ht;break;case 14:this.$={stmt:"relation",state1:i[l-2],state2:i[l]};break;case 15:let ut=y.trimColon(i[l]);this.$={stmt:"relation",state1:i[l-3],state2:i[l-1],description:ut};break;case 19:this.$={stmt:"state",id:i[l-3],type:"default",description:"",doc:i[l-1]};break;case 20:var V=i[l],H=i[l-2].trim();if(i[l].match(":")){var J=i[l].split(":");V=J[0],H=[H,J[1]]}this.$={stmt:"state",id:V,type:"default",description:H};break;case 21:this.$={stmt:"state",id:i[l-3],type:"default",description:i[l-5],doc:i[l-1]};break;case 22:this.$={stmt:"state",id:i[l],type:"fork"};break;case 23:this.$={stmt:"state",id:i[l],type:"join"};break;case 24:this.$={stmt:"state",id:i[l],type:"choice"};break;case 25:this.$={stmt:"state",id:y.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:i[l-1].trim(),note:{position:i[l-2].trim(),text:i[l].trim()}};break;case 29:this.$=i[l].trim(),y.setAccTitle(this.$);break;case 30:case 31:this.$=i[l].trim(),y.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:i[l-3],url:i[l-2],tooltip:i[l-1]};break;case 33:this.$={stmt:"click",id:i[l-3],url:i[l-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:i[l-1].trim(),classes:i[l].trim()};break;case 36:this.$={stmt:"style",id:i[l-1].trim(),styleClass:i[l].trim()};break;case 37:this.$={stmt:"applyClass",id:i[l-1].trim(),styleClass:i[l].trim()};break;case 38:y.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:y.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:y.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:y.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:i[l].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:i[l-2].trim(),classes:[i[l].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:i[l-2].trim(),classes:[i[l].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:o,6:s},{1:[3]},{3:5,4:e,5:o,6:s},{3:6,4:e,5:o,6:s},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],h,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:u,5:S,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:n,19:T,22:k,24:A,25:x,26:D,27:f,28:m,29:R,32:25,33:L,35:$,37:I,38:P,41:et,45:st,48:it,51:rt,52:at,53:nt,54:ot,57:j},t(p,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:g,17:n,19:T,22:k,24:A,25:x,26:D,27:f,28:m,29:R,32:25,33:L,35:$,37:I,38:P,41:et,45:st,48:it,51:rt,52:at,53:nt,54:ot,57:j},t(p,[2,7]),t(p,[2,8]),t(p,[2,9]),t(p,[2,10]),t(p,[2,11]),t(p,[2,12],{14:[1,40],15:[1,41]}),t(p,[2,16]),{18:[1,42]},t(p,[2,18],{20:[1,43]}),{23:[1,44]},t(p,[2,22]),t(p,[2,23]),t(p,[2,24]),t(p,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(p,[2,28]),{34:[1,49]},{36:[1,50]},t(p,[2,31]),{13:51,24:A,57:j},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(lt,[2,44],{58:[1,56]}),t(lt,[2,45],{58:[1,57]}),t(p,[2,38]),t(p,[2,39]),t(p,[2,40]),t(p,[2,41]),t(p,[2,6]),t(p,[2,13]),{13:58,24:A,57:j},t(p,[2,17]),t(xt,h,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(p,[2,29]),t(p,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(p,[2,14],{14:[1,71]}),{4:u,5:S,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:n,19:T,21:[1,72],22:k,24:A,25:x,26:D,27:f,28:m,29:R,32:25,33:L,35:$,37:I,38:P,41:et,45:st,48:it,51:rt,52:at,53:nt,54:ot,57:j},t(p,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(p,[2,34]),t(p,[2,35]),t(p,[2,36]),t(p,[2,37]),t(lt,[2,46]),t(lt,[2,47]),t(p,[2,15]),t(p,[2,19]),t(xt,h,{7:78}),t(p,[2,26]),t(p,[2,27]),{5:[1,79]},{5:[1,80]},{4:u,5:S,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:n,19:T,21:[1,81],22:k,24:A,25:x,26:D,27:f,28:m,29:R,32:25,33:L,35:$,37:I,38:P,41:et,45:st,48:it,51:rt,52:at,53:nt,54:ot,57:j},t(p,[2,32]),t(p,[2,33]),t(p,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:d(function(a,c){if(c.recoverable)this.trace(a);else{var r=new Error(a);throw r.hash=c,r}},"parseError"),parse:d(function(a){var c=this,r=[0],y=[],E=[null],i=[],X=this.table,l="",V=0,H=0,J=0,ht=2,ut=1,he=i.slice.call(arguments,1),_=Object.create(this.lexer),M={yy:{}};for(var Tt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Tt)&&(M.yy[Tt]=this.yy[Tt]);_.setInput(a,M.yy),M.yy.lexer=_,M.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Et=_.yylloc;i.push(Et);var ue=_.options&&_.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function de(O){r.length=r.length-2*O,E.length=E.length-O,i.length=i.length-O}d(de,"popStack");function Lt(){var O;return O=y.pop()||_.lex()||ut,typeof O!="number"&&(O instanceof Array&&(y=O,O=y.pop()),O=c.symbols_[O]||O),O}d(Lt,"lex");for(var v,bt,U,N,Ye,_t,W={},dt,F,It,ft;;){if(U=r[r.length-1],this.defaultActions[U]?N=this.defaultActions[U]:((v===null||typeof v>"u")&&(v=Lt()),N=X[U]&&X[U][v]),typeof N>"u"||!N.length||!N[0]){var kt="";ft=[];for(dt in X[U])this.terminals_[dt]&&dt>ht&&ft.push("'"+this.terminals_[dt]+"'");_.showPosition?kt="Parse error on line "+(V+1)+`:
+`+_.showPosition()+`
+Expecting `+ft.join(", ")+", got '"+(this.terminals_[v]||v)+"'":kt="Parse error on line "+(V+1)+": Unexpected "+(v==ut?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(kt,{text:_.match,token:this.terminals_[v]||v,line:_.yylineno,loc:Et,expected:ft})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+v);switch(N[0]){case 1:r.push(v),E.push(_.yytext),i.push(_.yylloc),r.push(N[1]),v=null,bt?(v=bt,bt=null):(H=_.yyleng,l=_.yytext,V=_.yylineno,Et=_.yylloc,J>0&&J--);break;case 2:if(F=this.productions_[N[1]][1],W.$=E[E.length-F],W._$={first_line:i[i.length-(F||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(F||1)].first_column,last_column:i[i.length-1].last_column},ue&&(W._$.range=[i[i.length-(F||1)].range[0],i[i.length-1].range[1]]),_t=this.performAction.apply(W,[l,H,V,M.yy,N[1],E,i].concat(he)),typeof _t<"u")return _t;F&&(r=r.slice(0,-1*F*2),E=E.slice(0,-1*F),i=i.slice(0,-1*F)),r.push(this.productions_[N[1]][0]),E.push(W.$),i.push(W._$),It=X[r[r.length-2]][r[r.length-1]],r.push(It);break;case 3:return!0}}return!0},"parse")},ce=(function(){var Y={EOF:1,parseError:d(function(c,r){if(this.yy.parser)this.yy.parser.parseError(c,r);else throw new Error(c)},"parseError"),setInput:d(function(a,c){return this.yy=c||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:d(function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var c=a.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},"input"),unput:d(function(a){var c=a.length,r=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===y.length?this.yylloc.first_column:0)+y[y.length-r.length].length-r[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
+`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(a){this.unput(this.match.slice(a))},"less"),pastInput:d(function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var a=this.pastInput(),c=new Array(a.length+1).join("-");return a+this.upcomingInput()+`
+`+c+"^"},"showPosition"),test_match:d(function(a,c){var r,y,E;if(this.options.backtrack_lexer&&(E={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(E.yylloc.range=this.yylloc.range.slice(0))),y=a[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],r=this.performAction.call(this,this.yy,this,c,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var i in E)this[i]=E[i];return!1}return!1},"test_match"),next:d(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,c,r,y;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),i=0;ic[0].length)){if(c=r,y=i,this.options.backtrack_lexer){if(a=this.test_match(r,E[i]),a!==!1)return a;if(this._backtrack){c=!1;continue}else return!1}else if(!this.options.flex)break}return c?(a=this.test_match(c,E[y]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
+`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:d(function(){var c=this.next();return c||this.lex()},"lex"),begin:d(function(c){this.conditionStack.push(c)},"begin"),popState:d(function(){var c=this.conditionStack.length-1;return c>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:d(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:d(function(c){return c=this.conditionStack.length-1-Math.abs(c||0),c>=0?this.conditionStack[c]:"INITIAL"},"topState"),pushState:d(function(c){this.begin(c)},"pushState"),stateStackSize:d(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:d(function(c,r,y,E){var i=E;switch(y){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:break;case 9:break;case 10:return 5;case 11:break;case 12:break;case 13:break;case 14:break;case 15:return this.pushState("SCALE"),17;break;case 16:return 18;case 17:this.popState();break;case 18:return this.begin("acc_title"),33;break;case 19:return this.popState(),"acc_title_value";break;case 20:return this.begin("acc_descr"),35;break;case 21:return this.popState(),"acc_descr_value";break;case 22:this.begin("acc_descr_multiline");break;case 23:this.popState();break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;break;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 27:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 28:return this.popState(),43;break;case 29:return this.pushState("CLASS"),48;break;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 31:return this.popState(),50;break;case 32:return this.pushState("STYLE"),45;break;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 34:return this.popState(),47;break;case 35:return this.pushState("SCALE"),17;break;case 36:return 18;case 37:this.popState();break;case 38:this.pushState("STATE");break;case 39:return this.popState(),r.yytext=r.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),r.yytext=r.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),r.yytext=r.yytext.slice(0,-10).trim(),27;break;case 42:return this.popState(),r.yytext=r.yytext.slice(0,-8).trim(),25;break;case 43:return this.popState(),r.yytext=r.yytext.slice(0,-8).trim(),26;break;case 44:return this.popState(),r.yytext=r.yytext.slice(0,-10).trim(),27;break;case 45:return 51;case 46:return 52;case 47:return 53;case 48:return 54;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";break;case 51:return this.popState(),"ID";break;case 52:this.popState();break;case 53:return"STATE_DESCR";case 54:return 19;case 55:this.popState();break;case 56:return this.popState(),this.pushState("struct"),20;break;case 57:break;case 58:return this.popState(),21;break;case 59:break;case 60:return this.begin("NOTE"),29;break;case 61:return this.popState(),this.pushState("NOTE_ID"),59;break;case 62:return this.popState(),this.pushState("NOTE_ID"),60;break;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 65:break;case 66:return"NOTE_TEXT";case 67:return this.popState(),"ID";break;case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 69:return this.popState(),r.yytext=r.yytext.substr(2).trim(),31;break;case 70:return this.popState(),r.yytext=r.yytext.slice(0,-8).trim(),31;break;case 71:return 6;case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return r.yytext=r.yytext.trim(),14;break;case 77:return 15;case 78:return 28;case 79:return 58;case 80:return 5;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}};return Y})();gt.lexer=ce;function ct(){this.yy={}}return d(ct,"Parser"),ct.prototype=gt,gt.Parser=ct,new ct})();vt.parser=vt;var He=vt,fe="TB",Jt="TB",Ut="dir",K="state",z="root",Ct="relation",pe="classDef",Se="style",ye="applyClass",Z="default",qt="divider",Qt="fill:none",Zt="fill: #333",te="c",ee="text",se="normal",mt="rect",Dt="rectWithTitle",ge="stateStart",Te="stateEnd",jt="divider",Ht="roundedWithTitle",Ee="note",be="noteGroup",tt="statediagram",_e="state",ke=`${tt}-${_e}`,ie="transition",me="note",De="note-edge",ve=`${ie} ${De}`,Ce=`${tt}-${me}`,Ae="cluster",xe=`${tt}-${Ae}`,Le="cluster-alt",Ie=`${tt}-${Le}`,re="parent",ae="note",Oe="state",At="----",Re=`${At}${ae}`,Wt=`${At}${re}`,ne=d((t,e=Jt)=>{if(!t.doc)return e;let o=e;for(let s of t.doc)s.stmt==="dir"&&(o=s.value);return o},"getDir"),Ne=d(function(t,e){return e.db.getClasses()},"getClasses"),we=d(async function(t,e,o,s){b.info("REF0:"),b.info("Drawing state diagram (v2)",e);let{securityLevel:h,state:u,layout:S}=w();s.db.extract(s.db.getRootDocV2());let g=s.db.getData(),n=Vt(e,h);g.type=s.type,g.layoutAlgorithm=S,g.nodeSpacing=u?.nodeSpacing||50,g.rankSpacing=u?.rankSpacing||50,g.markers=["barb"],g.diagramId=e,await Bt(g,n);let T=8;try{(typeof s.db.getLinks=="function"?s.db.getLinks():new Map).forEach((A,x)=>{let D=typeof x=="string"?x:typeof x?.id=="string"?x.id:"";if(!D){b.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(x));return}let f=n.node()?.querySelectorAll("g"),m;if(f?.forEach(I=>{I.textContent?.trim()===D&&(m=I)}),!m){b.warn("\u26A0\uFE0F Could not find node matching text:",D);return}let R=m.parentNode;if(!R){b.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",D);return}let L=document.createElementNS("http://www.w3.org/2000/svg","a"),$=A.url.replace(/^"+|"+$/g,"");if(L.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",$),L.setAttribute("target","_blank"),A.tooltip){let I=A.tooltip.replace(/^"+|"+$/g,"");L.setAttribute("title",I)}R.replaceChild(L,m),L.appendChild(m),b.info("\u{1F517} Wrapped node in tag for:",D,A.url)})}catch(k){b.error("\u274C Error injecting clickable links:",k)}Gt.insertTitle(n,"statediagramTitleText",u?.titleTopMargin??25,s.db.getDiagramTitle()),Mt(n,T,tt,u?.useMaxWidth??!0)},"draw"),We={getClasses:Ne,draw:we,getDir:ne},St=new Map,B=0;function yt(t="",e=0,o="",s=At){let h=o!==null&&o.length>0?`${s}${o}`:"";return`${Oe}-${t}${h}-${e}`}d(yt,"stateDomId");var $e=d((t,e,o,s,h,u,S,g)=>{b.trace("items",e),e.forEach(n=>{switch(n.stmt){case K:Q(t,n,o,s,h,u,S,g);break;case Z:Q(t,n,o,s,h,u,S,g);break;case Ct:{Q(t,n.state1,o,s,h,u,S,g),Q(t,n.state2,o,s,h,u,S,g);let T={id:"edge"+B,start:n.state1.id,end:n.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:Qt,labelStyle:"",label:G.sanitizeText(n.description??"",w()),arrowheadStyle:Zt,labelpos:te,labelType:ee,thickness:se,classes:ie,look:S};h.push(T),B++}break}})},"setupDoc"),zt=d((t,e=Jt)=>{let o=e;if(t.doc)for(let s of t.doc)s.stmt==="dir"&&(o=s.value);return o},"getDir");function q(t,e,o){if(!e.id||e.id===" "||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(h=>{let u=o.get(h);u&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...u.styles])}));let s=t.find(h=>h.id===e.id);s?Object.assign(s,e):t.push(e)}d(q,"insertOrUpdateNode");function oe(t){return t?.classes?.join(" ")??""}d(oe,"getClassesFromDbInfo");function le(t){return t?.styles??[]}d(le,"getStylesFromDbInfo");var Q=d((t,e,o,s,h,u,S,g)=>{let n=e.id,T=o.get(n),k=oe(T),A=le(T),x=w();if(b.info("dataFetcher parsedItem",e,T,A),n!=="root"){let D=mt;e.start===!0?D=ge:e.start===!1&&(D=Te),e.type!==Z&&(D=e.type),St.get(n)||St.set(n,{id:n,shape:D,description:G.sanitizeText(n,x),cssClasses:`${k} ${ke}`,cssStyles:A});let f=St.get(n);e.description&&(Array.isArray(f.description)?(f.shape=Dt,f.description.push(e.description)):f.description?.length&&f.description.length>0?(f.shape=Dt,f.description===n?f.description=[e.description]:f.description=[f.description,e.description]):(f.shape=mt,f.description=e.description),f.description=G.sanitizeTextOrArray(f.description,x)),f.description?.length===1&&f.shape===Dt&&(f.type==="group"?f.shape=Ht:f.shape=mt),!f.type&&e.doc&&(b.info("Setting cluster for XCX",n,zt(e)),f.type="group",f.isGroup=!0,f.dir=zt(e),f.shape=e.type===qt?jt:Ht,f.cssClasses=`${f.cssClasses} ${xe} ${u?Ie:""}`);let m={labelStyle:"",shape:f.shape,label:f.description,cssClasses:f.cssClasses,cssCompiledStyles:[],cssStyles:f.cssStyles,id:n,dir:f.dir,domId:yt(n,B),type:f.type,isGroup:f.type==="group",padding:8,rx:10,ry:10,look:S};if(m.shape===jt&&(m.label=""),t&&t.id!=="root"&&(b.trace("Setting node ",n," to be child of its parent ",t.id),m.parentId=t.id),m.centerLabel=!0,e.note){let R={labelStyle:"",shape:Ee,label:e.note.text,cssClasses:Ce,cssStyles:[],cssCompiledStyles:[],id:n+Re+"-"+B,domId:yt(n,B,ae),type:f.type,isGroup:f.type==="group",padding:x.flowchart?.padding,look:S,position:e.note.position},L=n+Wt,$={labelStyle:"",shape:be,label:e.note.text,cssClasses:f.cssClasses,cssStyles:[],id:n+Wt,domId:yt(n,B,re),type:"group",isGroup:!0,padding:16,look:S,position:e.note.position};B++,$.id=L,R.parentId=L,q(s,$,g),q(s,R,g),q(s,m,g);let I=n,P=R.id;e.note.position==="left of"&&(I=R.id,P=n),h.push({id:I+"-"+P,start:I,end:P,arrowhead:"none",arrowTypeEnd:"",style:Qt,labelStyle:"",classes:ve,arrowheadStyle:Zt,labelpos:te,labelType:ee,thickness:se,look:S})}else q(s,m,g)}e.doc&&(b.trace("Adding nodes children "),$e(e,e.doc,o,s,h,!u,S,g))},"dataFetcher"),Pe=d(()=>{St.clear(),B=0},"reset"),C={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},Kt=d(()=>new Map,"newClassesList"),Xt=d(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),pt=d(t=>JSON.parse(JSON.stringify(t)),"clone"),ze=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=Kt(),this.documents={root:Xt()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=Nt,this.setAccTitle=Rt,this.getAccDescription=$t,this.setAccDescription=wt,this.setDiagramTitle=Pt,this.getDiagramTitle=Ft,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{d(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(let s of Array.isArray(t)?t:t.doc)switch(s.stmt){case K:this.addState(s.id.trim(),s.type,s.doc,s.description,s.note);break;case Ct:this.addRelation(s.state1,s.state2,s.description);break;case pe:this.addStyleClass(s.id.trim(),s.classes);break;case Se:this.handleStyleDef(s);break;case ye:this.setCssClass(s.id.trim(),s.styleClass);break;case"click":this.addLink(s.id,s.url,s.tooltip);break}let e=this.getStates(),o=w();Pe(),Q(void 0,this.getRootDocV2(),e,this.nodes,this.edges,!0,o.look,this.classes);for(let s of this.nodes)if(Array.isArray(s.label)){if(s.description=s.label.slice(1),s.isGroup&&s.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${s.id}]`);s.label=s.label[0]}}handleStyleDef(t){let e=t.id.trim().split(","),o=t.styleClass.split(",");for(let s of e){let h=this.getState(s);if(!h){let u=s.trim();this.addState(u),h=this.getState(u)}h&&(h.styles=o.map(u=>u.replace(/;/g,"")?.trim()))}}setRootDoc(t){b.info("Setting root doc",t),this.rootDoc=t,this.version===1?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,e,o){if(e.stmt===Ct){this.docTranslator(t,e.state1,!0),this.docTranslator(t,e.state2,!1);return}if(e.stmt===K&&(e.id===C.START_NODE?(e.id=t.id+(o?"_start":"_end"),e.start=o):e.id=e.id.trim()),e.stmt!==z&&e.stmt!==K||!e.doc)return;let s=[],h=[];for(let u of e.doc)if(u.type===qt){let S=pt(u);S.doc=pt(h),s.push(S),h=[]}else h.push(u);if(s.length>0&&h.length>0){let u={stmt:K,id:Yt(),type:"divider",doc:pt(h)};s.push(pt(u)),e.doc=s}e.doc.forEach(u=>this.docTranslator(e,u,!0))}getRootDocV2(){return this.docTranslator({id:z,stmt:z},{id:z,stmt:z,doc:this.rootDoc},!0),{id:z,doc:this.rootDoc}}addState(t,e=Z,o=void 0,s=void 0,h=void 0,u=void 0,S=void 0,g=void 0){let n=t?.trim();if(!this.currentDocument.states.has(n))b.info("Adding state ",n,s),this.currentDocument.states.set(n,{stmt:K,id:n,descriptions:[],type:e,doc:o,note:h,classes:[],styles:[],textStyles:[]});else{let T=this.currentDocument.states.get(n);if(!T)throw new Error(`State not found: ${n}`);T.doc||(T.doc=o),T.type||(T.type=e)}if(s&&(b.info("Setting state description",n,s),(Array.isArray(s)?s:[s]).forEach(k=>this.addDescription(n,k.trim()))),h){let T=this.currentDocument.states.get(n);if(!T)throw new Error(`State not found: ${n}`);T.note=h,T.note.text=G.sanitizeText(T.note.text,w())}u&&(b.info("Setting state classes",n,u),(Array.isArray(u)?u:[u]).forEach(k=>this.setCssClass(n,k.trim()))),S&&(b.info("Setting state styles",n,S),(Array.isArray(S)?S:[S]).forEach(k=>this.setStyle(n,k.trim()))),g&&(b.info("Setting state styles",n,S),(Array.isArray(g)?g:[g]).forEach(k=>this.setTextStyle(n,k.trim())))}clear(t){this.nodes=[],this.edges=[],this.documents={root:Xt()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Kt(),t||(this.links=new Map,Ot())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){b.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,o){this.links.set(t,{url:e,tooltip:o}),b.warn("Adding link",t,e,o)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===C.START_NODE?(this.startEndCount++,`${C.START_TYPE}${this.startEndCount}`):t}startTypeIfNeeded(t="",e=Z){return t===C.START_NODE?C.START_TYPE:e}endIdIfNeeded(t=""){return t===C.END_NODE?(this.startEndCount++,`${C.END_TYPE}${this.startEndCount}`):t}endTypeIfNeeded(t="",e=Z){return t===C.END_NODE?C.END_TYPE:e}addRelationObjs(t,e,o=""){let s=this.startIdIfNeeded(t.id.trim()),h=this.startTypeIfNeeded(t.id.trim(),t.type),u=this.startIdIfNeeded(e.id.trim()),S=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(s,h,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(u,S,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:s,id2:u,relationTitle:G.sanitizeText(o,w())})}addRelation(t,e,o){if(typeof t=="object"&&typeof e=="object")this.addRelationObjs(t,e,o);else if(typeof t=="string"&&typeof e=="string"){let s=this.startIdIfNeeded(t.trim()),h=this.startTypeIfNeeded(t),u=this.endIdIfNeeded(e.trim()),S=this.endTypeIfNeeded(e);this.addState(s,h),this.addState(u,S),this.currentDocument.relations.push({id1:s,id2:u,relationTitle:o?G.sanitizeText(o,w()):void 0})}}addDescription(t,e){let o=this.currentDocument.states.get(t),s=e.startsWith(":")?e.replace(":","").trim():e;o?.descriptions?.push(G.sanitizeText(s,w()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});let o=this.classes.get(t);e&&o&&e.split(C.STYLECLASS_SEP).forEach(s=>{let h=s.replace(/([^;]*);/,"$1").trim();if(RegExp(C.COLOR_KEYWORD).exec(s)){let S=h.replace(C.FILL_KEYWORD,C.BG_FILL).replace(C.COLOR_KEYWORD,C.FILL_KEYWORD);o.textStyles.push(S)}o.styles.push(h)})}getClasses(){return this.classes}setCssClass(t,e){t.split(",").forEach(o=>{let s=this.getState(o);if(!s){let h=o.trim();this.addState(h),s=this.getState(h)}s?.classes?.push(e)})}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find(t=>t.stmt===Ut)}getDirection(){return this.getDirectionStatement()?.value??fe}setDirection(t){let e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:Ut,value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){let t=w();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:ne(this.getRootDocV2())}}getConfig(){return w().state}},Fe=d(t=>`
+defs #statediagram-barbEnd {
+ fill: ${t.transitionColor};
+ stroke: ${t.transitionColor};
+ }
+g.stateGroup text {
+ fill: ${t.nodeBorder};
+ stroke: none;
+ font-size: 10px;
+}
+g.stateGroup text {
+ fill: ${t.textColor};
+ stroke: none;
+ font-size: 10px;
+
+}
+g.stateGroup .state-title {
+ font-weight: bolder;
+ fill: ${t.stateLabelColor};
+}
+
+g.stateGroup rect {
+ fill: ${t.mainBkg};
+ stroke: ${t.nodeBorder};
+}
+
+g.stateGroup line {
+ stroke: ${t.lineColor};
+ stroke-width: 1;
+}
+
+.transition {
+ stroke: ${t.transitionColor};
+ stroke-width: 1;
+ fill: none;
+}
+
+.stateGroup .composit {
+ fill: ${t.background};
+ border-bottom: 1px
+}
+
+.stateGroup .alt-composit {
+ fill: #e0e0e0;
+ border-bottom: 1px
+}
+
+.state-note {
+ stroke: ${t.noteBorderColor};
+ fill: ${t.noteBkgColor};
+
+ text {
+ fill: ${t.noteTextColor};
+ stroke: none;
+ font-size: 10px;
+ }
+}
+
+.stateLabel .box {
+ stroke: none;
+ stroke-width: 0;
+ fill: ${t.mainBkg};
+ opacity: 0.5;
+}
+
+.edgeLabel .label rect {
+ fill: ${t.labelBackgroundColor};
+ opacity: 0.5;
+}
+.edgeLabel {
+ background-color: ${t.edgeLabelBackground};
+ p {
+ background-color: ${t.edgeLabelBackground};
+ }
+ rect {
+ opacity: 0.5;
+ background-color: ${t.edgeLabelBackground};
+ fill: ${t.edgeLabelBackground};
+ }
+ text-align: center;
+}
+.edgeLabel .label text {
+ fill: ${t.transitionLabelColor||t.tertiaryTextColor};
+}
+.label div .edgeLabel {
+ color: ${t.transitionLabelColor||t.tertiaryTextColor};
+}
+
+.stateLabel text {
+ fill: ${t.stateLabelColor};
+ font-size: 10px;
+ font-weight: bold;
+}
+
+.node circle.state-start {
+ fill: ${t.specialStateColor};
+ stroke: ${t.specialStateColor};
+}
+
+.node .fork-join {
+ fill: ${t.specialStateColor};
+ stroke: ${t.specialStateColor};
+}
+
+.node circle.state-end {
+ fill: ${t.innerEndBackground};
+ stroke: ${t.background};
+ stroke-width: 1.5
+}
+.end-state-inner {
+ fill: ${t.compositeBackground||t.background};
+ // stroke: ${t.background};
+ stroke-width: 1.5
+}
+
+.node rect {
+ fill: ${t.stateBkg||t.mainBkg};
+ stroke: ${t.stateBorder||t.nodeBorder};
+ stroke-width: 1px;
+}
+.node polygon {
+ fill: ${t.mainBkg};
+ stroke: ${t.stateBorder||t.nodeBorder};;
+ stroke-width: 1px;
+}
+#statediagram-barbEnd {
+ fill: ${t.lineColor};
+}
+
+.statediagram-cluster rect {
+ fill: ${t.compositeTitleBackground};
+ stroke: ${t.stateBorder||t.nodeBorder};
+ stroke-width: 1px;
+}
+
+.cluster-label, .nodeLabel {
+ color: ${t.stateLabelColor};
+ // line-height: 1;
+}
+
+.statediagram-cluster rect.outer {
+ rx: 5px;
+ ry: 5px;
+}
+.statediagram-state .divider {
+ stroke: ${t.stateBorder||t.nodeBorder};
+}
+
+.statediagram-state .title-state {
+ rx: 5px;
+ ry: 5px;
+}
+.statediagram-cluster.statediagram-cluster .inner {
+ fill: ${t.compositeBackground||t.background};
+}
+.statediagram-cluster.statediagram-cluster-alt .inner {
+ fill: ${t.altBackground?t.altBackground:"#efefef"};
+}
+
+.statediagram-cluster .inner {
+ rx:0;
+ ry:0;
+}
+
+.statediagram-state rect.basic {
+ rx: 5px;
+ ry: 5px;
+}
+.statediagram-state rect.divider {
+ stroke-dasharray: 10,10;
+ fill: ${t.altBackground?t.altBackground:"#efefef"};
+}
+
+.note-edge {
+ stroke-dasharray: 5;
+}
+
+.statediagram-note rect {
+ fill: ${t.noteBkgColor};
+ stroke: ${t.noteBorderColor};
+ stroke-width: 1px;
+ rx: 0;
+ ry: 0;
+}
+.statediagram-note rect {
+ fill: ${t.noteBkgColor};
+ stroke: ${t.noteBorderColor};
+ stroke-width: 1px;
+ rx: 0;
+ ry: 0;
+}
+
+.statediagram-note text {
+ fill: ${t.noteTextColor};
+}
+
+.statediagram-note .nodeLabel {
+ color: ${t.noteTextColor};
+}
+.statediagram .edgeLabel {
+ color: red; // ${t.noteTextColor};
+}
+
+#dependencyStart, #dependencyEnd {
+ fill: ${t.lineColor};
+ stroke: ${t.lineColor};
+ stroke-width: 1;
+}
+
+.statediagramTitleText {
+ text-anchor: middle;
+ font-size: 18px;
+ fill: ${t.textColor};
+}
+`,"getStyles"),Ke=Fe;export{He as a,We as b,ze as c,Ke as d};
+//# sourceMappingURL=chunk-FNCPGT3X.min.js.map
diff --git a/docs/public/chunk-FNCPGT3X.min.js.map b/docs/public/chunk-FNCPGT3X.min.js.map
new file mode 100755
index 0000000..ad35255
--- /dev/null
+++ b/docs/public/chunk-FNCPGT3X.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-DI55MBZ5.mjs"],
+ "sourcesContent": ["import {\n getDiagramElement\n} from \"./chunk-55IACEB6.mjs\";\nimport {\n setupViewPortForSVG\n} from \"./chunk-QN33PNHL.mjs\";\nimport {\n render\n} from \"./chunk-N4CR4FBY.mjs\";\nimport {\n generateId,\n utils_default\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n clear,\n common_default,\n getAccDescription,\n getAccTitle,\n getConfig2 as getConfig,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/state/parser/stateDiagram.jison\nvar parser = (function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 16], $V7 = [1, 17], $V8 = [1, 18], $V9 = [1, 19], $Va = [1, 33], $Vb = [1, 20], $Vc = [1, 21], $Vd = [1, 22], $Ve = [1, 23], $Vf = [1, 24], $Vg = [1, 26], $Vh = [1, 27], $Vi = [1, 28], $Vj = [1, 29], $Vk = [1, 30], $Vl = [1, 31], $Vm = [1, 32], $Vn = [1, 35], $Vo = [1, 36], $Vp = [1, 37], $Vq = [1, 38], $Vr = [1, 34], $Vs = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57], $Vt = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 39, 40, 41, 45, 48, 51, 52, 53, 54, 57], $Vu = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NL\": 5, \"SD\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"classDefStatement\": 10, \"styleStatement\": 11, \"cssClassStatement\": 12, \"idStatement\": 13, \"DESCR\": 14, \"-->\": 15, \"HIDE_EMPTY\": 16, \"scale\": 17, \"WIDTH\": 18, \"COMPOSIT_STATE\": 19, \"STRUCT_START\": 20, \"STRUCT_STOP\": 21, \"STATE_DESCR\": 22, \"AS\": 23, \"ID\": 24, \"FORK\": 25, \"JOIN\": 26, \"CHOICE\": 27, \"CONCURRENT\": 28, \"note\": 29, \"notePosition\": 30, \"NOTE_TEXT\": 31, \"direction\": 32, \"acc_title\": 33, \"acc_title_value\": 34, \"acc_descr\": 35, \"acc_descr_value\": 36, \"acc_descr_multiline_value\": 37, \"CLICK\": 38, \"STRING\": 39, \"HREF\": 40, \"classDef\": 41, \"CLASSDEF_ID\": 42, \"CLASSDEF_STYLEOPTS\": 43, \"DEFAULT\": 44, \"style\": 45, \"STYLE_IDS\": 46, \"STYLEDEF_STYLEOPTS\": 47, \"class\": 48, \"CLASSENTITY_IDS\": 49, \"STYLECLASS\": 50, \"direction_tb\": 51, \"direction_bt\": 52, \"direction_rl\": 53, \"direction_lr\": 54, \"eol\": 55, \";\": 56, \"EDGE_STATE\": 57, \"STYLE_SEPARATOR\": 58, \"left_of\": 59, \"right_of\": 60, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NL\", 6: \"SD\", 14: \"DESCR\", 15: \"-->\", 16: \"HIDE_EMPTY\", 17: \"scale\", 18: \"WIDTH\", 19: \"COMPOSIT_STATE\", 20: \"STRUCT_START\", 21: \"STRUCT_STOP\", 22: \"STATE_DESCR\", 23: \"AS\", 24: \"ID\", 25: \"FORK\", 26: \"JOIN\", 27: \"CHOICE\", 28: \"CONCURRENT\", 29: \"note\", 31: \"NOTE_TEXT\", 33: \"acc_title\", 34: \"acc_title_value\", 35: \"acc_descr\", 36: \"acc_descr_value\", 37: \"acc_descr_multiline_value\", 38: \"CLICK\", 39: \"STRING\", 40: \"HREF\", 41: \"classDef\", 42: \"CLASSDEF_ID\", 43: \"CLASSDEF_STYLEOPTS\", 44: \"DEFAULT\", 45: \"style\", 46: \"STYLE_IDS\", 47: \"STYLEDEF_STYLEOPTS\", 48: \"class\", 49: \"CLASSENTITY_IDS\", 50: \"STYLECLASS\", 51: \"direction_tb\", 52: \"direction_bt\", 53: \"direction_rl\", 54: \"direction_lr\", 56: \";\", 57: \"EDGE_STATE\", 58: \"STYLE_SEPARATOR\", 59: \"left_of\", 60: \"right_of\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 3], [9, 4], [9, 1], [9, 2], [9, 1], [9, 4], [9, 3], [9, 6], [9, 1], [9, 1], [9, 1], [9, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [9, 5], [9, 5], [10, 3], [10, 3], [11, 3], [12, 3], [32, 1], [32, 1], [32, 1], [32, 1], [55, 1], [55, 1], [13, 1], [13, 1], [13, 3], [13, 3], [30, 1], [30, 1]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setRootDoc($$[$0]);\n return $$[$0];\n break;\n case 4:\n this.$ = [];\n break;\n case 5:\n if ($$[$0] != \"nl\") {\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n }\n break;\n case 6:\n case 7:\n this.$ = $$[$0];\n break;\n case 8:\n this.$ = \"nl\";\n break;\n case 12:\n this.$ = $$[$0];\n break;\n case 13:\n const stateStmt = $$[$0 - 1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n break;\n case 14:\n this.$ = { stmt: \"relation\", state1: $$[$0 - 2], state2: $$[$0] };\n break;\n case 15:\n const relDescription = yy.trimColon($$[$0]);\n this.$ = { stmt: \"relation\", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription };\n break;\n case 19:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: \"\", doc: $$[$0 - 1] };\n break;\n case 20:\n var id = $$[$0];\n var description = $$[$0 - 2].trim();\n if ($$[$0].match(\":\")) {\n var parts = $$[$0].split(\":\");\n id = parts[0];\n description = [description, parts[1]];\n }\n this.$ = { stmt: \"state\", id, type: \"default\", description };\n break;\n case 21:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: $$[$0 - 5], doc: $$[$0 - 1] };\n break;\n case 22:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"fork\" };\n break;\n case 23:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"join\" };\n break;\n case 24:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"choice\" };\n break;\n case 25:\n this.$ = { stmt: \"state\", id: yy.getDividerId(), type: \"divider\" };\n break;\n case 26:\n this.$ = { stmt: \"state\", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } };\n break;\n case 29:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 30:\n case 31:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 32:\n this.$ = {\n stmt: \"click\",\n id: $$[$0 - 3],\n url: $$[$0 - 2],\n tooltip: $$[$0 - 1]\n };\n break;\n case 33:\n this.$ = {\n stmt: \"click\",\n id: $$[$0 - 3],\n url: $$[$0 - 1],\n tooltip: \"\"\n };\n break;\n case 34:\n case 35:\n this.$ = { stmt: \"classDef\", id: $$[$0 - 1].trim(), classes: $$[$0].trim() };\n break;\n case 36:\n this.$ = { stmt: \"style\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 37:\n this.$ = { stmt: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n yy.setDirection(\"TB\");\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 39:\n yy.setDirection(\"BT\");\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 40:\n yy.setDirection(\"RL\");\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 41:\n yy.setDirection(\"LR\");\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n case 44:\n case 45:\n this.$ = { stmt: \"state\", id: $$[$0].trim(), type: \"default\", description: \"\" };\n break;\n case 46:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n case 47:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n }\n }, \"anonymous\"),\n table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o($Vs, [2, 5]), { 9: 39, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o($Vs, [2, 7]), o($Vs, [2, 8]), o($Vs, [2, 9]), o($Vs, [2, 10]), o($Vs, [2, 11]), o($Vs, [2, 12], { 14: [1, 40], 15: [1, 41] }), o($Vs, [2, 16]), { 18: [1, 42] }, o($Vs, [2, 18], { 20: [1, 43] }), { 23: [1, 44] }, o($Vs, [2, 22]), o($Vs, [2, 23]), o($Vs, [2, 24]), o($Vs, [2, 25]), { 30: 45, 31: [1, 46], 59: [1, 47], 60: [1, 48] }, o($Vs, [2, 28]), { 34: [1, 49] }, { 36: [1, 50] }, o($Vs, [2, 31]), { 13: 51, 24: $Va, 57: $Vr }, { 42: [1, 52], 44: [1, 53] }, { 46: [1, 54] }, { 49: [1, 55] }, o($Vt, [2, 44], { 58: [1, 56] }), o($Vt, [2, 45], { 58: [1, 57] }), o($Vs, [2, 38]), o($Vs, [2, 39]), o($Vs, [2, 40]), o($Vs, [2, 41]), o($Vs, [2, 6]), o($Vs, [2, 13]), { 13: 58, 24: $Va, 57: $Vr }, o($Vs, [2, 17]), o($Vu, $V3, { 7: 59 }), { 24: [1, 60] }, { 24: [1, 61] }, { 23: [1, 62] }, { 24: [2, 48] }, { 24: [2, 49] }, o($Vs, [2, 29]), o($Vs, [2, 30]), { 39: [1, 63], 40: [1, 64] }, { 43: [1, 65] }, { 43: [1, 66] }, { 47: [1, 67] }, { 50: [1, 68] }, { 24: [1, 69] }, { 24: [1, 70] }, o($Vs, [2, 14], { 14: [1, 71] }), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 21: [1, 72], 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o($Vs, [2, 20], { 20: [1, 73] }), { 31: [1, 74] }, { 24: [1, 75] }, { 39: [1, 76] }, { 39: [1, 77] }, o($Vs, [2, 34]), o($Vs, [2, 35]), o($Vs, [2, 36]), o($Vs, [2, 37]), o($Vt, [2, 46]), o($Vt, [2, 47]), o($Vs, [2, 15]), o($Vs, [2, 19]), o($Vu, $V3, { 7: 78 }), o($Vs, [2, 26]), o($Vs, [2, 27]), { 5: [1, 79] }, { 5: [1, 80] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 13: 15, 16: $V6, 17: $V7, 19: $V8, 21: [1, 81], 22: $V9, 24: $Va, 25: $Vb, 26: $Vc, 27: $Vd, 28: $Ve, 29: $Vf, 32: 25, 33: $Vg, 35: $Vh, 37: $Vi, 38: $Vj, 41: $Vk, 45: $Vl, 48: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 57: $Vr }, o($Vs, [2, 32]), o($Vs, [2, 33]), o($Vs, [2, 21])],\n defaultActions: { 5: [2, 1], 6: [2, 2], 47: [2, 48], 48: [2, 49] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ (function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: { \"case-insensitive\": true },\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n return 38;\n break;\n case 1:\n return 40;\n break;\n case 2:\n return 39;\n break;\n case 3:\n return 44;\n break;\n case 4:\n return 51;\n break;\n case 5:\n return 52;\n break;\n case 6:\n return 53;\n break;\n case 7:\n return 54;\n break;\n case 8:\n break;\n case 9:\n {\n }\n break;\n case 10:\n return 5;\n break;\n case 11:\n break;\n case 12:\n break;\n case 13:\n break;\n case 14:\n break;\n case 15:\n this.pushState(\"SCALE\");\n return 17;\n break;\n case 16:\n return 18;\n break;\n case 17:\n this.popState();\n break;\n case 18:\n this.begin(\"acc_title\");\n return 33;\n break;\n case 19:\n this.popState();\n return \"acc_title_value\";\n break;\n case 20:\n this.begin(\"acc_descr\");\n return 35;\n break;\n case 21:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 22:\n this.begin(\"acc_descr_multiline\");\n break;\n case 23:\n this.popState();\n break;\n case 24:\n return \"acc_descr_multiline_value\";\n break;\n case 25:\n this.pushState(\"CLASSDEF\");\n return 41;\n break;\n case 26:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n break;\n case 27:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 42;\n break;\n case 28:\n this.popState();\n return 43;\n break;\n case 29:\n this.pushState(\"CLASS\");\n return 48;\n break;\n case 30:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 49;\n break;\n case 31:\n this.popState();\n return 50;\n break;\n case 32:\n this.pushState(\"STYLE\");\n return 45;\n break;\n case 33:\n this.popState();\n this.pushState(\"STYLEDEF_STYLES\");\n return 46;\n break;\n case 34:\n this.popState();\n return 47;\n break;\n case 35:\n this.pushState(\"SCALE\");\n return 17;\n break;\n case 36:\n return 18;\n break;\n case 37:\n this.popState();\n break;\n case 38:\n this.pushState(\"STATE\");\n break;\n case 39:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n break;\n case 40:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 26;\n break;\n case 41:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 27;\n break;\n case 42:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n break;\n case 43:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 26;\n break;\n case 44:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 27;\n break;\n case 45:\n return 51;\n break;\n case 46:\n return 52;\n break;\n case 47:\n return 53;\n break;\n case 48:\n return 54;\n break;\n case 49:\n this.pushState(\"STATE_STRING\");\n break;\n case 50:\n this.pushState(\"STATE_ID\");\n return \"AS\";\n break;\n case 51:\n this.popState();\n return \"ID\";\n break;\n case 52:\n this.popState();\n break;\n case 53:\n return \"STATE_DESCR\";\n break;\n case 54:\n return 19;\n break;\n case 55:\n this.popState();\n break;\n case 56:\n this.popState();\n this.pushState(\"struct\");\n return 20;\n break;\n case 57:\n break;\n case 58:\n this.popState();\n return 21;\n break;\n case 59:\n break;\n case 60:\n this.begin(\"NOTE\");\n return 29;\n break;\n case 61:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 59;\n break;\n case 62:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 60;\n break;\n case 63:\n this.popState();\n this.pushState(\"FLOATING_NOTE\");\n break;\n case 64:\n this.popState();\n this.pushState(\"FLOATING_NOTE_ID\");\n return \"AS\";\n break;\n case 65:\n break;\n case 66:\n return \"NOTE_TEXT\";\n break;\n case 67:\n this.popState();\n return \"ID\";\n break;\n case 68:\n this.popState();\n this.pushState(\"NOTE_TEXT\");\n return 24;\n break;\n case 69:\n this.popState();\n yy_.yytext = yy_.yytext.substr(2).trim();\n return 31;\n break;\n case 70:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 31;\n break;\n case 71:\n return 6;\n break;\n case 72:\n return 6;\n break;\n case 73:\n return 16;\n break;\n case 74:\n return 57;\n break;\n case 75:\n return 24;\n break;\n case 76:\n yy_.yytext = yy_.yytext.trim();\n return 14;\n break;\n case 77:\n return 15;\n break;\n case 78:\n return 28;\n break;\n case 79:\n return 58;\n break;\n case 80:\n return 5;\n break;\n case 81:\n return \"INVALID\";\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:click\\b)/i, /^(?:href\\b)/i, /^(?:\"[^\"]*\")/i, /^(?:default\\b)/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:[\\s]+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:classDef\\s+)/i, /^(?:DEFAULT\\s+)/i, /^(?:\\w+\\s+)/i, /^(?:[^\\n]*)/i, /^(?:class\\s+)/i, /^(?:(\\w+)+((,\\s*\\w+)*))/i, /^(?:[^\\n]*)/i, /^(?:style\\s+)/i, /^(?:[\\w,]+\\s+)/i, /^(?:[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:state\\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\\[\\[fork\\]\\])/i, /^(?:.*\\[\\[join\\]\\])/i, /^(?:.*\\[\\[choice\\]\\])/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:[\"])/i, /^(?:\\s*as\\s+)/i, /^(?:[^\\n\\{]*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n\\s\\{]+)/i, /^(?:\\n)/i, /^(?:\\{)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:\\})/i, /^(?:[\\n])/i, /^(?:note\\s+)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:\")/i, /^(?:\\s*as\\s*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n]*)/i, /^(?:\\s*[^:\\n\\s\\-]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:[\\s\\S]*?end note\\b)/i, /^(?:stateDiagram\\s+)/i, /^(?:stateDiagram-v2\\s+)/i, /^(?:hide empty description\\b)/i, /^(?:\\[\\*\\])/i, /^(?:[^:\\n\\s\\-\\{]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"LINE\": { \"rules\": [12, 13], \"inclusive\": false }, \"struct\": { \"rules\": [12, 13, 25, 29, 32, 38, 45, 46, 47, 48, 57, 58, 59, 60, 74, 75, 76, 77, 78], \"inclusive\": false }, \"FLOATING_NOTE_ID\": { \"rules\": [67], \"inclusive\": false }, \"FLOATING_NOTE\": { \"rules\": [64, 65, 66], \"inclusive\": false }, \"NOTE_TEXT\": { \"rules\": [69, 70], \"inclusive\": false }, \"NOTE_ID\": { \"rules\": [68], \"inclusive\": false }, \"NOTE\": { \"rules\": [61, 62, 63], \"inclusive\": false }, \"STYLEDEF_STYLEOPTS\": { \"rules\": [], \"inclusive\": false }, \"STYLEDEF_STYLES\": { \"rules\": [34], \"inclusive\": false }, \"STYLE_IDS\": { \"rules\": [], \"inclusive\": false }, \"STYLE\": { \"rules\": [33], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [31], \"inclusive\": false }, \"CLASS\": { \"rules\": [30], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [28], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [26, 27], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [23, 24], \"inclusive\": false }, \"acc_descr\": { \"rules\": [21], \"inclusive\": false }, \"acc_title\": { \"rules\": [19], \"inclusive\": false }, \"SCALE\": { \"rules\": [16, 17, 36, 37], \"inclusive\": false }, \"ALIAS\": { \"rules\": [], \"inclusive\": false }, \"STATE_ID\": { \"rules\": [51], \"inclusive\": false }, \"STATE_STRING\": { \"rules\": [52, 53], \"inclusive\": false }, \"FORK_STATE\": { \"rules\": [], \"inclusive\": false }, \"STATE\": { \"rules\": [12, 13, 39, 40, 41, 42, 43, 44, 49, 50, 54, 55, 56], \"inclusive\": false }, \"ID\": { \"rules\": [12, 13], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22, 25, 29, 32, 35, 38, 56, 60, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81], \"inclusive\": true } }\n };\n return lexer2;\n })();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n})();\nparser.parser = parser;\nvar stateDiagram_default = parser;\n\n// src/diagrams/state/stateCommon.ts\nvar DEFAULT_DIAGRAM_DIRECTION = \"TB\";\nvar DEFAULT_NESTED_DOC_DIR = \"TB\";\nvar STMT_DIRECTION = \"dir\";\nvar STMT_STATE = \"state\";\nvar STMT_ROOT = \"root\";\nvar STMT_RELATION = \"relation\";\nvar STMT_CLASSDEF = \"classDef\";\nvar STMT_STYLEDEF = \"style\";\nvar STMT_APPLYCLASS = \"applyClass\";\nvar DEFAULT_STATE_TYPE = \"default\";\nvar DIVIDER_TYPE = \"divider\";\nvar G_EDGE_STYLE = \"fill:none\";\nvar G_EDGE_ARROWHEADSTYLE = \"fill: #333\";\nvar G_EDGE_LABELPOS = \"c\";\nvar G_EDGE_LABELTYPE = \"text\";\nvar G_EDGE_THICKNESS = \"normal\";\nvar SHAPE_STATE = \"rect\";\nvar SHAPE_STATE_WITH_DESC = \"rectWithTitle\";\nvar SHAPE_START = \"stateStart\";\nvar SHAPE_END = \"stateEnd\";\nvar SHAPE_DIVIDER = \"divider\";\nvar SHAPE_GROUP = \"roundedWithTitle\";\nvar SHAPE_NOTE = \"note\";\nvar SHAPE_NOTEGROUP = \"noteGroup\";\nvar CSS_DIAGRAM = \"statediagram\";\nvar CSS_STATE = \"state\";\nvar CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`;\nvar CSS_EDGE = \"transition\";\nvar CSS_NOTE = \"note\";\nvar CSS_NOTE_EDGE = \"note-edge\";\nvar CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`;\nvar CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`;\nvar CSS_CLUSTER = \"cluster\";\nvar CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`;\nvar CSS_CLUSTER_ALT = \"cluster-alt\";\nvar CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`;\nvar PARENT = \"parent\";\nvar NOTE = \"note\";\nvar DOMID_STATE = \"state\";\nvar DOMID_TYPE_SPACER = \"----\";\nvar NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`;\nvar PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT}`;\n\n// src/diagrams/state/stateRenderer-v3-unified.ts\nvar getDir = /* @__PURE__ */ __name((parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n let dir = defaultDir;\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n return dir;\n}, \"getDir\");\nvar getClasses = /* @__PURE__ */ __name(function(text, diagramObj) {\n return diagramObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diag) {\n log.info(\"REF0:\");\n log.info(\"Drawing state diagram (v2)\", id);\n const { securityLevel, state: conf, layout } = getConfig();\n diag.db.extract(diag.db.getRootDocV2());\n const data4Layout = diag.db.getData();\n const svg = getDiagramElement(id, securityLevel);\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = layout;\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = [\"barb\"];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n try {\n const links = typeof diag.db.getLinks === \"function\" ? diag.db.getLinks() : /* @__PURE__ */ new Map();\n links.forEach((linkInfo, key) => {\n const stateId = typeof key === \"string\" ? key : typeof key?.id === \"string\" ? key.id : \"\";\n if (!stateId) {\n log.warn(\"\\u26A0\\uFE0F Invalid or missing stateId from key:\", JSON.stringify(key));\n return;\n }\n const allNodes = svg.node()?.querySelectorAll(\"g\");\n let matchedElem;\n allNodes?.forEach((g) => {\n const text2 = g.textContent?.trim();\n if (text2 === stateId) {\n matchedElem = g;\n }\n });\n if (!matchedElem) {\n log.warn(\"\\u26A0\\uFE0F Could not find node matching text:\", stateId);\n return;\n }\n const parent = matchedElem.parentNode;\n if (!parent) {\n log.warn(\"\\u26A0\\uFE0F Node has no parent, cannot wrap:\", stateId);\n return;\n }\n const a = document.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n const cleanedUrl = linkInfo.url.replace(/^\"+|\"+$/g, \"\");\n a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", cleanedUrl);\n a.setAttribute(\"target\", \"_blank\");\n if (linkInfo.tooltip) {\n const tooltip = linkInfo.tooltip.replace(/^\"+|\"+$/g, \"\");\n a.setAttribute(\"title\", tooltip);\n }\n parent.replaceChild(a, matchedElem);\n a.appendChild(matchedElem);\n log.info(\"\\u{1F517} Wrapped node in tag for:\", stateId, linkInfo.url);\n });\n } catch (err) {\n log.error(\"\\u274C Error injecting clickable links:\", err);\n }\n utils_default.insertTitle(\n svg,\n \"statediagramTitleText\",\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, CSS_DIAGRAM, conf?.useMaxWidth ?? true);\n}, \"draw\");\nvar stateRenderer_v3_unified_default = {\n getClasses,\n draw,\n getDir\n};\n\n// src/diagrams/state/dataFetcher.ts\nvar nodeDb = /* @__PURE__ */ new Map();\nvar graphItemCount = 0;\nfunction stateDomId(itemId = \"\", counter = 0, type = \"\", typeSpacer = DOMID_TYPE_SPACER) {\n const typeStr = type !== null && type.length > 0 ? `${typeSpacer}${type}` : \"\";\n return `${DOMID_STATE}-${itemId}${typeStr}-${counter}`;\n}\n__name(stateDomId, \"stateDomId\");\nvar setupDoc = /* @__PURE__ */ __name((parentParsedItem, doc, diagramStates, nodes, edges, altFlag, look, classes) => {\n log.trace(\"items\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n dataFetcher(parentParsedItem, item, diagramStates, nodes, edges, altFlag, look, classes);\n break;\n case DEFAULT_STATE_TYPE:\n dataFetcher(parentParsedItem, item, diagramStates, nodes, edges, altFlag, look, classes);\n break;\n case STMT_RELATION:\n {\n dataFetcher(\n parentParsedItem,\n item.state1,\n diagramStates,\n nodes,\n edges,\n altFlag,\n look,\n classes\n );\n dataFetcher(\n parentParsedItem,\n item.state2,\n diagramStates,\n nodes,\n edges,\n altFlag,\n look,\n classes\n );\n const edgeData = {\n id: \"edge\" + graphItemCount,\n start: item.state1.id,\n end: item.state2.id,\n arrowhead: \"normal\",\n arrowTypeEnd: \"arrow_barb\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n label: common_default.sanitizeText(item.description ?? \"\", getConfig()),\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n classes: CSS_EDGE,\n look\n };\n edges.push(edgeData);\n graphItemCount++;\n }\n break;\n }\n });\n}, \"setupDoc\");\nvar getDir2 = /* @__PURE__ */ __name((parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n let dir = defaultDir;\n if (parsedItem.doc) {\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n }\n return dir;\n}, \"getDir\");\nfunction insertOrUpdateNode(nodes, nodeData, classes) {\n if (!nodeData.id || nodeData.id === \" \" || nodeData.id === \"\") {\n return;\n }\n if (nodeData.cssClasses) {\n if (!Array.isArray(nodeData.cssCompiledStyles)) {\n nodeData.cssCompiledStyles = [];\n }\n nodeData.cssClasses.split(\" \").forEach((cssClass) => {\n const classDef = classes.get(cssClass);\n if (classDef) {\n nodeData.cssCompiledStyles = [...nodeData.cssCompiledStyles ?? [], ...classDef.styles];\n }\n });\n }\n const existingNodeData = nodes.find((node) => node.id === nodeData.id);\n if (existingNodeData) {\n Object.assign(existingNodeData, nodeData);\n } else {\n nodes.push(nodeData);\n }\n}\n__name(insertOrUpdateNode, \"insertOrUpdateNode\");\nfunction getClassesFromDbInfo(dbInfoItem) {\n return dbInfoItem?.classes?.join(\" \") ?? \"\";\n}\n__name(getClassesFromDbInfo, \"getClassesFromDbInfo\");\nfunction getStylesFromDbInfo(dbInfoItem) {\n return dbInfoItem?.styles ?? [];\n}\n__name(getStylesFromDbInfo, \"getStylesFromDbInfo\");\nvar dataFetcher = /* @__PURE__ */ __name((parent, parsedItem, diagramStates, nodes, edges, altFlag, look, classes) => {\n const itemId = parsedItem.id;\n const dbState = diagramStates.get(itemId);\n const classStr = getClassesFromDbInfo(dbState);\n const style = getStylesFromDbInfo(dbState);\n const config = getConfig();\n log.info(\"dataFetcher parsedItem\", parsedItem, dbState, style);\n if (itemId !== \"root\") {\n let shape = SHAPE_STATE;\n if (parsedItem.start === true) {\n shape = SHAPE_START;\n } else if (parsedItem.start === false) {\n shape = SHAPE_END;\n }\n if (parsedItem.type !== DEFAULT_STATE_TYPE) {\n shape = parsedItem.type;\n }\n if (!nodeDb.get(itemId)) {\n nodeDb.set(itemId, {\n id: itemId,\n shape,\n description: common_default.sanitizeText(itemId, config),\n cssClasses: `${classStr} ${CSS_DIAGRAM_STATE}`,\n cssStyles: style\n });\n }\n const newNode = nodeDb.get(itemId);\n if (parsedItem.description) {\n if (Array.isArray(newNode.description)) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n newNode.description.push(parsedItem.description);\n } else {\n if (newNode.description?.length && newNode.description.length > 0) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n if (newNode.description === itemId) {\n newNode.description = [parsedItem.description];\n } else {\n newNode.description = [newNode.description, parsedItem.description];\n }\n } else {\n newNode.shape = SHAPE_STATE;\n newNode.description = parsedItem.description;\n }\n }\n newNode.description = common_default.sanitizeTextOrArray(newNode.description, config);\n }\n if (newNode.description?.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) {\n if (newNode.type === \"group\") {\n newNode.shape = SHAPE_GROUP;\n } else {\n newNode.shape = SHAPE_STATE;\n }\n }\n if (!newNode.type && parsedItem.doc) {\n log.info(\"Setting cluster for XCX\", itemId, getDir2(parsedItem));\n newNode.type = \"group\";\n newNode.isGroup = true;\n newNode.dir = getDir2(parsedItem);\n newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP;\n newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : \"\"}`;\n }\n const nodeData = {\n labelStyle: \"\",\n shape: newNode.shape,\n label: newNode.description,\n cssClasses: newNode.cssClasses,\n cssCompiledStyles: [],\n cssStyles: newNode.cssStyles,\n id: itemId,\n dir: newNode.dir,\n domId: stateDomId(itemId, graphItemCount),\n type: newNode.type,\n isGroup: newNode.type === \"group\",\n padding: 8,\n rx: 10,\n ry: 10,\n look\n };\n if (nodeData.shape === SHAPE_DIVIDER) {\n nodeData.label = \"\";\n }\n if (parent && parent.id !== \"root\") {\n log.trace(\"Setting node \", itemId, \" to be child of its parent \", parent.id);\n nodeData.parentId = parent.id;\n }\n nodeData.centerLabel = true;\n if (parsedItem.note) {\n const noteData = {\n labelStyle: \"\",\n shape: SHAPE_NOTE,\n label: parsedItem.note.text,\n cssClasses: CSS_DIAGRAM_NOTE,\n // useHtmlLabels: false,\n cssStyles: [],\n cssCompiledStyles: [],\n id: itemId + NOTE_ID + \"-\" + graphItemCount,\n domId: stateDomId(itemId, graphItemCount, NOTE),\n type: newNode.type,\n isGroup: newNode.type === \"group\",\n padding: config.flowchart?.padding,\n look,\n position: parsedItem.note.position\n };\n const parentNodeId = itemId + PARENT_ID;\n const groupData = {\n labelStyle: \"\",\n shape: SHAPE_NOTEGROUP,\n label: parsedItem.note.text,\n cssClasses: newNode.cssClasses,\n cssStyles: [],\n id: itemId + PARENT_ID,\n domId: stateDomId(itemId, graphItemCount, PARENT),\n type: \"group\",\n isGroup: true,\n padding: 16,\n //getConfig().flowchart.padding\n look,\n position: parsedItem.note.position\n };\n graphItemCount++;\n groupData.id = parentNodeId;\n noteData.parentId = parentNodeId;\n insertOrUpdateNode(nodes, groupData, classes);\n insertOrUpdateNode(nodes, noteData, classes);\n insertOrUpdateNode(nodes, nodeData, classes);\n let from = itemId;\n let to = noteData.id;\n if (parsedItem.note.position === \"left of\") {\n from = noteData.id;\n to = itemId;\n }\n edges.push({\n id: from + \"-\" + to,\n start: from,\n end: to,\n arrowhead: \"none\",\n arrowTypeEnd: \"\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n classes: CSS_EDGE_NOTE_EDGE,\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n look\n });\n } else {\n insertOrUpdateNode(nodes, nodeData, classes);\n }\n }\n if (parsedItem.doc) {\n log.trace(\"Adding nodes children \");\n setupDoc(parsedItem, parsedItem.doc, diagramStates, nodes, edges, !altFlag, look, classes);\n }\n}, \"dataFetcher\");\nvar reset = /* @__PURE__ */ __name(() => {\n nodeDb.clear();\n graphItemCount = 0;\n}, \"reset\");\n\n// src/diagrams/state/stateDb.ts\nvar CONSTANTS = {\n START_NODE: \"[*]\",\n START_TYPE: \"start\",\n END_NODE: \"[*]\",\n END_TYPE: \"end\",\n COLOR_KEYWORD: \"color\",\n FILL_KEYWORD: \"fill\",\n BG_FILL: \"bgFill\",\n STYLECLASS_SEP: \",\"\n};\nvar newClassesList = /* @__PURE__ */ __name(() => /* @__PURE__ */ new Map(), \"newClassesList\");\nvar newDoc = /* @__PURE__ */ __name(() => ({\n relations: [],\n states: /* @__PURE__ */ new Map(),\n documents: {}\n}), \"newDoc\");\nvar clone = /* @__PURE__ */ __name((o) => JSON.parse(JSON.stringify(o)), \"clone\");\nvar StateDB = class {\n constructor(version) {\n this.version = version;\n this.nodes = [];\n this.edges = [];\n this.rootDoc = [];\n this.classes = newClassesList();\n this.documents = { root: newDoc() };\n this.currentDocument = this.documents.root;\n this.startEndCount = 0;\n this.dividerCnt = 0;\n this.links = /* @__PURE__ */ new Map();\n this.getAccTitle = getAccTitle;\n this.setAccTitle = setAccTitle;\n this.getAccDescription = getAccDescription;\n this.setAccDescription = setAccDescription;\n this.setDiagramTitle = setDiagramTitle;\n this.getDiagramTitle = getDiagramTitle;\n this.clear();\n this.setRootDoc = this.setRootDoc.bind(this);\n this.getDividerId = this.getDividerId.bind(this);\n this.setDirection = this.setDirection.bind(this);\n this.trimColon = this.trimColon.bind(this);\n }\n static {\n __name(this, \"StateDB\");\n }\n static {\n this.relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n };\n }\n /**\n * Convert all of the statements (stmts) that were parsed into states and relationships.\n * This is done because a state diagram may have nested sections,\n * where each section is a 'document' and has its own set of statements.\n * Ex: the section within a fork has its own statements, and incoming and outgoing statements\n * refer to the fork as a whole (document).\n * See the parser grammar: the definition of a document is a document then a 'line', where a line can be a statement.\n * This will push the statement into the list of statements for the current document.\n */\n extract(statements) {\n this.clear(true);\n for (const item of Array.isArray(statements) ? statements : statements.doc) {\n switch (item.stmt) {\n case STMT_STATE:\n this.addState(item.id.trim(), item.type, item.doc, item.description, item.note);\n break;\n case STMT_RELATION:\n this.addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n this.addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_STYLEDEF:\n this.handleStyleDef(item);\n break;\n case STMT_APPLYCLASS:\n this.setCssClass(item.id.trim(), item.styleClass);\n break;\n case \"click\":\n this.addLink(item.id, item.url, item.tooltip);\n break;\n }\n }\n const diagramStates = this.getStates();\n const config = getConfig();\n reset();\n dataFetcher(\n void 0,\n this.getRootDocV2(),\n diagramStates,\n this.nodes,\n this.edges,\n true,\n config.look,\n this.classes\n );\n for (const node of this.nodes) {\n if (!Array.isArray(node.label)) {\n continue;\n }\n node.description = node.label.slice(1);\n if (node.isGroup && node.description.length > 0) {\n throw new Error(\n `Group nodes can only have label. Remove the additional description for node [${node.id}]`\n );\n }\n node.label = node.label[0];\n }\n }\n handleStyleDef(item) {\n const ids = item.id.trim().split(\",\");\n const styles = item.styleClass.split(\",\");\n for (const id of ids) {\n let state = this.getState(id);\n if (!state) {\n const trimmedId = id.trim();\n this.addState(trimmedId);\n state = this.getState(trimmedId);\n }\n if (state) {\n state.styles = styles.map((s) => s.replace(/;/g, \"\")?.trim());\n }\n }\n }\n setRootDoc(o) {\n log.info(\"Setting root doc\", o);\n this.rootDoc = o;\n if (this.version === 1) {\n this.extract(o);\n } else {\n this.extract(this.getRootDocV2());\n }\n }\n docTranslator(parent, node, first) {\n if (node.stmt === STMT_RELATION) {\n this.docTranslator(parent, node.state1, true);\n this.docTranslator(parent, node.state2, false);\n return;\n }\n if (node.stmt === STMT_STATE) {\n if (node.id === CONSTANTS.START_NODE) {\n node.id = parent.id + (first ? \"_start\" : \"_end\");\n node.start = first;\n } else {\n node.id = node.id.trim();\n }\n }\n if (node.stmt !== STMT_ROOT && node.stmt !== STMT_STATE || !node.doc) {\n return;\n }\n const doc = [];\n let currentDoc = [];\n for (const stmt of node.doc) {\n if (stmt.type === DIVIDER_TYPE) {\n const newNode = clone(stmt);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(stmt);\n }\n }\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: generateId(),\n type: \"divider\",\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n node.doc.forEach((docNode) => this.docTranslator(node, docNode, true));\n }\n getRootDocV2() {\n this.docTranslator(\n { id: STMT_ROOT, stmt: STMT_ROOT },\n { id: STMT_ROOT, stmt: STMT_ROOT, doc: this.rootDoc },\n true\n );\n return { id: STMT_ROOT, doc: this.rootDoc };\n }\n /**\n * Function called by parser when a node definition has been found.\n *\n * @param descr - description for the state. Can be a string or a list or strings\n * @param classes - class styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 class, convert it to an array of that 1 class.\n * @param styles - styles to apply to this state. Can be a string (1 style) or an array of styles. If it's just 1 style, convert it to an array of that 1 style.\n * @param textStyles - text styles to apply to this state. Can be a string (1 text test) or an array of text styles. If it's just 1 text style, convert it to an array of that 1 text style.\n */\n addState(id, type = DEFAULT_STATE_TYPE, doc = void 0, descr = void 0, note = void 0, classes = void 0, styles = void 0, textStyles = void 0) {\n const trimmedId = id?.trim();\n if (!this.currentDocument.states.has(trimmedId)) {\n log.info(\"Adding state \", trimmedId, descr);\n this.currentDocument.states.set(trimmedId, {\n stmt: STMT_STATE,\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: []\n });\n } else {\n const state = this.currentDocument.states.get(trimmedId);\n if (!state) {\n throw new Error(`State not found: ${trimmedId}`);\n }\n if (!state.doc) {\n state.doc = doc;\n }\n if (!state.type) {\n state.type = type;\n }\n }\n if (descr) {\n log.info(\"Setting state description\", trimmedId, descr);\n const descriptions = Array.isArray(descr) ? descr : [descr];\n descriptions.forEach((des) => this.addDescription(trimmedId, des.trim()));\n }\n if (note) {\n const doc2 = this.currentDocument.states.get(trimmedId);\n if (!doc2) {\n throw new Error(`State not found: ${trimmedId}`);\n }\n doc2.note = note;\n doc2.note.text = common_default.sanitizeText(doc2.note.text, getConfig());\n }\n if (classes) {\n log.info(\"Setting state classes\", trimmedId, classes);\n const classesList = Array.isArray(classes) ? classes : [classes];\n classesList.forEach((cssClass) => this.setCssClass(trimmedId, cssClass.trim()));\n }\n if (styles) {\n log.info(\"Setting state styles\", trimmedId, styles);\n const stylesList = Array.isArray(styles) ? styles : [styles];\n stylesList.forEach((style) => this.setStyle(trimmedId, style.trim()));\n }\n if (textStyles) {\n log.info(\"Setting state styles\", trimmedId, styles);\n const textStylesList = Array.isArray(textStyles) ? textStyles : [textStyles];\n textStylesList.forEach((textStyle) => this.setTextStyle(trimmedId, textStyle.trim()));\n }\n }\n clear(saveCommon) {\n this.nodes = [];\n this.edges = [];\n this.documents = { root: newDoc() };\n this.currentDocument = this.documents.root;\n this.startEndCount = 0;\n this.classes = newClassesList();\n if (!saveCommon) {\n this.links = /* @__PURE__ */ new Map();\n clear();\n }\n }\n getState(id) {\n return this.currentDocument.states.get(id);\n }\n getStates() {\n return this.currentDocument.states;\n }\n logDocuments() {\n log.info(\"Documents = \", this.documents);\n }\n getRelations() {\n return this.currentDocument.relations;\n }\n /**\n * Adds a clickable link to a state.\n */\n addLink(stateId, url, tooltip) {\n this.links.set(stateId, { url, tooltip });\n log.warn(\"Adding link\", stateId, url, tooltip);\n }\n /**\n * Get all registered links.\n */\n getLinks() {\n return this.links;\n }\n /**\n * If the id is a start node ( [*] ), then return a new id constructed from\n * the start node name and the current start node count.\n * else return the given id\n */\n startIdIfNeeded(id = \"\") {\n if (id === CONSTANTS.START_NODE) {\n this.startEndCount++;\n return `${CONSTANTS.START_TYPE}${this.startEndCount}`;\n }\n return id;\n }\n /**\n * If the id is a start node ( [*] ), then return the start type ('start')\n * else return the given type\n */\n startTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === CONSTANTS.START_NODE ? CONSTANTS.START_TYPE : type;\n }\n /**\n * If the id is an end node ( [*] ), then return a new id constructed from\n * the end node name and the current start_end node count.\n * else return the given id\n */\n endIdIfNeeded(id = \"\") {\n if (id === CONSTANTS.END_NODE) {\n this.startEndCount++;\n return `${CONSTANTS.END_TYPE}${this.startEndCount}`;\n }\n return id;\n }\n /**\n * If the id is an end node ( [*] ), then return the end type\n * else return the given type\n *\n */\n endTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === CONSTANTS.END_NODE ? CONSTANTS.END_TYPE : type;\n }\n addRelationObjs(item1, item2, relationTitle = \"\") {\n const id1 = this.startIdIfNeeded(item1.id.trim());\n const type1 = this.startTypeIfNeeded(item1.id.trim(), item1.type);\n const id2 = this.startIdIfNeeded(item2.id.trim());\n const type2 = this.startTypeIfNeeded(item2.id.trim(), item2.type);\n this.addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n this.addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n this.currentDocument.relations.push({\n id1,\n id2,\n relationTitle: common_default.sanitizeText(relationTitle, getConfig())\n });\n }\n /**\n * Add a relation between two items. The items may be full objects or just the string id of a state.\n */\n addRelation(item1, item2, title) {\n if (typeof item1 === \"object\" && typeof item2 === \"object\") {\n this.addRelationObjs(item1, item2, title);\n } else if (typeof item1 === \"string\" && typeof item2 === \"string\") {\n const id1 = this.startIdIfNeeded(item1.trim());\n const type1 = this.startTypeIfNeeded(item1);\n const id2 = this.endIdIfNeeded(item2.trim());\n const type2 = this.endTypeIfNeeded(item2);\n this.addState(id1, type1);\n this.addState(id2, type2);\n this.currentDocument.relations.push({\n id1,\n id2,\n relationTitle: title ? common_default.sanitizeText(title, getConfig()) : void 0\n });\n }\n }\n addDescription(id, descr) {\n const theState = this.currentDocument.states.get(id);\n const _descr = descr.startsWith(\":\") ? descr.replace(\":\", \"\").trim() : descr;\n theState?.descriptions?.push(common_default.sanitizeText(_descr, getConfig()));\n }\n cleanupLabel(label) {\n return label.startsWith(\":\") ? label.slice(2).trim() : label.trim();\n }\n getDividerId() {\n this.dividerCnt++;\n return `divider-id-${this.dividerCnt}`;\n }\n /**\n * Called when the parser comes across a (style) class definition\n * @example classDef my-style fill:#f96;\n *\n * @param id - the id of this (style) class\n * @param styleAttributes - the string with 1 or more style attributes (each separated by a comma)\n */\n addStyleClass(id, styleAttributes = \"\") {\n if (!this.classes.has(id)) {\n this.classes.set(id, { id, styles: [], textStyles: [] });\n }\n const foundClass = this.classes.get(id);\n if (styleAttributes && foundClass) {\n styleAttributes.split(CONSTANTS.STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (RegExp(CONSTANTS.COLOR_KEYWORD).exec(attrib)) {\n const newStyle1 = fixedAttrib.replace(CONSTANTS.FILL_KEYWORD, CONSTANTS.BG_FILL);\n const newStyle2 = newStyle1.replace(CONSTANTS.COLOR_KEYWORD, CONSTANTS.FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n }\n getClasses() {\n return this.classes;\n }\n /**\n * Add a (style) class or css class to a state with the given id.\n * If the state isn't already in the list of known states, add it.\n * Might be called by parser when a style class or CSS class should be applied to a state\n *\n * @param itemIds - The id or a list of ids of the item(s) to apply the css class to\n * @param cssClassName - CSS class name\n */\n setCssClass(itemIds, cssClassName) {\n itemIds.split(\",\").forEach((id) => {\n let foundState = this.getState(id);\n if (!foundState) {\n const trimmedId = id.trim();\n this.addState(trimmedId);\n foundState = this.getState(trimmedId);\n }\n foundState?.classes?.push(cssClassName);\n });\n }\n /**\n * Add a style to a state with the given id.\n * @example style stateId fill:#f9f,stroke:#333,stroke-width:4px\n * where 'style' is the keyword\n * stateId is the id of a state\n * the rest of the string is the styleText (all of the attributes to be applied to the state)\n *\n * @param itemId - The id of item to apply the style to\n * @param styleText - the text of the attributes for the style\n */\n setStyle(itemId, styleText) {\n this.getState(itemId)?.styles?.push(styleText);\n }\n /**\n * Add a text style to a state with the given id\n *\n * @param itemId - The id of item to apply the css class to\n * @param cssClassName - CSS class name\n */\n setTextStyle(itemId, cssClassName) {\n this.getState(itemId)?.textStyles?.push(cssClassName);\n }\n /**\n * Finds the direction statement in the root document.\n * @returns the direction statement if present\n */\n getDirectionStatement() {\n return this.rootDoc.find((doc) => doc.stmt === STMT_DIRECTION);\n }\n getDirection() {\n return this.getDirectionStatement()?.value ?? DEFAULT_DIAGRAM_DIRECTION;\n }\n setDirection(dir) {\n const doc = this.getDirectionStatement();\n if (doc) {\n doc.value = dir;\n } else {\n this.rootDoc.unshift({ stmt: STMT_DIRECTION, value: dir });\n }\n }\n trimColon(str) {\n return str.startsWith(\":\") ? str.slice(1).trim() : str.trim();\n }\n getData() {\n const config = getConfig();\n return {\n nodes: this.nodes,\n edges: this.edges,\n other: {},\n config,\n direction: getDir(this.getRootDocV2())\n };\n }\n getConfig() {\n return getConfig().state;\n }\n};\n\n// src/diagrams/state/styles.js\nvar getStyles = /* @__PURE__ */ __name((options) => `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${options.edgeLabelBackground};\n p {\n background-color: ${options.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\nexport {\n stateDiagram_default,\n stateRenderer_v3_unified_default,\n StateDB,\n styles_default\n};\n"],
+ "mappings": "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",
+ "names": ["parser", "o", "__name", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "stateStmt", "relDescription", "id", "description", "parts", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "stateDiagram_default", "DEFAULT_DIAGRAM_DIRECTION", "DEFAULT_NESTED_DOC_DIR", "STMT_DIRECTION", "STMT_STATE", "STMT_ROOT", "STMT_RELATION", "STMT_CLASSDEF", "STMT_STYLEDEF", "STMT_APPLYCLASS", "DEFAULT_STATE_TYPE", "DIVIDER_TYPE", "G_EDGE_STYLE", "G_EDGE_ARROWHEADSTYLE", "G_EDGE_LABELPOS", "G_EDGE_LABELTYPE", "G_EDGE_THICKNESS", "SHAPE_STATE", "SHAPE_STATE_WITH_DESC", "SHAPE_START", "SHAPE_END", "SHAPE_DIVIDER", "SHAPE_GROUP", "SHAPE_NOTE", "SHAPE_NOTEGROUP", "CSS_DIAGRAM", "CSS_STATE", "CSS_DIAGRAM_STATE", "CSS_EDGE", "CSS_NOTE", "CSS_NOTE_EDGE", "CSS_EDGE_NOTE_EDGE", "CSS_DIAGRAM_NOTE", "CSS_CLUSTER", "CSS_DIAGRAM_CLUSTER", "CSS_CLUSTER_ALT", "CSS_DIAGRAM_CLUSTER_ALT", "PARENT", "NOTE", "DOMID_STATE", "DOMID_TYPE_SPACER", "NOTE_ID", "PARENT_ID", "getDir", "parsedItem", "defaultDir", "dir", "parsedItemDoc", "getClasses", "text", "diagramObj", "draw", "_version", "diag", "log", "securityLevel", "conf", "layout", "getConfig2", "data4Layout", "svg", "getDiagramElement", "render", "padding", "linkInfo", "key", "stateId", "allNodes", "matchedElem", "g", "parent", "cleanedUrl", "tooltip", "err", "utils_default", "setupViewPortForSVG", "stateRenderer_v3_unified_default", "nodeDb", "graphItemCount", "stateDomId", "itemId", "counter", "type", "typeSpacer", "typeStr", "setupDoc", "parentParsedItem", "doc", "diagramStates", "nodes", "edges", "altFlag", "look", "classes", "item", "dataFetcher", "edgeData", "common_default", "getDir2", "insertOrUpdateNode", "nodeData", "cssClass", "classDef", "existingNodeData", "node", "getClassesFromDbInfo", "dbInfoItem", "getStylesFromDbInfo", "dbState", "classStr", "style", "config", "shape", "newNode", "noteData", "parentNodeId", "groupData", "from", "to", "reset", "CONSTANTS", "newClassesList", "newDoc", "clone", "StateDB", "version", "getAccTitle", "setAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "statements", "ids", "styles", "trimmedId", "s", "first", "currentDoc", "stmt", "generateId", "docNode", "descr", "note", "textStyles", "des", "doc2", "textStyle", "saveCommon", "clear", "url", "item1", "item2", "relationTitle", "id1", "type1", "id2", "type2", "title", "theState", "_descr", "label", "styleAttributes", "foundClass", "attrib", "fixedAttrib", "newStyle2", "itemIds", "cssClassName", "foundState", "styleText", "getStyles", "options", "styles_default"]
+}
diff --git a/docs/public/chunk-HVSI2YYT.min.js b/docs/public/chunk-HVSI2YYT.min.js
new file mode 100755
index 0000000..fc7c8b5
--- /dev/null
+++ b/docs/public/chunk-HVSI2YYT.min.js
@@ -0,0 +1,2 @@
+import{a as o,b as n,c as a,d as s,e as m,f as e,g as u,j as d,o as c,q as l}from"./chunk-LBFZT66H.min.js";var v=class extends l{static{e(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},C=class extends c{static{e(this,"PieValueConverter")}runCustomConverter(t,r,i){if(t.name==="PIE_SECTION_LABEL")return r.replace(/"/g,"").trim()}},P={parser:{TokenBuilder:e(()=>new v,"TokenBuilder"),ValueConverter:e(()=>new C,"ValueConverter")}};function p(t=s){let r=a(n(t),u),i=a(o({shared:r}),d,P);return r.ServiceRegistry.register(i),{shared:r,Pie:i}}e(p,"createPieServices");export{P as a,p as b};
+//# sourceMappingURL=chunk-HVSI2YYT.min.js.map
diff --git a/docs/public/chunk-HVSI2YYT.min.js.map b/docs/public/chunk-HVSI2YYT.min.js.map
new file mode 100755
index 0000000..5f79287
--- /dev/null
+++ b/docs/public/chunk-HVSI2YYT.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-WFWHJNB7.mjs"],
+ "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n MermaidGeneratedSharedModule,\n PieGeneratedModule,\n __name\n} from \"./chunk-4KMFLZZN.mjs\";\n\n// src/language/pie/module.ts\nimport {\n EmptyFileSystem,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n inject\n} from \"langium\";\n\n// src/language/pie/tokenBuilder.ts\nvar PieTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"PieTokenBuilder\");\n }\n constructor() {\n super([\"pie\", \"showData\"]);\n }\n};\n\n// src/language/pie/valueConverter.ts\nvar PieValueConverter = class extends AbstractMermaidValueConverter {\n static {\n __name(this, \"PieValueConverter\");\n }\n runCustomConverter(rule, input, _cstNode) {\n if (rule.name !== \"PIE_SECTION_LABEL\") {\n return void 0;\n }\n return input.replace(/\"/g, \"\").trim();\n }\n};\n\n// src/language/pie/module.ts\nvar PieModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new PieTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new PieValueConverter(), \"ValueConverter\")\n }\n};\nfunction createPieServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const Pie = inject(\n createDefaultCoreModule({ shared }),\n PieGeneratedModule,\n PieModule\n );\n shared.ServiceRegistry.register(Pie);\n return { shared, Pie };\n}\n__name(createPieServices, \"createPieServices\");\n\nexport {\n PieModule,\n createPieServices\n};\n"],
+ "mappings": "2GAiBA,IAAIA,EAAkB,cAAcC,CAA4B,CAC9D,MAAO,CACLC,EAAO,KAAM,iBAAiB,CAChC,CACA,aAAc,CACZ,MAAM,CAAC,MAAO,UAAU,CAAC,CAC3B,CACF,EAGIC,EAAoB,cAAcC,CAA8B,CAClE,MAAO,CACLF,EAAO,KAAM,mBAAmB,CAClC,CACA,mBAAmBG,EAAMC,EAAOC,EAAU,CACxC,GAAIF,EAAK,OAAS,oBAGlB,OAAOC,EAAM,QAAQ,KAAM,EAAE,EAAE,KAAK,CACtC,CACF,EAGIE,EAAY,CACd,OAAQ,CACN,aAA8BN,EAAO,IAAM,IAAIF,EAAmB,cAAc,EAChF,eAAgCE,EAAO,IAAM,IAAIC,EAAqB,gBAAgB,CACxF,CACF,EACA,SAASM,EAAkBC,EAAUC,EAAiB,CACpD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAMH,EACVI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAV,CACF,EACA,OAAAI,EAAO,gBAAgB,SAASI,CAAG,EAC5B,CAAE,OAAAJ,EAAQ,IAAAI,CAAI,CACvB,CACAd,EAAOO,EAAmB,mBAAmB",
+ "names": ["PieTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "PieValueConverter", "AbstractMermaidValueConverter", "rule", "input", "_cstNode", "PieModule", "createPieServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "Pie", "createDefaultCoreModule", "PieGeneratedModule"]
+}
diff --git a/docs/public/chunk-I6VG5SPK.min.js b/docs/public/chunk-I6VG5SPK.min.js
new file mode 100755
index 0000000..8a9c516
--- /dev/null
+++ b/docs/public/chunk-I6VG5SPK.min.js
@@ -0,0 +1,4 @@
+import{f as a}from"./chunk-LBFZT66H.min.js";var t={},o={info:a(async()=>{let{createInfoServices:e}=await import("./info-63CPKGFF-5MUB2N6Y.min.js"),r=e().Info.parser.LangiumParser;t.info=r},"info"),packet:a(async()=>{let{createPacketServices:e}=await import("./packet-HUATNLJX-RNXZU7WE.min.js"),r=e().Packet.parser.LangiumParser;t.packet=r},"packet"),pie:a(async()=>{let{createPieServices:e}=await import("./pie-WTHONI2E-GI627NZ2.min.js"),r=e().Pie.parser.LangiumParser;t.pie=r},"pie"),architecture:a(async()=>{let{createArchitectureServices:e}=await import("./architecture-O4VJ6CD3-GQAMQMPJ.min.js"),r=e().Architecture.parser.LangiumParser;t.architecture=r},"architecture"),gitGraph:a(async()=>{let{createGitGraphServices:e}=await import("./gitGraph-ZV4HHKMB-ZION4T7A.min.js"),r=e().GitGraph.parser.LangiumParser;t.gitGraph=r},"gitGraph"),radar:a(async()=>{let{createRadarServices:e}=await import("./radar-NJJJXTRR-ATVXO2RU.min.js"),r=e().Radar.parser.LangiumParser;t.radar=r},"radar"),treemap:a(async()=>{let{createTreemapServices:e}=await import("./treemap-75Q7IDZK-DQ2GXHQO.min.js"),r=e().Treemap.parser.LangiumParser;t.treemap=r},"treemap")};async function n(e,r){let i=o[e];if(!i)throw new Error(`Unknown diagram type: ${e}`);t[e]||await i();let s=t[e].parse(r);if(s.lexerErrors.length>0||s.parserErrors.length>0)throw new p(s);return s.value}a(n,"parse");var p=class extends Error{constructor(e){let r=e.lexerErrors.map(c=>c.message).join(`
+`),i=e.parserErrors.map(c=>c.message).join(`
+`);super(`Parsing failed: ${r} ${i}`),this.result=e}static{a(this,"MermaidParseError")}};export{n as a};
+//# sourceMappingURL=chunk-I6VG5SPK.min.js.map
diff --git a/docs/public/chunk-I6VG5SPK.min.js.map b/docs/public/chunk-I6VG5SPK.min.js.map
new file mode 100755
index 0000000..7468023
--- /dev/null
+++ b/docs/public/chunk-I6VG5SPK.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/@mermaid-js/parser/dist/mermaid-parser.core.mjs"],
+ "sourcesContent": ["import {\n GitGraphModule,\n createGitGraphServices\n} from \"./chunks/mermaid-parser.core/chunk-BN7GFLIU.mjs\";\nimport {\n InfoModule,\n createInfoServices\n} from \"./chunks/mermaid-parser.core/chunk-T44TD3VJ.mjs\";\nimport {\n PacketModule,\n createPacketServices\n} from \"./chunks/mermaid-parser.core/chunk-KMC2YHZD.mjs\";\nimport {\n PieModule,\n createPieServices\n} from \"./chunks/mermaid-parser.core/chunk-WFWHJNB7.mjs\";\nimport {\n ArchitectureModule,\n createArchitectureServices\n} from \"./chunks/mermaid-parser.core/chunk-JEIROHC2.mjs\";\nimport {\n RadarModule,\n createRadarServices\n} from \"./chunks/mermaid-parser.core/chunk-WFRQ32O7.mjs\";\nimport {\n TreemapModule,\n createTreemapServices\n} from \"./chunks/mermaid-parser.core/chunk-XRWGC2XP.mjs\";\nimport {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n Architecture,\n ArchitectureGeneratedModule,\n Branch,\n Commit,\n CommonTokenBuilder,\n CommonValueConverter,\n GitGraph,\n GitGraphGeneratedModule,\n Info,\n InfoGeneratedModule,\n Merge,\n MermaidGeneratedSharedModule,\n Packet,\n PacketBlock,\n PacketGeneratedModule,\n Pie,\n PieGeneratedModule,\n PieSection,\n Radar,\n RadarGeneratedModule,\n Statement,\n Treemap,\n TreemapGeneratedModule,\n __name,\n isArchitecture,\n isBranch,\n isCommit,\n isGitGraph,\n isInfo,\n isMerge,\n isPacket,\n isPacketBlock,\n isPie,\n isPieSection,\n isTreemap\n} from \"./chunks/mermaid-parser.core/chunk-4KMFLZZN.mjs\";\n\n// src/parse.ts\nvar parsers = {};\nvar initializers = {\n info: /* @__PURE__ */ __name(async () => {\n const { createInfoServices: createInfoServices2 } = await import(\"./chunks/mermaid-parser.core/info-63CPKGFF.mjs\");\n const parser = createInfoServices2().Info.parser.LangiumParser;\n parsers.info = parser;\n }, \"info\"),\n packet: /* @__PURE__ */ __name(async () => {\n const { createPacketServices: createPacketServices2 } = await import(\"./chunks/mermaid-parser.core/packet-HUATNLJX.mjs\");\n const parser = createPacketServices2().Packet.parser.LangiumParser;\n parsers.packet = parser;\n }, \"packet\"),\n pie: /* @__PURE__ */ __name(async () => {\n const { createPieServices: createPieServices2 } = await import(\"./chunks/mermaid-parser.core/pie-WTHONI2E.mjs\");\n const parser = createPieServices2().Pie.parser.LangiumParser;\n parsers.pie = parser;\n }, \"pie\"),\n architecture: /* @__PURE__ */ __name(async () => {\n const { createArchitectureServices: createArchitectureServices2 } = await import(\"./chunks/mermaid-parser.core/architecture-O4VJ6CD3.mjs\");\n const parser = createArchitectureServices2().Architecture.parser.LangiumParser;\n parsers.architecture = parser;\n }, \"architecture\"),\n gitGraph: /* @__PURE__ */ __name(async () => {\n const { createGitGraphServices: createGitGraphServices2 } = await import(\"./chunks/mermaid-parser.core/gitGraph-ZV4HHKMB.mjs\");\n const parser = createGitGraphServices2().GitGraph.parser.LangiumParser;\n parsers.gitGraph = parser;\n }, \"gitGraph\"),\n radar: /* @__PURE__ */ __name(async () => {\n const { createRadarServices: createRadarServices2 } = await import(\"./chunks/mermaid-parser.core/radar-NJJJXTRR.mjs\");\n const parser = createRadarServices2().Radar.parser.LangiumParser;\n parsers.radar = parser;\n }, \"radar\"),\n treemap: /* @__PURE__ */ __name(async () => {\n const { createTreemapServices: createTreemapServices2 } = await import(\"./chunks/mermaid-parser.core/treemap-75Q7IDZK.mjs\");\n const parser = createTreemapServices2().Treemap.parser.LangiumParser;\n parsers.treemap = parser;\n }, \"treemap\")\n};\nasync function parse(diagramType, text) {\n const initializer = initializers[diagramType];\n if (!initializer) {\n throw new Error(`Unknown diagram type: ${diagramType}`);\n }\n if (!parsers[diagramType]) {\n await initializer();\n }\n const parser = parsers[diagramType];\n const result = parser.parse(text);\n if (result.lexerErrors.length > 0 || result.parserErrors.length > 0) {\n throw new MermaidParseError(result);\n }\n return result.value;\n}\n__name(parse, \"parse\");\nvar MermaidParseError = class extends Error {\n constructor(result) {\n const lexerErrors = result.lexerErrors.map((err) => err.message).join(\"\\n\");\n const parserErrors = result.parserErrors.map((err) => err.message).join(\"\\n\");\n super(`Parsing failed: ${lexerErrors} ${parserErrors}`);\n this.result = result;\n }\n static {\n __name(this, \"MermaidParseError\");\n }\n};\nexport {\n AbstractMermaidTokenBuilder,\n AbstractMermaidValueConverter,\n Architecture,\n ArchitectureGeneratedModule,\n ArchitectureModule,\n Branch,\n Commit,\n CommonTokenBuilder,\n CommonValueConverter,\n GitGraph,\n GitGraphGeneratedModule,\n GitGraphModule,\n Info,\n InfoGeneratedModule,\n InfoModule,\n Merge,\n MermaidGeneratedSharedModule,\n MermaidParseError,\n Packet,\n PacketBlock,\n PacketGeneratedModule,\n PacketModule,\n Pie,\n PieGeneratedModule,\n PieModule,\n PieSection,\n Radar,\n RadarGeneratedModule,\n RadarModule,\n Statement,\n Treemap,\n TreemapGeneratedModule,\n TreemapModule,\n createArchitectureServices,\n createGitGraphServices,\n createInfoServices,\n createPacketServices,\n createPieServices,\n createRadarServices,\n createTreemapServices,\n isArchitecture,\n isBranch,\n isCommit,\n isGitGraph,\n isInfo,\n isMerge,\n isPacket,\n isPacketBlock,\n isPie,\n isPieSection,\n isTreemap,\n parse\n};\n"],
+ "mappings": "4CAqEA,IAAIA,EAAU,CAAC,EACXC,EAAe,CACjB,KAAsBC,EAAO,SAAY,CACvC,GAAM,CAAE,mBAAoBC,CAAoB,EAAI,KAAM,QAAO,iCAAgD,EAC3GC,EAASD,EAAoB,EAAE,KAAK,OAAO,cACjDH,EAAQ,KAAOI,CACjB,EAAG,MAAM,EACT,OAAwBF,EAAO,SAAY,CACzC,GAAM,CAAE,qBAAsBG,CAAsB,EAAI,KAAM,QAAO,mCAAkD,EACjHD,EAASC,EAAsB,EAAE,OAAO,OAAO,cACrDL,EAAQ,OAASI,CACnB,EAAG,QAAQ,EACX,IAAqBF,EAAO,SAAY,CACtC,GAAM,CAAE,kBAAmBI,CAAmB,EAAI,KAAM,QAAO,gCAA+C,EACxGF,EAASE,EAAmB,EAAE,IAAI,OAAO,cAC/CN,EAAQ,IAAMI,CAChB,EAAG,KAAK,EACR,aAA8BF,EAAO,SAAY,CAC/C,GAAM,CAAE,2BAA4BK,CAA4B,EAAI,KAAM,QAAO,yCAAwD,EACnIH,EAASG,EAA4B,EAAE,aAAa,OAAO,cACjEP,EAAQ,aAAeI,CACzB,EAAG,cAAc,EACjB,SAA0BF,EAAO,SAAY,CAC3C,GAAM,CAAE,uBAAwBM,CAAwB,EAAI,KAAM,QAAO,qCAAoD,EACvHJ,EAASI,EAAwB,EAAE,SAAS,OAAO,cACzDR,EAAQ,SAAWI,CACrB,EAAG,UAAU,EACb,MAAuBF,EAAO,SAAY,CACxC,GAAM,CAAE,oBAAqBO,CAAqB,EAAI,KAAM,QAAO,kCAAiD,EAC9GL,EAASK,EAAqB,EAAE,MAAM,OAAO,cACnDT,EAAQ,MAAQI,CAClB,EAAG,OAAO,EACV,QAAyBF,EAAO,SAAY,CAC1C,GAAM,CAAE,sBAAuBQ,CAAuB,EAAI,KAAM,QAAO,oCAAmD,EACpHN,EAASM,EAAuB,EAAE,QAAQ,OAAO,cACvDV,EAAQ,QAAUI,CACpB,EAAG,SAAS,CACd,EACA,eAAeO,EAAMC,EAAaC,EAAM,CACtC,IAAMC,EAAcb,EAAaW,CAAW,EAC5C,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,yBAAyBF,CAAW,EAAE,EAEnDZ,EAAQY,CAAW,GACtB,MAAME,EAAY,EAGpB,IAAMC,EADSf,EAAQY,CAAW,EACZ,MAAMC,CAAI,EAChC,GAAIE,EAAO,YAAY,OAAS,GAAKA,EAAO,aAAa,OAAS,EAChE,MAAM,IAAIC,EAAkBD,CAAM,EAEpC,OAAOA,EAAO,KAChB,CACAb,EAAOS,EAAO,OAAO,EACrB,IAAIK,EAAoB,cAAc,KAAM,CAC1C,YAAYD,EAAQ,CAClB,IAAME,EAAcF,EAAO,YAAY,IAAKG,GAAQA,EAAI,OAAO,EAAE,KAAK;AAAA,CAAI,EACpEC,EAAeJ,EAAO,aAAa,IAAKG,GAAQA,EAAI,OAAO,EAAE,KAAK;AAAA,CAAI,EAC5E,MAAM,mBAAmBD,CAAW,IAAIE,CAAY,EAAE,EACtD,KAAK,OAASJ,CAChB,CACA,MAAO,CACLb,EAAO,KAAM,mBAAmB,CAClC,CACF",
+ "names": ["parsers", "initializers", "__name", "createInfoServices2", "parser", "createPacketServices2", "createPieServices2", "createArchitectureServices2", "createGitGraphServices2", "createRadarServices2", "createTreemapServices2", "parse", "diagramType", "text", "initializer", "result", "MermaidParseError", "lexerErrors", "err", "parserErrors"]
+}
diff --git a/docs/public/chunk-IDQ2RCY2.min.js b/docs/public/chunk-IDQ2RCY2.min.js
new file mode 100755
index 0000000..c7ae19b
--- /dev/null
+++ b/docs/public/chunk-IDQ2RCY2.min.js
@@ -0,0 +1,55 @@
+import{a as Zt}from"./chunk-ANLQN3B7.min.js";import{a as Me,b as Mt,d as T,e as W}from"./chunk-OEBO5CRK.min.js";import{d as vt,g as ht}from"./chunk-XCAVDAZC.min.js";import{i as kt,k as ke,o as xt,q as U}from"./chunk-QZZKR5JD.min.js";import{D as Lt,F as J,G as Xt,H as Yt,J as Se,K as $e,W as V,Z as Vt,q as we,y as mt}from"./chunk-3EE2TK35.min.js";import{b as $,d as F,j as Y}from"./chunk-6TVUEPFY.min.js";function Qt(o,t,i){if(o&&o.length){let[a,e]=t,r=Math.PI/180*i,h=Math.cos(r),s=Math.sin(r);for(let c of o){let[n,l]=c;c[0]=(n-a)*h-(l-e)*s+a,c[1]=(n-a)*s+(l-e)*h+e}}}function ia(o,t){return o[0]===t[0]&&o[1]===t[1]}function la(o,t,i,a=1){let e=i,r=Math.max(t,.1),h=o[0]&&o[0][0]&&typeof o[0][0]=="number"?[o]:o,s=[0,0];if(e)for(let n of h)Qt(n,s,e);let c=(function(n,l,g){let f=[];for(let x of n){let b=[...x];ia(b[0],b[b.length-1])||b.push([b[0][0],b[0][1]]),b.length>2&&f.push(b)}let p=[];l=Math.max(l,.1);let u=[];for(let x of f)for(let b=0;bx.yminb.ymin?1:x.xb.x?1:x.ymax===b.ymax?0:(x.ymax-b.ymax)/Math.abs(x.ymax-b.ymax))),!u.length)return p;let y=[],m=u[0].ymin,d=0;for(;y.length||u.length;){if(u.length){let x=-1;for(let b=0;bm);b++)x=b;u.splice(0,x+1).forEach((b=>{y.push({s:m,edge:b})}))}if(y=y.filter((x=>!(x.edge.ymax<=m))),y.sort(((x,b)=>x.edge.x===b.edge.x?0:(x.edge.x-b.edge.x)/Math.abs(x.edge.x-b.edge.x))),(g!==1||d%l==0)&&y.length>1)for(let x=0;x=y.length)break;let M=y[x].edge,w=y[b].edge;p.push([[Math.round(M.x),m],[Math.round(w.x),m]])}m+=g,y.forEach((x=>{x.edge.x=x.edge.x+g*x.edge.islope})),d++}return p})(h,r,a);if(e){for(let n of h)Qt(n,s,-e);(function(n,l,g){let f=[];n.forEach((p=>f.push(...p))),Qt(f,l,g)})(c,s,-e)}return c}function Ct(o,t){var i;let a=t.hachureAngle+90,e=t.hachureGap;e<0&&(e=4*t.strokeWidth),e=Math.round(Math.max(e,.1));let r=1;return t.roughness>=1&&(((i=t.randomizer)===null||i===void 0?void 0:i.next())||Math.random())>.7&&(r=e),la(o,e,a,r||1)}var Bt=class{constructor(t){this.helper=t}fillPolygons(t,i){return this._fillPolygons(t,i)}_fillPolygons(t,i){let a=Ct(t,i);return{type:"fillSketch",ops:this.renderLines(a,i)}}renderLines(t,i){let a=[];for(let e of t)a.push(...this.helper.doubleLineOps(e[0][0],e[0][1],e[1][0],e[1][1],i));return a}};function jt(o){let t=o[0],i=o[1];return Math.sqrt(Math.pow(t[0]-i[0],2)+Math.pow(t[1]-i[1],2))}var ee=class extends Bt{fillPolygons(t,i){let a=i.hachureGap;a<0&&(a=4*i.strokeWidth),a=Math.max(a,.1);let e=Ct(t,Object.assign({},i,{hachureGap:a})),r=Math.PI/180*i.hachureAngle,h=[],s=.5*a*Math.cos(r),c=.5*a*Math.sin(r);for(let[n,l]of e)jt([n,l])&&h.push([[n[0]-s,n[1]+c],[...l]],[[n[0]+s,n[1]-c],[...l]]);return{type:"fillSketch",ops:this.renderLines(h,i)}}},se=class extends Bt{fillPolygons(t,i){let a=this._fillPolygons(t,i),e=Object.assign({},i,{hachureAngle:i.hachureAngle+90}),r=this._fillPolygons(t,e);return a.ops=a.ops.concat(r.ops),a}},ae=class{constructor(t){this.helper=t}fillPolygons(t,i){let a=Ct(t,i=Object.assign({},i,{hachureAngle:0}));return this.dotsOnLines(a,i)}dotsOnLines(t,i){let a=[],e=i.hachureGap;e<0&&(e=4*i.strokeWidth),e=Math.max(e,.1);let r=i.fillWeight;r<0&&(r=i.strokeWidth/2);let h=e/4;for(let s of t){let c=jt(s),n=c/e,l=Math.ceil(n)-1,g=c-l*e,f=(s[0][0]+s[1][0])/2-e/4,p=Math.min(s[0][1],s[1][1]);for(let u=0;u{let s=jt(h),c=Math.floor(s/(a+e)),n=(s+e-c*(a+e))/2,l=h[0],g=h[1];l[0]>g[0]&&(l=h[1],g=h[0]);let f=Math.atan((g[1]-l[1])/(g[0]-l[0]));for(let p=0;p{let h=jt(r),s=Math.round(h/(2*i)),c=r[0],n=r[1];c[0]>n[0]&&(c=r[1],n=r[0]);let l=Math.atan((n[1]-c[1])/(n[0]-c[0]));for(let g=0;gl%2?n+i:n+t));r.push({key:"C",data:c}),t=c[4],i=c[5];break}case"Q":r.push({key:"Q",data:[...s]}),t=s[2],i=s[3];break;case"q":{let c=s.map(((n,l)=>l%2?n+i:n+t));r.push({key:"Q",data:c}),t=c[2],i=c[3];break}case"A":r.push({key:"A",data:[...s]}),t=s[5],i=s[6];break;case"a":t+=s[5],i+=s[6],r.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,i]});break;case"H":r.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],r.push({key:"H",data:[t]});break;case"V":r.push({key:"V",data:[...s]}),i=s[0];break;case"v":i+=s[0],r.push({key:"V",data:[i]});break;case"S":r.push({key:"S",data:[...s]}),t=s[2],i=s[3];break;case"s":{let c=s.map(((n,l)=>l%2?n+i:n+t));r.push({key:"S",data:c}),t=c[2],i=c[3];break}case"T":r.push({key:"T",data:[...s]}),t=s[0],i=s[1];break;case"t":t+=s[0],i+=s[1],r.push({key:"T",data:[t,i]});break;case"Z":case"z":r.push({key:"Z",data:[]}),t=a,i=e}return r}function We(o){let t=[],i="",a=0,e=0,r=0,h=0,s=0,c=0;for(let{key:n,data:l}of o){switch(n){case"M":t.push({key:"M",data:[...l]}),[a,e]=l,[r,h]=l;break;case"C":t.push({key:"C",data:[...l]}),a=l[4],e=l[5],s=l[2],c=l[3];break;case"L":t.push({key:"L",data:[...l]}),[a,e]=l;break;case"H":a=l[0],t.push({key:"L",data:[a,e]});break;case"V":e=l[0],t.push({key:"L",data:[a,e]});break;case"S":{let g=0,f=0;i==="C"||i==="S"?(g=a+(a-s),f=e+(e-c)):(g=a,f=e),t.push({key:"C",data:[g,f,...l]}),s=l[0],c=l[1],a=l[2],e=l[3];break}case"T":{let[g,f]=l,p=0,u=0;i==="Q"||i==="T"?(p=a+(a-s),u=e+(e-c)):(p=a,u=e);let y=a+2*(p-a)/3,m=e+2*(u-e)/3,d=g+2*(p-g)/3,x=f+2*(u-f)/3;t.push({key:"C",data:[y,m,d,x,g,f]}),s=p,c=u,a=g,e=f;break}case"Q":{let[g,f,p,u]=l,y=a+2*(g-a)/3,m=e+2*(f-e)/3,d=p+2*(g-p)/3,x=u+2*(f-u)/3;t.push({key:"C",data:[y,m,d,x,p,u]}),s=g,c=f,a=p,e=u;break}case"A":{let g=Math.abs(l[0]),f=Math.abs(l[1]),p=l[2],u=l[3],y=l[4],m=l[5],d=l[6];g===0||f===0?(t.push({key:"C",data:[a,e,m,d,m,d]}),a=m,e=d):(a!==m||e!==d)&&(Te(a,e,m,d,g,f,p,u,y).forEach((function(x){t.push({key:"C",data:x})})),a=m,e=d);break}case"Z":t.push({key:"Z",data:[]}),a=r,e=h}i=n}return t}function Dt(o,t,i){return[o*Math.cos(i)-t*Math.sin(i),o*Math.sin(i)+t*Math.cos(i)]}function Te(o,t,i,a,e,r,h,s,c,n){let l=(g=h,Math.PI*g/180);var g;let f=[],p=0,u=0,y=0,m=0;if(n)[p,u,y,m]=n;else{[o,t]=Dt(o,t,-l),[i,a]=Dt(i,a,-l);let P=(o-i)/2,C=(t-a)/2,E=P*P/(e*e)+C*C/(r*r);E>1&&(E=Math.sqrt(E),e*=E,r*=E);let R=e*e,O=r*r,z=R*O-R*C*C-O*P*P,Z=R*C*C+O*P*P,rt=(s===c?-1:1)*Math.sqrt(Math.abs(z/Z));y=rt*e*C/r+(o+i)/2,m=rt*-r*P/e+(t+a)/2,p=Math.asin(parseFloat(((t-m)/r).toFixed(9))),u=Math.asin(parseFloat(((a-m)/r).toFixed(9))),ou&&(p-=2*Math.PI),!c&&u>p&&(u-=2*Math.PI)}let d=u-p;if(Math.abs(d)>120*Math.PI/180){let P=u,C=i,E=a;u=c&&u>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,f=Te(i=y+e*Math.cos(u),a=m+r*Math.sin(u),C,E,e,r,h,0,c,[u,P,y,m])}d=u-p;let x=Math.cos(p),b=Math.sin(p),M=Math.cos(u),w=Math.sin(u),k=Math.tan(d/4),v=4/3*e*k,D=4/3*r*k,B=[o,t],L=[o+v*b,t-D*x],A=[i+v*w,a-D*M],I=[i,a];if(L[0]=2*B[0]-L[0],L[1]=2*B[1]-L[1],n)return[L,A,I].concat(f);{f=[L,A,I].concat(f);let P=[];for(let C=0;C2){let e=[];for(let r=0;r2*Math.PI&&(p=0,u=2*Math.PI);let y=2*Math.PI/c.curveStepCount,m=Math.min(y/2,(u-p)/2),d=Re(m,n,l,g,f,p,u,1,c);if(!c.disableMultiStroke){let x=Re(m,n,l,g,f,p,u,1.5,c);d.push(...x)}return h&&(s?d.push(...gt(n,l,n+g*Math.cos(p),l+f*Math.sin(p),c),...gt(n,l,n+g*Math.cos(u),l+f*Math.sin(u),c)):d.push({op:"lineTo",data:[n,l]},{op:"lineTo",data:[n+g*Math.cos(p),l+f*Math.sin(p)]})),{type:"path",ops:d}}function Be(o,t){let i=We(Le(pe(o))),a=[],e=[0,0],r=[0,0];for(let{key:h,data:s}of i)switch(h){case"M":r=[s[0],s[1]],e=[s[0],s[1]];break;case"L":a.push(...gt(r[0],r[1],s[0],s[1],t)),r=[s[0],s[1]];break;case"C":{let[c,n,l,g,f,p]=s;a.push(...ga(c,n,l,g,f,p,r,t)),r=[f,p];break}case"Z":a.push(...gt(r[0],r[1],e[0],e[1],t)),r=[e[0],e[1]]}return{type:"path",ops:a}}function Ut(o,t){let i=[];for(let a of o)if(a.length){let e=t.maxRandomnessOffset||0,r=a.length;if(r>2){i.push({op:"move",data:[a[0][0]+j(e,t),a[0][1]+j(e,t)]});for(let h=1;h500?.4:-.0016668*c+1.233334;let l=e.maxRandomnessOffset||0;l*l*100>s&&(l=c/10);let g=l/2,f=.2+.2*Ee(e),p=e.bowing*e.maxRandomnessOffset*(a-t)/200,u=e.bowing*e.maxRandomnessOffset*(o-i)/200;p=j(p,e,n),u=j(u,e,n);let y=[],m=()=>j(g,e,n),d=()=>j(l,e,n),x=e.preserveVertices;return r&&(h?y.push({op:"move",data:[o+(x?0:m()),t+(x?0:m())]}):y.push({op:"move",data:[o+(x?0:j(l,e,n)),t+(x?0:j(l,e,n))]})),h?y.push({op:"bcurveTo",data:[p+o+(i-o)*f+m(),u+t+(a-t)*f+m(),p+o+2*(i-o)*f+m(),u+t+2*(a-t)*f+m(),i+(x?0:m()),a+(x?0:m())]}):y.push({op:"bcurveTo",data:[p+o+(i-o)*f+d(),u+t+(a-t)*f+d(),p+o+2*(i-o)*f+d(),u+t+2*(a-t)*f+d(),i+(x?0:d()),a+(x?0:d())]}),y}function Tt(o,t,i){if(!o.length)return[];let a=[];a.push([o[0][0]+j(t,i),o[0][1]+j(t,i)]),a.push([o[0][0]+j(t,i),o[0][1]+j(t,i)]);for(let e=1;e3){let r=[],h=1-i.curveTightness;e.push({op:"move",data:[o[1][0],o[1][1]]});for(let s=1;s+21&&e.push(s)):e.push(s),e.push(o[t+3])}else{let c=o[t+0],n=o[t+1],l=o[t+2],g=o[t+3],f=dt(c,n,.5),p=dt(n,l,.5),u=dt(l,g,.5),y=dt(f,p,.5),m=dt(p,u,.5),d=dt(y,m,.5);oe([c,f,y,d],0,i,e),oe([d,m,u,g],0,i,e)}var r,h;return e}function fa(o,t){return zt(o,0,o.length,t)}function zt(o,t,i,a,e){let r=e||[],h=o[t],s=o[i-1],c=0,n=1;for(let l=t+1;lc&&(c=g,n=l)}return Math.sqrt(c)>a?(zt(o,t,n+1,a,r),zt(o,n,i,a,r)):(r.length||r.push(h),r.push(s)),r}function te(o,t=.15,i){let a=[],e=(o.length-1)/3;for(let r=0;r0?zt(a,0,a.length,i):a}var at="none",wt=class{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,i,a){return{shape:t,sets:i||[],options:a||this.defaultOptions}}line(t,i,a,e,r){let h=this._o(r);return this._d("line",[He(t,i,a,e,h)],h)}rectangle(t,i,a,e,r){let h=this._o(r),s=[],c=ha(t,i,a,e,h);if(h.fill){let n=[[t,i],[t+a,i],[t+a,i+e],[t,i+e]];h.fillStyle==="solid"?s.push(Ut([n],h)):s.push(bt([n],h))}return h.stroke!==at&&s.push(c),this._d("rectangle",s,h)}ellipse(t,i,a,e,r){let h=this._o(r),s=[],c=Ie(a,e,h),n=le(t,i,h,c);if(h.fill)if(h.fillStyle==="solid"){let l=le(t,i,h,c).opset;l.type="fillPath",s.push(l)}else s.push(bt([n.estimatedPoints],h));return h.stroke!==at&&s.push(n.opset),this._d("ellipse",s,h)}circle(t,i,a,e){let r=this.ellipse(t,i,a,a,e);return r.shape="circle",r}linearPath(t,i){let a=this._o(i);return this._d("linearPath",[It(t,!1,a)],a)}arc(t,i,a,e,r,h,s=!1,c){let n=this._o(c),l=[],g=Pe(t,i,a,e,r,h,s,!0,n);if(s&&n.fill)if(n.fillStyle==="solid"){let f=Object.assign({},n);f.disableMultiStroke=!0;let p=Pe(t,i,a,e,r,h,!0,!1,f);p.type="fillPath",l.push(p)}else l.push((function(f,p,u,y,m,d,x){let b=f,M=p,w=Math.abs(u/2),k=Math.abs(y/2);w+=j(.01*w,x),k+=j(.01*k,x);let v=m,D=d;for(;v<0;)v+=2*Math.PI,D+=2*Math.PI;D-v>2*Math.PI&&(v=0,D=2*Math.PI);let B=(D-v)/x.curveStepCount,L=[];for(let A=v;A<=D;A+=B)L.push([b+w*Math.cos(A),M+k*Math.sin(A)]);return L.push([b+w*Math.cos(D),M+k*Math.sin(D)]),L.push([b,M]),bt([L],x)})(t,i,a,e,r,h,n));return n.stroke!==at&&l.push(g),this._d("arc",l,n)}curve(t,i){let a=this._o(i),e=[],r=De(t,a);if(a.fill&&a.fill!==at)if(a.fillStyle==="solid"){let h=De(t,Object.assign(Object.assign({},a),{disableMultiStroke:!0,roughness:a.roughness?a.roughness+a.fillShapeRoughnessGain:0}));e.push({type:"fillPath",ops:this._mergedShape(h.ops)})}else{let h=[],s=t;if(s.length){let c=typeof s[0][0]=="number"?[s]:s;for(let n of c)n.length<3?h.push(...n):n.length===3?h.push(...te(Ae([n[0],n[0],n[1],n[2]]),10,(1+a.roughness)/2)):h.push(...te(Ae(n),10,(1+a.roughness)/2))}h.length&&e.push(bt([h],a))}return a.stroke!==at&&e.push(r),this._d("curve",e,a)}polygon(t,i){let a=this._o(i),e=[],r=It(t,!0,a);return a.fill&&(a.fillStyle==="solid"?e.push(Ut([t],a)):e.push(bt([t],a))),a.stroke!==at&&e.push(r),this._d("polygon",e,a)}path(t,i){let a=this._o(i),e=[];if(!t)return this._d("path",e,a);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let r=a.fill&&a.fill!=="transparent"&&a.fill!==at,h=a.stroke!==at,s=!!(a.simplification&&a.simplification<1),c=(function(l,g,f){let p=We(Le(pe(l))),u=[],y=[],m=[0,0],d=[],x=()=>{d.length>=4&&y.push(...te(d,g)),d=[]},b=()=>{x(),y.length&&(u.push(y),y=[])};for(let{key:w,data:k}of p)switch(w){case"M":b(),m=[k[0],k[1]],y.push(m);break;case"L":x(),y.push([k[0],k[1]]);break;case"C":if(!d.length){let v=y.length?y[y.length-1]:m;d.push([v[0],v[1]])}d.push([k[0],k[1]]),d.push([k[2],k[3]]),d.push([k[4],k[5]]);break;case"Z":x(),y.push([m[0],m[1]])}if(b(),!f)return u;let M=[];for(let w of u){let k=fa(w,f);k.length&&M.push(k)}return M})(t,1,s?4-4*(a.simplification||1):(1+a.roughness)/2),n=Be(t,a);if(r)if(a.fillStyle==="solid")if(c.length===1){let l=Be(t,Object.assign(Object.assign({},a),{disableMultiStroke:!0,roughness:a.roughness?a.roughness+a.fillShapeRoughnessGain:0}));e.push({type:"fillPath",ops:this._mergedShape(l.ops)})}else e.push(Ut(c,a));else e.push(bt(c,a));return h&&(s?c.forEach((l=>{e.push(It(l,!1,a))})):e.push(n)),this._d("path",e,a)}opsToPath(t,i){let a="";for(let e of t.ops){let r=typeof i=="number"&&i>=0?e.data.map((h=>+h.toFixed(i))):e.data;switch(e.op){case"move":a+=`M${r[0]} ${r[1]} `;break;case"bcurveTo":a+=`C${r[0]} ${r[1]}, ${r[2]} ${r[3]}, ${r[4]} ${r[5]} `;break;case"lineTo":a+=`L${r[0]} ${r[1]} `}}return a.trim()}toPaths(t){let i=t.sets||[],a=t.options||this.defaultOptions,e=[];for(let r of i){let h=null;switch(r.type){case"path":h={d:this.opsToPath(r),stroke:a.stroke,strokeWidth:a.strokeWidth,fill:at};break;case"fillPath":h={d:this.opsToPath(r),stroke:at,strokeWidth:0,fill:a.fill||at};break;case"fillSketch":h=this.fillSketch(r,a)}h&&e.push(h)}return e}fillSketch(t,i){let a=i.fillWeight;return a<0&&(a=i.strokeWidth/2),{d:this.opsToPath(t),stroke:i.fill||at,strokeWidth:a,fill:at}}_mergedShape(t){return t.filter(((i,a)=>a===0||i.op!=="move"))}},he=class{constructor(t,i){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new wt(i)}draw(t){let i=t.sets||[],a=t.options||this.getDefaultOptions(),e=this.ctx,r=t.options.fixedDecimalPlaceDigits;for(let h of i)switch(h.type){case"path":e.save(),e.strokeStyle=a.stroke==="none"?"transparent":a.stroke,e.lineWidth=a.strokeWidth,a.strokeLineDash&&e.setLineDash(a.strokeLineDash),a.strokeLineDashOffset&&(e.lineDashOffset=a.strokeLineDashOffset),this._drawToContext(e,h,r),e.restore();break;case"fillPath":{e.save(),e.fillStyle=a.fill||"";let s=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(e,h,r,s),e.restore();break}case"fillSketch":this.fillSketch(e,h,a)}}fillSketch(t,i,a){let e=a.fillWeight;e<0&&(e=a.strokeWidth/2),t.save(),a.fillLineDash&&t.setLineDash(a.fillLineDash),a.fillLineDashOffset&&(t.lineDashOffset=a.fillLineDashOffset),t.strokeStyle=a.fill||"",t.lineWidth=e,this._drawToContext(t,i,a.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,i,a,e="nonzero"){t.beginPath();for(let r of i.ops){let h=typeof a=="number"&&a>=0?r.data.map((s=>+s.toFixed(a))):r.data;switch(r.op){case"move":t.moveTo(h[0],h[1]);break;case"bcurveTo":t.bezierCurveTo(h[0],h[1],h[2],h[3],h[4],h[5]);break;case"lineTo":t.lineTo(h[0],h[1])}}i.type==="fillPath"?t.fill(e):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,i,a,e,r){let h=this.gen.line(t,i,a,e,r);return this.draw(h),h}rectangle(t,i,a,e,r){let h=this.gen.rectangle(t,i,a,e,r);return this.draw(h),h}ellipse(t,i,a,e,r){let h=this.gen.ellipse(t,i,a,e,r);return this.draw(h),h}circle(t,i,a,e){let r=this.gen.circle(t,i,a,e);return this.draw(r),r}linearPath(t,i){let a=this.gen.linearPath(t,i);return this.draw(a),a}polygon(t,i){let a=this.gen.polygon(t,i);return this.draw(a),a}arc(t,i,a,e,r,h,s=!1,c){let n=this.gen.arc(t,i,a,e,r,h,s,c);return this.draw(n),n}curve(t,i){let a=this.gen.curve(t,i);return this.draw(a),a}path(t,i){let a=this.gen.path(t,i);return this.draw(a),a}},Ht="http://www.w3.org/2000/svg",ge=class{constructor(t,i){this.svg=t,this.gen=new wt(i)}draw(t){let i=t.sets||[],a=t.options||this.getDefaultOptions(),e=this.svg.ownerDocument||window.document,r=e.createElementNS(Ht,"g"),h=t.options.fixedDecimalPlaceDigits;for(let s of i){let c=null;switch(s.type){case"path":c=e.createElementNS(Ht,"path"),c.setAttribute("d",this.opsToPath(s,h)),c.setAttribute("stroke",a.stroke),c.setAttribute("stroke-width",a.strokeWidth+""),c.setAttribute("fill","none"),a.strokeLineDash&&c.setAttribute("stroke-dasharray",a.strokeLineDash.join(" ").trim()),a.strokeLineDashOffset&&c.setAttribute("stroke-dashoffset",`${a.strokeLineDashOffset}`);break;case"fillPath":c=e.createElementNS(Ht,"path"),c.setAttribute("d",this.opsToPath(s,h)),c.setAttribute("stroke","none"),c.setAttribute("stroke-width","0"),c.setAttribute("fill",a.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||c.setAttribute("fill-rule","evenodd");break;case"fillSketch":c=this.fillSketch(e,s,a)}c&&r.appendChild(c)}return r}fillSketch(t,i,a){let e=a.fillWeight;e<0&&(e=a.strokeWidth/2);let r=t.createElementNS(Ht,"path");return r.setAttribute("d",this.opsToPath(i,a.fixedDecimalPlaceDigits)),r.setAttribute("stroke",a.fill||""),r.setAttribute("stroke-width",e+""),r.setAttribute("fill","none"),a.fillLineDash&&r.setAttribute("stroke-dasharray",a.fillLineDash.join(" ").trim()),a.fillLineDashOffset&&r.setAttribute("stroke-dashoffset",`${a.fillLineDashOffset}`),r}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,i){return this.gen.opsToPath(t,i)}line(t,i,a,e,r){let h=this.gen.line(t,i,a,e,r);return this.draw(h)}rectangle(t,i,a,e,r){let h=this.gen.rectangle(t,i,a,e,r);return this.draw(h)}ellipse(t,i,a,e,r){let h=this.gen.ellipse(t,i,a,e,r);return this.draw(h)}circle(t,i,a,e){let r=this.gen.circle(t,i,a,e);return this.draw(r)}linearPath(t,i){let a=this.gen.linearPath(t,i);return this.draw(a)}polygon(t,i){let a=this.gen.polygon(t,i);return this.draw(a)}arc(t,i,a,e,r,h,s=!1,c){let n=this.gen.arc(t,i,a,e,r,h,s,c);return this.draw(n)}curve(t,i){let a=this.gen.curve(t,i);return this.draw(a)}path(t,i){let a=this.gen.path(t,i);return this.draw(a)}},S={canvas:(o,t)=>new he(o,t),svg:(o,t)=>new ge(o,t),generator:o=>new wt(o),newSeed:()=>wt.newSeed()};var G=$(async(o,t,i)=>{let a,e=t.useHtmlLabels||J(V()?.htmlLabels);i?a=i:a="node default";let r=o.insert("g").attr("class",a).attr("id",t.domId||t.id),h=r.insert("g").attr("class","label").attr("style",U(t.labelStyle)),s;t.label===void 0?s="":s=typeof t.label=="string"?t.label:t.label[0];let c=await ht(h,Lt(xt(s),V()),{useHtmlLabels:e,width:t.width||V().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:t.labelStyle,addSvgBackground:!!t.icon||!!t.img}),n=c.getBBox(),l=(t?.padding??0)/2;if(e){let g=c.children[0],f=Y(c),p=g.getElementsByTagName("img");if(p){let u=s.replace(/ ]*>/g,"").trim()==="";await Promise.all([...p].map(y=>new Promise(m=>{function d(){if(y.style.display="flex",y.style.flexDirection="column",u){let x=V().fontSize?V().fontSize:window.getComputedStyle(document.body).fontSize,b=5,[M=we.fontSize]=ke(x),w=M*b+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";m(y)}$(d,"setupImage"),setTimeout(()=>{y.complete&&d()}),y.addEventListener("error",d),y.addEventListener("load",d)})))}n=g.getBoundingClientRect(),f.attr("width",n.width),f.attr("height",n.height)}return e?h.attr("transform","translate("+-n.width/2+", "+-n.height/2+")"):h.attr("transform","translate(0, "+-n.height/2+")"),t.centerLabel&&h.attr("transform","translate("+-n.width/2+", "+-n.height/2+")"),h.insert("rect",":first-child"),{shapeSvg:r,bbox:n,halfPadding:l,label:h}},"labelHelper"),fe=$(async(o,t,i)=>{let a=i.useHtmlLabels||J(V()?.flowchart?.htmlLabels),e=o.insert("g").attr("class","label").attr("style",i.labelStyle||""),r=await ht(e,Lt(xt(t),V()),{useHtmlLabels:a,width:i.width||V()?.flowchart?.wrappingWidth,style:i.labelStyle,addSvgBackground:!!i.icon||!!i.img}),h=r.getBBox(),s=i.padding/2;if(J(V()?.flowchart?.htmlLabels)){let c=r.children[0],n=Y(r);h=c.getBoundingClientRect(),n.attr("width",h.width),n.attr("height",h.height)}return a?e.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):e.attr("transform","translate(0, "+-h.height/2+")"),i.centerLabel&&e.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),e.insert("rect",":first-child"),{shapeSvg:o,bbox:h,halfPadding:s,label:e}},"insertLabel"),H=$((o,t)=>{let i=t.node().getBBox();o.width=i.width,o.height=i.height},"updateNodeBounds"),_=$((o,t)=>(o.look==="handDrawn"?"rough-node":"node")+" "+o.cssClasses+" "+(t||""),"getNodeClasses");function q(o){let t=o.map((i,a)=>`${a===0?"M":"L"}${i.x},${i.y}`);return t.push("Z"),t.join(" ")}$(q,"createPathFromPoints");function pt(o,t,i,a,e,r){let h=[],c=i-o,n=a-t,l=c/r,g=2*Math.PI/l,f=t+n/2;for(let p=0;p<=50;p++){let u=p/50,y=o+u*c,m=f+e*Math.sin(g*(y-o));h.push({x:y,y:m})}return h}$(pt,"generateFullSineWavePoints");function At(o,t,i,a,e,r){let h=[],s=e*Math.PI/180,l=(r*Math.PI/180-s)/(a-1);for(let g=0;g{var i=o.x,a=o.y,e=t.x-i,r=t.y-a,h=o.width/2,s=o.height/2,c,n;return Math.abs(r)*h>Math.abs(e)*s?(r<0&&(s=-s),c=r===0?0:s*e/r,n=s):(e<0&&(h=-h),c=h,n=e===0?0:h*r/e),{x:i+c,y:a+n}},"intersectRect"),$t=ua;function Oe(o,t){t&&o.attr("style",t)}$(Oe,"applyStyle");async function _e(o){let t=Y(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),i=t.append("xhtml:div"),a=V(),e=o.label;o.label&&Yt(o.label)&&(e=await Se(o.label.replace($e.lineBreakRegex,`
+`),a));let h='"+e+" ";return i.html(Lt(h,a)),Oe(i,o.labelStyle),i.style("display","inline-block"),i.style("padding-right","1px"),i.style("white-space","nowrap"),i.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}$(_e,"addHtmlLabel");var ya=$(async(o,t,i,a)=>{let e=o||"";if(typeof e=="object"&&(e=e[0]),J(V().flowchart.htmlLabels)){e=e.replace(/\\n|\n/g," "),F.info("vertexText"+e);let r={isNode:a,label:xt(e).replace(/fa[blrs]?:fa-[\w-]+/g,s=>` `),labelStyle:t&&t.replace("fill:","color:")};return await _e(r)}else{let r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("style",t.replace("color:","fill:"));let h=[];typeof e=="string"?h=e.split(/\\n|\n| /gi):Array.isArray(e)?h=e:h=[];for(let s of h){let c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),i?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=s.trim(),r.appendChild(c)}return r}},"createLabel"),ue=ya,ft=$((o,t,i,a,e)=>["M",o+e,t,"H",o+i-e,"A",e,e,0,0,1,o+i,t+e,"V",t+a-e,"A",e,e,0,0,1,o+i-e,t+a,"H",o+e,"A",e,e,0,0,1,o,t+a-e,"V",t+e,"A",e,e,0,0,1,o+e,t,"Z"].join(" "),"createRoundedRectPathD"),ze=$(async(o,t)=>{F.info("Creating subgraph rect for ",t.id,t);let i=V(),{themeVariables:a,handDrawnSeed:e}=i,{clusterBkg:r,clusterBorder:h}=a,{labelStyles:s,nodeStyles:c,borderStyles:n,backgroundStyles:l}=T(t),g=o.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=J(i.flowchart.htmlLabels),p=g.insert("g").attr("class","cluster-label "),u=await ht(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0}),y=u.getBBox();if(J(i.flowchart.htmlLabels)){let v=u.children[0],D=Y(u);y=v.getBoundingClientRect(),D.attr("width",y.width),D.attr("height",y.height)}let m=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(m-t.width)/2-t.padding:t.diff=-t.padding;let d=t.height,x=t.x-m/2,b=t.y-d/2;F.trace("Data ",t,JSON.stringify(t));let M;if(t.look==="handDrawn"){let v=S.svg(g),D=W(t,{roughness:.7,fill:r,stroke:h,fillWeight:3,seed:e}),B=v.path(ft(x,b,m,d,0),D);M=g.insert(()=>(F.debug("Rough node insert CXC",B),B),":first-child"),M.select("path:nth-child(2)").attr("style",n.join(";")),M.select("path").attr("style",l.join(";").replace("fill","stroke"))}else M=g.insert("rect",":first-child"),M.attr("style",c).attr("rx",t.rx).attr("ry",t.ry).attr("x",x).attr("y",b).attr("width",m).attr("height",d);let{subGraphTitleTopMargin:w}=Zt(i);if(p.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+w})`),s){let v=p.select("span");v&&v.attr("style",s)}let k=M.node().getBBox();return t.offsetX=0,t.width=k.width,t.height=k.height,t.offsetY=y.height-t.padding/2,t.intersect=function(v){return $t(t,v)},{cluster:g,labelBBox:y}},"rect"),da=$((o,t)=>{let i=o.insert("g").attr("class","note-cluster").attr("id",t.id),a=i.insert("rect",":first-child"),e=0*t.padding,r=e/2;a.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-r).attr("y",t.y-t.height/2-r).attr("width",t.width+e).attr("height",t.height+e).attr("fill","none");let h=a.node().getBBox();return t.width=h.width,t.height=h.height,t.intersect=function(s){return $t(t,s)},{cluster:i,labelBBox:{width:0,height:0}}},"noteGroup"),ma=$(async(o,t)=>{let i=V(),{themeVariables:a,handDrawnSeed:e}=i,{altBackground:r,compositeBackground:h,compositeTitleBackground:s,nodeBorder:c}=a,n=o.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-id",t.id).attr("data-look",t.look),l=n.insert("g",":first-child"),g=n.insert("g").attr("class","cluster-label"),f=n.append("rect"),p=g.node().appendChild(await ue(t.label,t.labelStyle,void 0,!0)),u=p.getBBox();if(J(i.flowchart.htmlLabels)){let B=p.children[0],L=Y(p);u=B.getBoundingClientRect(),L.attr("width",u.width),L.attr("height",u.height)}let y=0*t.padding,m=y/2,d=(t.width<=u.width+t.padding?u.width+t.padding:t.width)+y;t.width<=u.width+t.padding?t.diff=(d-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height+y,b=t.height+y-u.height-6,M=t.x-d/2,w=t.y-x/2;t.width=d;let k=t.y-t.height/2-m+u.height+2,v;if(t.look==="handDrawn"){let B=t.cssClasses.includes("statediagram-cluster-alt"),L=S.svg(n),A=t.rx||t.ry?L.path(ft(M,w,d,x,10),{roughness:.7,fill:s,fillStyle:"solid",stroke:c,seed:e}):L.rectangle(M,w,d,x,{seed:e});v=n.insert(()=>A,":first-child");let I=L.rectangle(M,k,d,b,{fill:B?r:h,fillStyle:B?"hachure":"solid",stroke:c,seed:e});v=n.insert(()=>A,":first-child"),f=n.insert(()=>I)}else v=l.insert("rect",":first-child"),v.attr("class","outer").attr("x",M).attr("y",w).attr("width",d).attr("height",x).attr("data-look",t.look),f.attr("class","inner").attr("x",M).attr("y",k).attr("width",d).attr("height",b);g.attr("transform",`translate(${t.x-u.width/2}, ${w+1-(J(i.flowchart.htmlLabels)?0:3)})`);let D=v.node().getBBox();return t.height=D.height,t.offsetX=0,t.offsetY=u.height-t.padding/2,t.labelBBox=u,t.intersect=function(B){return $t(t,B)},{cluster:n,labelBBox:u}},"roundedWithTitle"),xa=$(async(o,t)=>{F.info("Creating subgraph rect for ",t.id,t);let i=V(),{themeVariables:a,handDrawnSeed:e}=i,{clusterBkg:r,clusterBorder:h}=a,{labelStyles:s,nodeStyles:c,borderStyles:n,backgroundStyles:l}=T(t),g=o.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=J(i.flowchart.htmlLabels),p=g.insert("g").attr("class","cluster-label "),u=await ht(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0,width:t.width}),y=u.getBBox();if(J(i.flowchart.htmlLabels)){let v=u.children[0],D=Y(u);y=v.getBoundingClientRect(),D.attr("width",y.width),D.attr("height",y.height)}let m=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(m-t.width)/2-t.padding:t.diff=-t.padding;let d=t.height,x=t.x-m/2,b=t.y-d/2;F.trace("Data ",t,JSON.stringify(t));let M;if(t.look==="handDrawn"){let v=S.svg(g),D=W(t,{roughness:.7,fill:r,stroke:h,fillWeight:4,seed:e}),B=v.path(ft(x,b,m,d,t.rx),D);M=g.insert(()=>(F.debug("Rough node insert CXC",B),B),":first-child"),M.select("path:nth-child(2)").attr("style",n.join(";")),M.select("path").attr("style",l.join(";").replace("fill","stroke"))}else M=g.insert("rect",":first-child"),M.attr("style",c).attr("rx",t.rx).attr("ry",t.ry).attr("x",x).attr("y",b).attr("width",m).attr("height",d);let{subGraphTitleTopMargin:w}=Zt(i);if(p.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+w})`),s){let v=p.select("span");v&&v.attr("style",s)}let k=M.node().getBBox();return t.offsetX=0,t.width=k.width,t.height=k.height,t.offsetY=y.height-t.padding/2,t.intersect=function(v){return $t(t,v)},{cluster:g,labelBBox:y}},"kanbanSection"),ba=$((o,t)=>{let i=V(),{themeVariables:a,handDrawnSeed:e}=i,{nodeBorder:r}=a,h=o.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-look",t.look),s=h.insert("g",":first-child"),c=0*t.padding,n=t.width+c;t.diff=-t.padding;let l=t.height+c,g=t.x-n/2,f=t.y-l/2;t.width=n;let p;if(t.look==="handDrawn"){let m=S.svg(h).rectangle(g,f,n,l,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:r,seed:e});p=h.insert(()=>m,":first-child")}else p=s.insert("rect",":first-child"),p.attr("class","divider").attr("x",g).attr("y",f).attr("width",n).attr("height",l).attr("data-look",t.look);let u=p.node().getBBox();return t.height=u.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return $t(t,y)},{cluster:h,labelBBox:{}}},"divider"),wa=ze,Sa={rect:ze,squareRect:wa,roundedWithTitle:ma,noteGroup:da,divider:ba,kanbanSection:xa},je=new Map,Ua=$(async(o,t)=>{let i=t.shape||"rect",a=await Sa[i](o,t);return je.set(t.id,a),a},"insertCluster"),tr=$(()=>{je=new Map},"clear");function Ge(o,t){return o.intersect(t)}$(Ge,"intersectNode");var $a=Ge;function qe(o,t,i,a){var e=o.x,r=o.y,h=e-a.x,s=r-a.y,c=Math.sqrt(t*t*s*s+i*i*h*h),n=Math.abs(t*i*h/c);a.x0}$(ye,"sameSign");var ka=Ye;function Ve(o,t,i){let a=o.x,e=o.y,r=[],h=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(l){h=Math.min(h,l.x),s=Math.min(s,l.y)}):(h=Math.min(h,t.x),s=Math.min(s,t.y));let c=a-o.width/2-h,n=e-o.height/2-s;for(let l=0;l1&&r.sort(function(l,g){let f=l.x-i.x,p=l.y-i.y,u=Math.sqrt(f*f+p*p),y=g.x-i.x,m=g.y-i.y,d=Math.sqrt(y*y+m*m);return ul,":first-child");return g.attr("class","anchor").attr("style",U(s)),H(t,g),t.intersect=function(f){return F.info("Circle intersect",t,h,f),N.circle(t,h,f)},r}$(Ze,"anchor");function de(o,t,i,a,e,r,h){let c=(o+i)/2,n=(t+a)/2,l=Math.atan2(a-t,i-o),g=(i-o)/2,f=(a-t)/2,p=g/e,u=f/r,y=Math.sqrt(p**2+u**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let m=Math.sqrt(1-y**2),d=c+m*r*Math.sin(l)*(h?-1:1),x=n-m*e*Math.cos(l)*(h?-1:1),b=Math.atan2((t-x)/r,(o-d)/e),w=Math.atan2((a-x)/r,(i-d)/e)-b;h&&w<0&&(w+=2*Math.PI),!h&&w>0&&(w-=2*Math.PI);let k=[];for(let v=0;v<20;v++){let D=v/19,B=b+D*w,L=d+e*Math.cos(B),A=x+r*Math.sin(B);k.push({x:L,y:A})}return k}$(de,"generateArcPoints");async function Qe(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=r.width+t.padding+20,s=r.height+t.padding,c=s/2,n=c/(2.5+s/50),{cssStyles:l}=t,g=[{x:h/2,y:-s/2},{x:-h/2,y:-s/2},...de(-h/2,-s/2,-h/2,s/2,n,c,!1),{x:h/2,y:s/2},...de(h/2,s/2,h/2,-s/2,n,c,!0)],f=S.svg(e),p=W(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=q(g),y=f.path(u,p),m=e.insert(()=>y,":first-child");return m.attr("class","basic label-container"),l&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",a),m.attr("transform",`translate(${n/2}, 0)`),H(t,m),t.intersect=function(d){return N.polygon(t,g,d)},e}$(Qe,"bowTieRect");function ut(o,t,i,a){return o.insert("polygon",":first-child").attr("points",a.map(function(e){return e.x+","+e.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+i/2+")")}$(ut,"insertPolygonShape");async function Je(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=r.height+t.padding,s=12,c=r.width+t.padding+s,n=0,l=c,g=-h,f=0,p=[{x:n+s,y:g},{x:l,y:g},{x:l,y:f},{x:n,y:f},{x:n,y:g+s},{x:n+s,y:g}],u,{cssStyles:y}=t;if(t.look==="handDrawn"){let m=S.svg(e),d=W(t,{}),x=q(p),b=m.path(x,d);u=e.insert(()=>b,":first-child").attr("transform",`translate(${-c/2}, ${h/2})`),y&&u.attr("style",y)}else u=ut(e,c,h,p);return a&&u.attr("style",a),H(t,u),t.intersect=function(m){return N.polygon(t,p,m)},e}$(Je,"card");function Ke(o,t){let{nodeStyles:i}=T(t);t.label="";let a=o.insert("g").attr("class",_(t)).attr("id",t.domId??t.id),{cssStyles:e}=t,r=Math.max(28,t.width??0),h=[{x:0,y:r/2},{x:r/2,y:0},{x:0,y:-r/2},{x:-r/2,y:0}],s=S.svg(a),c=W(t,{});t.look!=="handDrawn"&&(c.roughness=0,c.fillStyle="solid");let n=q(h),l=s.path(n,c),g=a.insert(()=>l,":first-child");return e&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",e),i&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",i),t.width=28,t.height=28,t.intersect=function(f){return N.polygon(t,h,f)},a}$(Ke,"choice");async function me(o,t,i){let{labelStyles:a,nodeStyles:e}=T(t);t.labelStyle=a;let{shapeSvg:r,bbox:h,halfPadding:s}=await G(o,t,_(t)),c=i?.padding??s,n=h.width/2+c,l,{cssStyles:g}=t;if(t.look==="handDrawn"){let f=S.svg(r),p=W(t,{}),u=f.circle(0,0,n*2,p);l=r.insert(()=>u,":first-child"),l.attr("class","basic label-container").attr("style",U(g))}else l=r.insert("circle",":first-child").attr("class","basic label-container").attr("style",e).attr("r",n).attr("cx",0).attr("cy",0);return H(t,l),t.calcIntersect=function(f,p){let u=f.width/2;return N.circle(f,u,p)},t.intersect=function(f){return F.info("Circle intersect",t,n,f),N.circle(t,n,f)},r}$(me,"circle");function Ue(o){let t=Math.cos(Math.PI/4),i=Math.sin(Math.PI/4),a=o*2,e={x:a/2*t,y:a/2*i},r={x:-(a/2)*t,y:a/2*i},h={x:-(a/2)*t,y:-(a/2)*i},s={x:a/2*t,y:-(a/2)*i};return`M ${r.x},${r.y} L ${s.x},${s.y}
+ M ${e.x},${e.y} L ${h.x},${h.y}`}$(Ue,"createLine");function ts(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i,t.label="";let e=o.insert("g").attr("class",_(t)).attr("id",t.domId??t.id),r=Math.max(30,t?.width??0),{cssStyles:h}=t,s=S.svg(e),c=W(t,{});t.look!=="handDrawn"&&(c.roughness=0,c.fillStyle="solid");let n=s.circle(0,0,r*2,c),l=Ue(r),g=s.path(l,c),f=e.insert(()=>n,":first-child");return f.insert(()=>g),h&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",h),a&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",a),H(t,f),t.intersect=function(p){return F.info("crossedCircle intersect",t,{radius:r,point:p}),N.circle(t,r,p)},e}$(ts,"crossedCircle");function lt(o,t,i,a=100,e=0,r=180){let h=[],s=e*Math.PI/180,l=(r*Math.PI/180-s)/(a-1);for(let g=0;gb,":first-child").attr("stroke-opacity",0),M.insert(()=>d,":first-child"),M.attr("class","text"),l&&t.look!=="handDrawn"&&M.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&M.selectAll("path").attr("style",a),M.attr("transform",`translate(${n}, 0)`),h.attr("transform",`translate(${-s/2+n-(r.x-(r.left??0))},${-c/2+(t.padding??0)/2-(r.y-(r.top??0))})`),H(t,M),t.intersect=function(w){return N.polygon(t,f,w)},e}$(es,"curlyBraceLeft");function ct(o,t,i,a=100,e=0,r=180){let h=[],s=e*Math.PI/180,l=(r*Math.PI/180-s)/(a-1);for(let g=0;g b,":first-child").attr("stroke-opacity",0),M.insert(()=>d,":first-child"),M.attr("class","text"),l&&t.look!=="handDrawn"&&M.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&M.selectAll("path").attr("style",a),M.attr("transform",`translate(${-n}, 0)`),h.attr("transform",`translate(${-s/2+(t.padding??0)/2-(r.x-(r.left??0))},${-c/2+(t.padding??0)/2-(r.y-(r.top??0))})`),H(t,M),t.intersect=function(w){return N.polygon(t,f,w)},e}$(ss,"curlyBraceRight");function K(o,t,i,a=100,e=0,r=180){let h=[],s=e*Math.PI/180,l=(r*Math.PI/180-s)/(a-1);for(let g=0;g v,":first-child").attr("stroke-opacity",0),D.insert(()=>x,":first-child"),D.insert(()=>w,":first-child"),D.attr("class","text"),l&&t.look!=="handDrawn"&&D.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&D.selectAll("path").attr("style",a),D.attr("transform",`translate(${n-n/4}, 0)`),h.attr("transform",`translate(${-s/2+(t.padding??0)/2-(r.x-(r.left??0))},${-c/2+(t.padding??0)/2-(r.y-(r.top??0))})`),H(t,D),t.intersect=function(B){return N.polygon(t,p,B)},e}$(as,"curlyBraces");async function rs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=80,s=20,c=Math.max(h,(r.width+(t.padding??0)*2)*1.25,t?.width??0),n=Math.max(s,r.height+(t.padding??0)*2,t?.height??0),l=n/2,{cssStyles:g}=t,f=S.svg(e),p=W(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=c,y=n,m=u-l,d=y/4,x=[{x:m,y:0},{x:d,y:0},{x:0,y:y/2},{x:d,y},{x:m,y},...At(-m,-y/2,l,50,270,90)],b=q(x),M=f.path(b,p),w=e.insert(()=>M,":first-child");return w.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",g),a&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",a),w.attr("transform",`translate(${-c/2}, ${-n/2})`),H(t,w),t.intersect=function(k){return N.polygon(t,x,k)},e}$(rs,"curvedTrapezoid");var Da=$((o,t,i,a,e,r)=>[`M${o},${t+r}`,`a${e},${r} 0,0,0 ${i},0`,`a${e},${r} 0,0,0 ${-i},0`,`l0,${a}`,`a${e},${r} 0,0,0 ${i},0`,`l0,${-a}`].join(" "),"createCylinderPathD"),Pa=$((o,t,i,a,e,r)=>[`M${o},${t+r}`,`M${o+i},${t+r}`,`a${e},${r} 0,0,0 ${-i},0`,`l0,${a}`,`a${e},${r} 0,0,0 ${i},0`,`l0,${-a}`].join(" "),"createOuterCylinderPathD"),Ba=$((o,t,i,a,e,r)=>[`M${o-i/2},${-a/2}`,`a${e},${r} 0,0,0 ${i},0`].join(" "),"createInnerCylinderPathD");async function ns(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+t.padding,t.width??0),c=s/2,n=c/(2.5+s/50),l=Math.max(r.height+n+t.padding,t.height??0),g,{cssStyles:f}=t;if(t.look==="handDrawn"){let p=S.svg(e),u=Pa(0,0,s,l,c,n),y=Ba(0,n,s,l,c,n),m=p.path(u,W(t,{})),d=p.path(y,W(t,{fill:"none"}));g=e.insert(()=>d,":first-child"),g=e.insert(()=>m,":first-child"),g.attr("class","basic label-container"),f&&g.attr("style",f)}else{let p=Da(0,0,s,l,c,n);g=e.insert("path",":first-child").attr("d",p).attr("class","basic label-container").attr("style",U(f)).attr("style",a)}return g.attr("label-offset-y",n),g.attr("transform",`translate(${-s/2}, ${-(l/2+n)})`),H(t,g),h.attr("transform",`translate(${-(r.width/2)-(r.x-(r.left??0))}, ${-(r.height/2)+(t.padding??0)/1.5-(r.y-(r.top??0))})`),t.intersect=function(p){let u=N.rect(t,p),y=u.x-(t.x??0);if(c!=0&&(Math.abs(y)<(t.width??0)/2||Math.abs(y)==(t.width??0)/2&&Math.abs(u.y-(t.y??0))>(t.height??0)/2-n)){let m=n*n*(1-y*y/(c*c));m>0&&(m=Math.sqrt(m)),m=n-m,p.y-(t.y??0)>0&&(m=-m),u.y+=m}return u},e}$(ns,"cylinder");async function is(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=r.width+t.padding,c=r.height+t.padding,n=c*.2,l=-s/2,g=-c/2-n/2,{cssStyles:f}=t,p=S.svg(e),u=W(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=[{x:l,y:g+n},{x:-l,y:g+n},{x:-l,y:-g},{x:l,y:-g},{x:l,y:g},{x:-l,y:g},{x:-l,y:g+n}],m=p.polygon(y.map(x=>[x.x,x.y]),u),d=e.insert(()=>m,":first-child");return d.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",f),a&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",a),h.attr("transform",`translate(${l+(t.padding??0)/2-(r.x-(r.left??0))}, ${g+n+(t.padding??0)/2-(r.y-(r.top??0))})`),H(t,d),t.intersect=function(x){return N.rect(t,x)},e}$(is,"dividedRectangle");async function ls(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,halfPadding:h}=await G(o,t,_(t)),c=r.width/2+h+5,n=r.width/2+h,l,{cssStyles:g}=t;if(t.look==="handDrawn"){let f=S.svg(e),p=W(t,{roughness:.2,strokeWidth:2.5}),u=W(t,{roughness:.2,strokeWidth:1.5}),y=f.circle(0,0,c*2,p),m=f.circle(0,0,n*2,u);l=e.insert("g",":first-child"),l.attr("class",U(t.cssClasses)).attr("style",U(g)),l.node()?.appendChild(y),l.node()?.appendChild(m)}else{l=e.insert("g",":first-child");let f=l.insert("circle",":first-child"),p=l.insert("circle");l.attr("class","basic label-container").attr("style",a),f.attr("class","outer-circle").attr("style",a).attr("r",c).attr("cx",0).attr("cy",0),p.attr("class","inner-circle").attr("style",a).attr("r",n).attr("cx",0).attr("cy",0)}return H(t,l),t.intersect=function(f){return F.info("DoubleCircle intersect",t,c,f),N.circle(t,c,f)},e}$(ls,"doublecircle");function cs(o,t,{config:{themeVariables:i}}){let{labelStyles:a,nodeStyles:e}=T(t);t.label="",t.labelStyle=a;let r=o.insert("g").attr("class",_(t)).attr("id",t.domId??t.id),h=7,{cssStyles:s}=t,c=S.svg(r),{nodeBorder:n}=i,l=W(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(l.roughness=0);let g=c.circle(0,0,h*2,l),f=r.insert(()=>g,":first-child");return f.selectAll("path").attr("style",`fill: ${n} !important;`),s&&s.length>0&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",s),e&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",e),H(t,f),t.intersect=function(p){return F.info("filledCircle intersect",t,{radius:h,point:p}),N.circle(t,h,p)},r}$(cs,"filledCircle");async function os(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=r.width+(t.padding??0),c=s+r.height,n=s+r.height,l=[{x:0,y:-c},{x:n,y:-c},{x:n/2,y:0}],{cssStyles:g}=t,f=S.svg(e),p=W(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=q(l),y=f.path(u,p),m=e.insert(()=>y,":first-child").attr("transform",`translate(${-c/2}, ${c/2})`);return g&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",g),a&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",a),t.width=s,t.height=c,H(t,m),h.attr("transform",`translate(${-r.width/2-(r.x-(r.left??0))}, ${-c/2+(t.padding??0)/2+(r.y-(r.top??0))})`),t.intersect=function(d){return F.info("Triangle intersect",t,l,d),N.polygon(t,l,d)},e}$(os,"flippedTriangle");function hs(o,t,{dir:i,config:{state:a,themeVariables:e}}){let{nodeStyles:r}=T(t);t.label="";let h=o.insert("g").attr("class",_(t)).attr("id",t.domId??t.id),{cssStyles:s}=t,c=Math.max(70,t?.width??0),n=Math.max(10,t?.height??0);i==="LR"&&(c=Math.max(10,t?.width??0),n=Math.max(70,t?.height??0));let l=-1*c/2,g=-1*n/2,f=S.svg(h),p=W(t,{stroke:e.lineColor,fill:e.lineColor});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=f.rectangle(l,g,c,n,p),y=h.insert(()=>u,":first-child");s&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",s),r&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",r),H(t,y);let m=a?.padding??0;return t.width&&t.height&&(t.width+=m/2||0,t.height+=m/2||0),t.intersect=function(d){return N.rect(t,d)},h}$(hs,"forkJoin");async function gs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let e=80,r=50,{shapeSvg:h,bbox:s}=await G(o,t,_(t)),c=Math.max(e,s.width+(t.padding??0)*2,t?.width??0),n=Math.max(r,s.height+(t.padding??0)*2,t?.height??0),l=n/2,{cssStyles:g}=t,f=S.svg(h),p=W(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=[{x:-c/2,y:-n/2},{x:c/2-l,y:-n/2},...At(-c/2+l,0,l,50,90,270),{x:c/2-l,y:n/2},{x:-c/2,y:n/2}],y=q(u),m=f.path(y,p),d=h.insert(()=>m,":first-child");return d.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",g),a&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",a),H(t,d),t.intersect=function(x){return F.info("Pill intersect",t,{radius:l,point:x}),N.polygon(t,u,x)},h}$(gs,"halfRoundedRectangle");async function ps(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=r.height+(t.padding??0),s=r.width+(t.padding??0)*2.5,{cssStyles:c}=t,n=S.svg(e),l=W(t,{});t.look!=="handDrawn"&&(l.roughness=0,l.fillStyle="solid");let g=s/2,f=g/6;g=g+f;let p=h/2,u=p/2,y=g-u,m=[{x:-y,y:-p},{x:0,y:-p},{x:y,y:-p},{x:g,y:0},{x:y,y:p},{x:0,y:p},{x:-y,y:p},{x:-g,y:0}],d=q(m),x=n.path(d,l),b=e.insert(()=>x,":first-child");return b.attr("class","basic label-container"),c&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",c),a&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",a),t.width=s,t.height=h,H(t,b),t.intersect=function(M){return N.polygon(t,m,M)},e}$(ps,"hexagon");async function fs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.label="",t.labelStyle=i;let{shapeSvg:e}=await G(o,t,_(t)),r=Math.max(30,t?.width??0),h=Math.max(30,t?.height??0),{cssStyles:s}=t,c=S.svg(e),n=W(t,{});t.look!=="handDrawn"&&(n.roughness=0,n.fillStyle="solid");let l=[{x:0,y:0},{x:r,y:0},{x:0,y:h},{x:r,y:h}],g=q(l),f=c.path(g,n),p=e.insert(()=>f,":first-child");return p.attr("class","basic label-container"),s&&t.look!=="handDrawn"&&p.selectChildren("path").attr("style",s),a&&t.look!=="handDrawn"&&p.selectChildren("path").attr("style",a),p.attr("transform",`translate(${-r/2}, ${-h/2})`),H(t,p),t.intersect=function(u){return F.info("Pill intersect",t,{points:l}),N.polygon(t,l,u)},e}$(fs,"hourglass");async function us(o,t,{config:{themeVariables:i,flowchart:a}}){let{labelStyles:e}=T(t);t.labelStyle=e;let r=t.assetHeight??48,h=t.assetWidth??48,s=Math.max(r,h),c=a?.wrappingWidth;t.width=Math.max(s,c??0);let{shapeSvg:n,bbox:l,label:g}=await G(o,t,"icon-shape default"),f=t.pos==="t",p=s,u=s,{nodeBorder:y}=i,{stylesMap:m}=Mt(t),d=-u/2,x=-p/2,b=t.label?8:0,M=S.svg(n),w=W(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let k=M.rectangle(d,x,u,p,w),v=Math.max(u,l.width),D=p+l.height+b,B=M.rectangle(-v/2,-D/2,v,D,{...w,fill:"transparent",stroke:"none"}),L=n.insert(()=>k,":first-child"),A=n.insert(()=>B);if(t.icon){let I=n.append("g");I.html(`${await vt(t.icon,{height:s,width:s,fallbackPrefix:""})} `);let P=I.node().getBBox(),C=P.width,E=P.height,R=P.x,O=P.y;I.attr("transform",`translate(${-C/2-R},${f?l.height/2+b/2-E/2-O:-l.height/2-b/2-E/2-O})`),I.attr("style",`color: ${m.get("stroke")??y};`)}return g.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))},${f?-D/2:D/2-l.height})`),L.attr("transform",`translate(0,${f?l.height/2+b/2:-l.height/2-b/2})`),H(t,A),t.intersect=function(I){if(F.info("iconSquare intersect",t,I),!t.label)return N.rect(t,I);let P=t.x??0,C=t.y??0,E=t.height??0,R=[];return f?R=[{x:P-l.width/2,y:C-E/2},{x:P+l.width/2,y:C-E/2},{x:P+l.width/2,y:C-E/2+l.height+b},{x:P+u/2,y:C-E/2+l.height+b},{x:P+u/2,y:C+E/2},{x:P-u/2,y:C+E/2},{x:P-u/2,y:C-E/2+l.height+b},{x:P-l.width/2,y:C-E/2+l.height+b}]:R=[{x:P-u/2,y:C-E/2},{x:P+u/2,y:C-E/2},{x:P+u/2,y:C-E/2+p},{x:P+l.width/2,y:C-E/2+p},{x:P+l.width/2/2,y:C+E/2},{x:P-l.width/2,y:C+E/2},{x:P-l.width/2,y:C-E/2+p},{x:P-u/2,y:C-E/2+p}],N.polygon(t,R,I)},n}$(us,"icon");async function ys(o,t,{config:{themeVariables:i,flowchart:a}}){let{labelStyles:e}=T(t);t.labelStyle=e;let r=t.assetHeight??48,h=t.assetWidth??48,s=Math.max(r,h),c=a?.wrappingWidth;t.width=Math.max(s,c??0);let{shapeSvg:n,bbox:l,label:g}=await G(o,t,"icon-shape default"),f=20,p=t.label?8:0,u=t.pos==="t",{nodeBorder:y,mainBkg:m}=i,{stylesMap:d}=Mt(t),x=S.svg(n),b=W(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let M=d.get("fill");b.stroke=M??m;let w=n.append("g");t.icon&&w.html(`${await vt(t.icon,{height:s,width:s,fallbackPrefix:""})} `);let k=w.node().getBBox(),v=k.width,D=k.height,B=k.x,L=k.y,A=Math.max(v,D)*Math.SQRT2+f*2,I=x.circle(0,0,A,b),P=Math.max(A,l.width),C=A+l.height+p,E=x.rectangle(-P/2,-C/2,P,C,{...b,fill:"transparent",stroke:"none"}),R=n.insert(()=>I,":first-child"),O=n.insert(()=>E);return w.attr("transform",`translate(${-v/2-B},${u?l.height/2+p/2-D/2-L:-l.height/2-p/2-D/2-L})`),w.attr("style",`color: ${d.get("stroke")??y};`),g.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))},${u?-C/2:C/2-l.height})`),R.attr("transform",`translate(0,${u?l.height/2+p/2:-l.height/2-p/2})`),H(t,O),t.intersect=function(z){return F.info("iconSquare intersect",t,z),N.rect(t,z)},n}$(ys,"iconCircle");async function ds(o,t,{config:{themeVariables:i,flowchart:a}}){let{labelStyles:e}=T(t);t.labelStyle=e;let r=t.assetHeight??48,h=t.assetWidth??48,s=Math.max(r,h),c=a?.wrappingWidth;t.width=Math.max(s,c??0);let{shapeSvg:n,bbox:l,halfPadding:g,label:f}=await G(o,t,"icon-shape default"),p=t.pos==="t",u=s+g*2,y=s+g*2,{nodeBorder:m,mainBkg:d}=i,{stylesMap:x}=Mt(t),b=-y/2,M=-u/2,w=t.label?8:0,k=S.svg(n),v=W(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let D=x.get("fill");v.stroke=D??d;let B=k.path(ft(b,M,y,u,5),v),L=Math.max(y,l.width),A=u+l.height+w,I=k.rectangle(-L/2,-A/2,L,A,{...v,fill:"transparent",stroke:"none"}),P=n.insert(()=>B,":first-child").attr("class","icon-shape2"),C=n.insert(()=>I);if(t.icon){let E=n.append("g");E.html(`${await vt(t.icon,{height:s,width:s,fallbackPrefix:""})} `);let R=E.node().getBBox(),O=R.width,z=R.height,Z=R.x,rt=R.y;E.attr("transform",`translate(${-O/2-Z},${p?l.height/2+w/2-z/2-rt:-l.height/2-w/2-z/2-rt})`),E.attr("style",`color: ${x.get("stroke")??m};`)}return f.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))},${p?-A/2:A/2-l.height})`),P.attr("transform",`translate(0,${p?l.height/2+w/2:-l.height/2-w/2})`),H(t,C),t.intersect=function(E){if(F.info("iconSquare intersect",t,E),!t.label)return N.rect(t,E);let R=t.x??0,O=t.y??0,z=t.height??0,Z=[];return p?Z=[{x:R-l.width/2,y:O-z/2},{x:R+l.width/2,y:O-z/2},{x:R+l.width/2,y:O-z/2+l.height+w},{x:R+y/2,y:O-z/2+l.height+w},{x:R+y/2,y:O+z/2},{x:R-y/2,y:O+z/2},{x:R-y/2,y:O-z/2+l.height+w},{x:R-l.width/2,y:O-z/2+l.height+w}]:Z=[{x:R-y/2,y:O-z/2},{x:R+y/2,y:O-z/2},{x:R+y/2,y:O-z/2+u},{x:R+l.width/2,y:O-z/2+u},{x:R+l.width/2/2,y:O+z/2},{x:R-l.width/2,y:O+z/2},{x:R-l.width/2,y:O-z/2+u},{x:R-y/2,y:O-z/2+u}],N.polygon(t,Z,E)},n}$(ds,"iconRounded");async function ms(o,t,{config:{themeVariables:i,flowchart:a}}){let{labelStyles:e}=T(t);t.labelStyle=e;let r=t.assetHeight??48,h=t.assetWidth??48,s=Math.max(r,h),c=a?.wrappingWidth;t.width=Math.max(s,c??0);let{shapeSvg:n,bbox:l,halfPadding:g,label:f}=await G(o,t,"icon-shape default"),p=t.pos==="t",u=s+g*2,y=s+g*2,{nodeBorder:m,mainBkg:d}=i,{stylesMap:x}=Mt(t),b=-y/2,M=-u/2,w=t.label?8:0,k=S.svg(n),v=W(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let D=x.get("fill");v.stroke=D??d;let B=k.path(ft(b,M,y,u,.1),v),L=Math.max(y,l.width),A=u+l.height+w,I=k.rectangle(-L/2,-A/2,L,A,{...v,fill:"transparent",stroke:"none"}),P=n.insert(()=>B,":first-child"),C=n.insert(()=>I);if(t.icon){let E=n.append("g");E.html(`${await vt(t.icon,{height:s,width:s,fallbackPrefix:""})} `);let R=E.node().getBBox(),O=R.width,z=R.height,Z=R.x,rt=R.y;E.attr("transform",`translate(${-O/2-Z},${p?l.height/2+w/2-z/2-rt:-l.height/2-w/2-z/2-rt})`),E.attr("style",`color: ${x.get("stroke")??m};`)}return f.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))},${p?-A/2:A/2-l.height})`),P.attr("transform",`translate(0,${p?l.height/2+w/2:-l.height/2-w/2})`),H(t,C),t.intersect=function(E){if(F.info("iconSquare intersect",t,E),!t.label)return N.rect(t,E);let R=t.x??0,O=t.y??0,z=t.height??0,Z=[];return p?Z=[{x:R-l.width/2,y:O-z/2},{x:R+l.width/2,y:O-z/2},{x:R+l.width/2,y:O-z/2+l.height+w},{x:R+y/2,y:O-z/2+l.height+w},{x:R+y/2,y:O+z/2},{x:R-y/2,y:O+z/2},{x:R-y/2,y:O-z/2+l.height+w},{x:R-l.width/2,y:O-z/2+l.height+w}]:Z=[{x:R-y/2,y:O-z/2},{x:R+y/2,y:O-z/2},{x:R+y/2,y:O-z/2+u},{x:R+l.width/2,y:O-z/2+u},{x:R+l.width/2/2,y:O+z/2},{x:R-l.width/2,y:O+z/2},{x:R-l.width/2,y:O-z/2+u},{x:R-y/2,y:O-z/2+u}],N.polygon(t,Z,E)},n}$(ms,"iconSquare");async function xs(o,t,{config:{flowchart:i}}){let a=new Image;a.src=t?.img??"",await a.decode();let e=Number(a.naturalWidth.toString().replace("px","")),r=Number(a.naturalHeight.toString().replace("px",""));t.imageAspectRatio=e/r;let{labelStyles:h}=T(t);t.labelStyle=h;let s=i?.wrappingWidth;t.defaultWidth=i?.wrappingWidth;let c=Math.max(t.label?s??0:0,t?.assetWidth??e),n=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:c,l=t.constraint==="on"?n/t.imageAspectRatio:t?.assetHeight??r;t.width=Math.max(n,s??0);let{shapeSvg:g,bbox:f,label:p}=await G(o,t,"image-shape default"),u=t.pos==="t",y=-n/2,m=-l/2,d=t.label?8:0,x=S.svg(g),b=W(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let M=x.rectangle(y,m,n,l,b),w=Math.max(n,f.width),k=l+f.height+d,v=x.rectangle(-w/2,-k/2,w,k,{...b,fill:"none",stroke:"none"}),D=g.insert(()=>M,":first-child"),B=g.insert(()=>v);if(t.img){let L=g.append("image");L.attr("href",t.img),L.attr("width",n),L.attr("height",l),L.attr("preserveAspectRatio","none"),L.attr("transform",`translate(${-n/2},${u?k/2-l:-k/2})`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${u?-l/2-f.height/2-d/2:l/2-f.height/2+d/2})`),D.attr("transform",`translate(0,${u?f.height/2+d/2:-f.height/2-d/2})`),H(t,B),t.intersect=function(L){if(F.info("iconSquare intersect",t,L),!t.label)return N.rect(t,L);let A=t.x??0,I=t.y??0,P=t.height??0,C=[];return u?C=[{x:A-f.width/2,y:I-P/2},{x:A+f.width/2,y:I-P/2},{x:A+f.width/2,y:I-P/2+f.height+d},{x:A+n/2,y:I-P/2+f.height+d},{x:A+n/2,y:I+P/2},{x:A-n/2,y:I+P/2},{x:A-n/2,y:I-P/2+f.height+d},{x:A-f.width/2,y:I-P/2+f.height+d}]:C=[{x:A-n/2,y:I-P/2},{x:A+n/2,y:I-P/2},{x:A+n/2,y:I-P/2+l},{x:A+f.width/2,y:I-P/2+l},{x:A+f.width/2/2,y:I+P/2},{x:A-f.width/2,y:I+P/2},{x:A-f.width/2,y:I-P/2+l},{x:A-n/2,y:I-P/2+l}],N.polygon(t,C,L)},g}$(xs,"imageSquare");async function bs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=Math.max(r.width+(t.padding??0)*2,t?.width??0),s=Math.max(r.height+(t.padding??0)*2,t?.height??0),c=[{x:0,y:0},{x:h,y:0},{x:h+3*s/6,y:-s},{x:-3*s/6,y:-s}],n,{cssStyles:l}=t;if(t.look==="handDrawn"){let g=S.svg(e),f=W(t,{}),p=q(c),u=g.path(p,f);n=e.insert(()=>u,":first-child").attr("transform",`translate(${-h/2}, ${s/2})`),l&&n.attr("style",l)}else n=ut(e,h,s,c);return a&&n.attr("style",a),t.width=h,t.height=s,H(t,n),t.intersect=function(g){return N.polygon(t,c,g)},e}$(bs,"inv_trapezoid");async function Gt(o,t,i){let{labelStyles:a,nodeStyles:e}=T(t);t.labelStyle=a;let{shapeSvg:r,bbox:h}=await G(o,t,_(t)),s=Math.max(h.width+i.labelPaddingX*2,t?.width||0),c=Math.max(h.height+i.labelPaddingY*2,t?.height||0),n=-s/2,l=-c/2,g,{rx:f,ry:p}=t,{cssStyles:u}=t;if(i?.rx&&i.ry&&(f=i.rx,p=i.ry),t.look==="handDrawn"){let y=S.svg(r),m=W(t,{}),d=f||p?y.path(ft(n,l,s,c,f||0),m):y.rectangle(n,l,s,c,m);g=r.insert(()=>d,":first-child"),g.attr("class","basic label-container").attr("style",U(u))}else g=r.insert("rect",":first-child"),g.attr("class","basic label-container").attr("style",e).attr("rx",U(f)).attr("ry",U(p)).attr("x",n).attr("y",l).attr("width",s).attr("height",c);return H(t,g),t.calcIntersect=function(y,m){return N.rect(y,m)},t.intersect=function(y){return N.rect(t,y)},r}$(Gt,"drawRect");async function ws(o,t){let{shapeSvg:i,bbox:a,label:e}=await G(o,t,"label"),r=i.insert("rect",":first-child");return r.attr("width",.1).attr("height",.1),i.attr("class","label edgeLabel"),e.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),H(t,r),t.intersect=function(c){return N.rect(t,c)},i}$(ws,"labelRect");async function Ss(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=Math.max(r.width+(t.padding??0),t?.width??0),s=Math.max(r.height+(t.padding??0),t?.height??0),c=[{x:0,y:0},{x:h+3*s/6,y:0},{x:h,y:-s},{x:-(3*s)/6,y:-s}],n,{cssStyles:l}=t;if(t.look==="handDrawn"){let g=S.svg(e),f=W(t,{}),p=q(c),u=g.path(p,f);n=e.insert(()=>u,":first-child").attr("transform",`translate(${-h/2}, ${s/2})`),l&&n.attr("style",l)}else n=ut(e,h,s,c);return a&&n.attr("style",a),t.width=h,t.height=s,H(t,n),t.intersect=function(g){return N.polygon(t,c,g)},e}$(Ss,"lean_left");async function $s(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=Math.max(r.width+(t.padding??0),t?.width??0),s=Math.max(r.height+(t.padding??0),t?.height??0),c=[{x:-3*s/6,y:0},{x:h,y:0},{x:h+3*s/6,y:-s},{x:0,y:-s}],n,{cssStyles:l}=t;if(t.look==="handDrawn"){let g=S.svg(e),f=W(t,{}),p=q(c),u=g.path(p,f);n=e.insert(()=>u,":first-child").attr("transform",`translate(${-h/2}, ${s/2})`),l&&n.attr("style",l)}else n=ut(e,h,s,c);return a&&n.attr("style",a),t.width=h,t.height=s,H(t,n),t.intersect=function(g){return N.polygon(t,c,g)},e}$($s,"lean_right");function Ms(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.label="",t.labelStyle=i;let e=o.insert("g").attr("class",_(t)).attr("id",t.domId??t.id),{cssStyles:r}=t,h=Math.max(35,t?.width??0),s=Math.max(35,t?.height??0),c=7,n=[{x:h,y:0},{x:0,y:s+c/2},{x:h-2*c,y:s+c/2},{x:0,y:2*s},{x:h,y:s-c/2},{x:2*c,y:s-c/2}],l=S.svg(e),g=W(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let f=q(n),p=l.path(f,g),u=e.insert(()=>p,":first-child");return r&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",r),a&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",a),u.attr("transform",`translate(-${h/2},${-s})`),H(t,u),t.intersect=function(y){return F.info("lightningBolt intersect",t,y),N.polygon(t,n,y)},e}$(Ms,"lightningBolt");var Ca=$((o,t,i,a,e,r,h)=>[`M${o},${t+r}`,`a${e},${r} 0,0,0 ${i},0`,`a${e},${r} 0,0,0 ${-i},0`,`l0,${a}`,`a${e},${r} 0,0,0 ${i},0`,`l0,${-a}`,`M${o},${t+r+h}`,`a${e},${r} 0,0,0 ${i},0`].join(" "),"createCylinderPathD"),Na=$((o,t,i,a,e,r,h)=>[`M${o},${t+r}`,`M${o+i},${t+r}`,`a${e},${r} 0,0,0 ${-i},0`,`l0,${a}`,`a${e},${r} 0,0,0 ${i},0`,`l0,${-a}`,`M${o},${t+r+h}`,`a${e},${r} 0,0,0 ${i},0`].join(" "),"createOuterCylinderPathD"),Ra=$((o,t,i,a,e,r)=>[`M${o-i/2},${-a/2}`,`a${e},${r} 0,0,0 ${i},0`].join(" "),"createInnerCylinderPathD");async function ks(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0),t.width??0),c=s/2,n=c/(2.5+s/50),l=Math.max(r.height+n+(t.padding??0),t.height??0),g=l*.1,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let u=S.svg(e),y=Na(0,0,s,l,c,n,g),m=Ra(0,n,s,l,c,n),d=W(t,{}),x=u.path(y,d),b=u.path(m,d);e.insert(()=>b,":first-child").attr("class","line"),f=e.insert(()=>x,":first-child"),f.attr("class","basic label-container"),p&&f.attr("style",p)}else{let u=Ca(0,0,s,l,c,n,g);f=e.insert("path",":first-child").attr("d",u).attr("class","basic label-container").attr("style",U(p)).attr("style",a)}return f.attr("label-offset-y",n),f.attr("transform",`translate(${-s/2}, ${-(l/2+n)})`),H(t,f),h.attr("transform",`translate(${-(r.width/2)-(r.x-(r.left??0))}, ${-(r.height/2)+n-(r.y-(r.top??0))})`),t.intersect=function(u){let y=N.rect(t,u),m=y.x-(t.x??0);if(c!=0&&(Math.abs(m)<(t.width??0)/2||Math.abs(m)==(t.width??0)/2&&Math.abs(y.y-(t.y??0))>(t.height??0)/2-n)){let d=n*n*(1-m*m/(c*c));d>0&&(d=Math.sqrt(d)),d=n-d,u.y-(t.y??0)>0&&(d=-d),y.y+=d}return y},e}$(ks,"linedCylinder");async function vs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=c/4,l=c+n,{cssStyles:g}=t,f=S.svg(e),p=W(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=[{x:-s/2-s/2*.1,y:-l/2},{x:-s/2-s/2*.1,y:l/2},...pt(-s/2-s/2*.1,l/2,s/2+s/2*.1,l/2,n,.8),{x:s/2+s/2*.1,y:-l/2},{x:-s/2-s/2*.1,y:-l/2},{x:-s/2,y:-l/2},{x:-s/2,y:l/2*1.1},{x:-s/2,y:-l/2}],y=f.polygon(u.map(d=>[d.x,d.y]),p),m=e.insert(()=>y,":first-child");return m.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",g),a&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",a),m.attr("transform",`translate(0,${-n/2})`),h.attr("transform",`translate(${-s/2+(t.padding??0)+s/2*.1/2-(r.x-(r.left??0))},${-c/2+(t.padding??0)-n/2-(r.y-(r.top??0))})`),H(t,m),t.intersect=function(d){return N.polygon(t,u,d)},e}$(vs,"linedWaveEdgedRect");async function Ds(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=5,l=-s/2,g=-c/2,{cssStyles:f}=t,p=S.svg(e),u=W(t,{}),y=[{x:l-n,y:g+n},{x:l-n,y:g+c+n},{x:l+s-n,y:g+c+n},{x:l+s-n,y:g+c},{x:l+s,y:g+c},{x:l+s,y:g+c-n},{x:l+s+n,y:g+c-n},{x:l+s+n,y:g-n},{x:l+n,y:g-n},{x:l+n,y:g},{x:l,y:g},{x:l,y:g+n}],m=[{x:l,y:g+n},{x:l+s-n,y:g+n},{x:l+s-n,y:g+c},{x:l+s,y:g+c},{x:l+s,y:g},{x:l,y:g}];t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let d=q(y),x=p.path(d,u),b=q(m),M=p.path(b,{...u,fill:"none"}),w=e.insert(()=>M,":first-child");return w.insert(()=>x,":first-child"),w.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",f),a&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",a),h.attr("transform",`translate(${-(r.width/2)-n-(r.x-(r.left??0))}, ${-(r.height/2)+n-(r.y-(r.top??0))})`),H(t,w),t.intersect=function(k){return N.polygon(t,y,k)},e}$(Ds,"multiRect");async function Ps(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=c/4,l=c+n,g=-s/2,f=-l/2,p=5,{cssStyles:u}=t,y=pt(g-p,f+l+p,g+s-p,f+l+p,n,.8),m=y?.[y.length-1],d=[{x:g-p,y:f+p},{x:g-p,y:f+l+p},...y,{x:g+s-p,y:m.y-p},{x:g+s,y:m.y-p},{x:g+s,y:m.y-2*p},{x:g+s+p,y:m.y-2*p},{x:g+s+p,y:f-p},{x:g+p,y:f-p},{x:g+p,y:f},{x:g,y:f},{x:g,y:f+p}],x=[{x:g,y:f+p},{x:g+s-p,y:f+p},{x:g+s-p,y:m.y-p},{x:g+s,y:m.y-p},{x:g+s,y:f},{x:g,y:f}],b=S.svg(e),M=W(t,{});t.look!=="handDrawn"&&(M.roughness=0,M.fillStyle="solid");let w=q(d),k=b.path(w,M),v=q(x),D=b.path(v,M),B=e.insert(()=>k,":first-child");return B.insert(()=>D),B.attr("class","basic label-container"),u&&t.look!=="handDrawn"&&B.selectAll("path").attr("style",u),a&&t.look!=="handDrawn"&&B.selectAll("path").attr("style",a),B.attr("transform",`translate(0,${-n/2})`),h.attr("transform",`translate(${-(r.width/2)-p-(r.x-(r.left??0))}, ${-(r.height/2)+p-n/2-(r.y-(r.top??0))})`),H(t,B),t.intersect=function(L){return N.polygon(t,d,L)},e}$(Ps,"multiWaveEdgedRectangle");async function Bs(o,t,{config:{themeVariables:i}}){let{labelStyles:a,nodeStyles:e}=T(t);t.labelStyle=a,t.useHtmlLabels||mt().flowchart?.htmlLabels!==!1||(t.centerLabel=!0);let{shapeSvg:h,bbox:s,label:c}=await G(o,t,_(t)),n=Math.max(s.width+(t.padding??0)*2,t?.width??0),l=Math.max(s.height+(t.padding??0)*2,t?.height??0),g=-n/2,f=-l/2,{cssStyles:p}=t,u=S.svg(h),y=W(t,{fill:i.noteBkgColor,stroke:i.noteBorderColor});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let m=u.rectangle(g,f,n,l,y),d=h.insert(()=>m,":first-child");return d.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",p),e&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",e),c.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-(s.height/2)-(s.y-(s.top??0))})`),H(t,d),t.intersect=function(x){return N.rect(t,x)},h}$(Bs,"note");var Aa=$((o,t,i)=>[`M${o+i/2},${t}`,`L${o+i},${t-i/2}`,`L${o+i/2},${t-i}`,`L${o},${t-i/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function Cs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=r.width+t.padding,s=r.height+t.padding,c=h+s,n=.5,l=[{x:c/2,y:0},{x:c,y:-c/2},{x:c/2,y:-c},{x:0,y:-c/2}],g,{cssStyles:f}=t;if(t.look==="handDrawn"){let p=S.svg(e),u=W(t,{}),y=Aa(0,0,c),m=p.path(y,u);g=e.insert(()=>m,":first-child").attr("transform",`translate(${-c/2+n}, ${c/2})`),f&&g.attr("style",f)}else g=ut(e,c,c,l),g.attr("transform",`translate(${-c/2+n}, ${c/2})`);return a&&g.attr("style",a),H(t,g),t.calcIntersect=function(p,u){let y=p.width,m=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],d=N.polygon(p,m,u);return{x:d.x-.5,y:d.y-.5}},t.intersect=function(p){return this.calcIntersect(t,p)},e}$(Cs,"question");async function Ns(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0),t?.width??0),c=Math.max(r.height+(t.padding??0),t?.height??0),n=-s/2,l=-c/2,g=l/2,f=[{x:n+g,y:l},{x:n,y:0},{x:n+g,y:-l},{x:-n,y:-l},{x:-n,y:l}],{cssStyles:p}=t,u=S.svg(e),y=W(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let m=q(f),d=u.path(m,y),x=e.insert(()=>d,":first-child");return x.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",p),a&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",a),x.attr("transform",`translate(${-g/2},0)`),h.attr("transform",`translate(${-g/2-r.width/2-(r.x-(r.left??0))}, ${-(r.height/2)-(r.y-(r.top??0))})`),H(t,x),t.intersect=function(b){return N.polygon(t,f,b)},e}$(Ns,"rect_left_inv_arrow");async function Rs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let e;t.cssClasses?e="node "+t.cssClasses:e="node default";let r=o.insert("g").attr("class",e).attr("id",t.domId||t.id),h=r.insert("g"),s=r.insert("g").attr("class","label").attr("style",a),c=t.description,n=t.label,l=s.node().appendChild(await ue(n,t.labelStyle,!0,!0)),g={width:0,height:0};if(J(V()?.flowchart?.htmlLabels)){let D=l.children[0],B=Y(l);g=D.getBoundingClientRect(),B.attr("width",g.width),B.attr("height",g.height)}F.info("Text 2",c);let f=c||[],p=l.getBBox(),u=s.node().appendChild(await ue(f.join?f.join(" "):f,t.labelStyle,!0,!0)),y=u.children[0],m=Y(u);g=y.getBoundingClientRect(),m.attr("width",g.width),m.attr("height",g.height);let d=(t.padding||0)/2;Y(u).attr("transform","translate( "+(g.width>p.width?0:(p.width-g.width)/2)+", "+(p.height+d+5)+")"),Y(l).attr("transform","translate( "+(g.width(F.debug("Rough node insert CXC",L),A),":first-child"),k=r.insert(()=>(F.debug("Rough node insert CXC",L),L),":first-child")}else k=h.insert("rect",":first-child"),v=h.insert("line"),k.attr("class","outer title-state").attr("style",a).attr("x",-g.width/2-d).attr("y",-g.height/2-d).attr("width",g.width+(t.padding||0)).attr("height",g.height+(t.padding||0)),v.attr("class","divider").attr("x1",-g.width/2-d).attr("x2",g.width/2+d).attr("y1",-g.height/2-d+p.height+d).attr("y2",-g.height/2-d+p.height+d);return H(t,k),t.intersect=function(D){return N.rect(t,D)},r}$(Rs,"rectWithTitle");function Nt(o,t,i,a,e,r,h){let c=(o+i)/2,n=(t+a)/2,l=Math.atan2(a-t,i-o),g=(i-o)/2,f=(a-t)/2,p=g/e,u=f/r,y=Math.sqrt(p**2+u**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let m=Math.sqrt(1-y**2),d=c+m*r*Math.sin(l)*(h?-1:1),x=n-m*e*Math.cos(l)*(h?-1:1),b=Math.atan2((t-x)/r,(o-d)/e),w=Math.atan2((a-x)/r,(i-d)/e)-b;h&&w<0&&(w+=2*Math.PI),!h&&w>0&&(w-=2*Math.PI);let k=[];for(let v=0;v<20;v++){let D=v/19,B=b+D*w,L=d+e*Math.cos(B),A=x+r*Math.sin(B);k.push({x:L,y:A})}return k}$(Nt,"generateArcPoints");async function As(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=t?.padding??0,s=t?.padding??0,c=(t?.width?t?.width:r.width)+h*2,n=(t?.height?t?.height:r.height)+s*2,l=t.radius||5,g=t.taper||5,{cssStyles:f}=t,p=S.svg(e),u=W(t,{});t.stroke&&(u.stroke=t.stroke),t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=[{x:-c/2+g,y:-n/2},{x:c/2-g,y:-n/2},...Nt(c/2-g,-n/2,c/2,-n/2+g,l,l,!0),{x:c/2,y:-n/2+g},{x:c/2,y:n/2-g},...Nt(c/2,n/2-g,c/2-g,n/2,l,l,!0),{x:c/2-g,y:n/2},{x:-c/2+g,y:n/2},...Nt(-c/2+g,n/2,-c/2,n/2-g,l,l,!0),{x:-c/2,y:n/2-g},{x:-c/2,y:-n/2+g},...Nt(-c/2,-n/2+g,-c/2+g,-n/2,l,l,!0)],m=q(y),d=p.path(m,u),x=e.insert(()=>d,":first-child");return x.attr("class","basic label-container outer-path"),f&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",f),a&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",a),H(t,x),t.intersect=function(b){return N.polygon(t,y,b)},e}$(As,"roundedRect");async function Ls(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=t?.padding??0,c=Math.max(r.width+(t.padding??0)*2,t?.width??0),n=Math.max(r.height+(t.padding??0)*2,t?.height??0),l=-r.width/2-s,g=-r.height/2-s,{cssStyles:f}=t,p=S.svg(e),u=W(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=[{x:l,y:g},{x:l+c+8,y:g},{x:l+c+8,y:g+n},{x:l-8,y:g+n},{x:l-8,y:g},{x:l,y:g},{x:l,y:g+n}],m=p.polygon(y.map(x=>[x.x,x.y]),u),d=e.insert(()=>m,":first-child");return d.attr("class","basic label-container").attr("style",U(f)),a&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",a),f&&t.look!=="handDrawn"&&d.selectAll("path").attr("style",a),h.attr("transform",`translate(${-c/2+4+(t.padding??0)-(r.x-(r.left??0))},${-n/2+(t.padding??0)-(r.y-(r.top??0))})`),H(t,d),t.intersect=function(x){return N.rect(t,x)},e}$(Ls,"shadedProcess");async function Ws(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=-s/2,l=-c/2,{cssStyles:g}=t,f=S.svg(e),p=W(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let u=[{x:n,y:l},{x:n,y:l+c},{x:n+s,y:l+c},{x:n+s,y:l-c/2}],y=q(u),m=f.path(y,p),d=e.insert(()=>m,":first-child");return d.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",g),a&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",a),d.attr("transform",`translate(0, ${c/4})`),h.attr("transform",`translate(${-s/2+(t.padding??0)-(r.x-(r.left??0))}, ${-c/4+(t.padding??0)-(r.y-(r.top??0))})`),H(t,d),t.intersect=function(x){return N.polygon(t,u,x)},e}$(Ws,"slopedRect");async function Ts(o,t){let i={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??(t?.padding||0)*2,labelPaddingY:(t?.padding||0)*1};return Gt(o,t,i)}$(Ts,"squareRect");async function Hs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=r.height+t.padding,s=r.width+h/4+t.padding,c=h/2,{cssStyles:n}=t,l=S.svg(e),g=W(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let f=[{x:-s/2+c,y:-h/2},{x:s/2-c,y:-h/2},...At(-s/2+c,0,c,50,90,270),{x:s/2-c,y:h/2},...At(s/2-c,0,c,50,270,450)],p=q(f),u=l.path(p,g),y=e.insert(()=>u,":first-child");return y.attr("class","basic label-container outer-path"),n&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",n),a&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",a),H(t,y),t.intersect=function(m){return N.polygon(t,f,m)},e}$(Hs,"stadium");async function Is(o,t){return Gt(o,t,{rx:5,ry:5,classes:"flowchart-node"})}$(Is,"state");function Es(o,t,{config:{themeVariables:i}}){let{labelStyles:a,nodeStyles:e}=T(t);t.labelStyle=a;let{cssStyles:r}=t,{lineColor:h,stateBorder:s,nodeBorder:c}=i,n=o.insert("g").attr("class","node default").attr("id",t.domId||t.id),l=S.svg(n),g=W(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let f=l.circle(0,0,14,{...g,stroke:h,strokeWidth:2}),p=s??c,u=l.circle(0,0,5,{...g,fill:p,stroke:p,strokeWidth:2,fillStyle:"solid"}),y=n.insert(()=>f,":first-child");return y.insert(()=>u),r&&y.selectAll("path").attr("style",r),e&&y.selectAll("path").attr("style",e),H(t,y),t.intersect=function(m){return N.circle(t,7,m)},n}$(Es,"stateEnd");function Os(o,t,{config:{themeVariables:i}}){let{lineColor:a}=i,e=o.insert("g").attr("class","node default").attr("id",t.domId||t.id),r;if(t.look==="handDrawn"){let s=S.svg(e).circle(0,0,14,Me(a));r=e.insert(()=>s),r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else r=e.insert("circle",":first-child"),r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return H(t,r),t.intersect=function(h){return N.circle(t,7,h)},e}$(Os,"stateStart");async function _s(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=(t?.padding||0)/2,s=r.width+t.padding,c=r.height+t.padding,n=-r.width/2-h,l=-r.height/2-h,g=[{x:0,y:0},{x:s,y:0},{x:s,y:-c},{x:0,y:-c},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-c},{x:-8,y:-c},{x:-8,y:0}];if(t.look==="handDrawn"){let f=S.svg(e),p=W(t,{}),u=f.rectangle(n-8,l,s+16,c,p),y=f.line(n,l,n,l+c,p),m=f.line(n+s,l,n+s,l+c,p);e.insert(()=>y,":first-child"),e.insert(()=>m,":first-child");let d=e.insert(()=>u,":first-child"),{cssStyles:x}=t;d.attr("class","basic label-container").attr("style",U(x)),H(t,d)}else{let f=ut(e,s,c,g);a&&f.attr("style",a),H(t,f)}return t.intersect=function(f){return N.polygon(t,g,f)},e}$(_s,"subroutine");async function zs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=Math.max(r.width+(t.padding??0)*2,t?.width??0),s=Math.max(r.height+(t.padding??0)*2,t?.height??0),c=-h/2,n=-s/2,l=.2*s,g=.2*s,{cssStyles:f}=t,p=S.svg(e),u=W(t,{}),y=[{x:c-l/2,y:n},{x:c+h+l/2,y:n},{x:c+h+l/2,y:n+s},{x:c-l/2,y:n+s}],m=[{x:c+h-l/2,y:n+s},{x:c+h+l/2,y:n+s},{x:c+h+l/2,y:n+s-g}];t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let d=q(y),x=p.path(d,u),b=q(m),M=p.path(b,{...u,fillStyle:"solid"}),w=e.insert(()=>M,":first-child");return w.insert(()=>x,":first-child"),w.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",f),a&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",a),H(t,w),t.intersect=function(k){return N.polygon(t,y,k)},e}$(zs,"taggedRect");async function js(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=c/4,l=.2*s,g=.2*c,f=c+n,{cssStyles:p}=t,u=S.svg(e),y=W(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let m=[{x:-s/2-s/2*.1,y:f/2},...pt(-s/2-s/2*.1,f/2,s/2+s/2*.1,f/2,n,.8),{x:s/2+s/2*.1,y:-f/2},{x:-s/2-s/2*.1,y:-f/2}],d=-s/2+s/2*.1,x=-f/2-g*.4,b=[{x:d+s-l,y:(x+c)*1.4},{x:d+s,y:x+c-g},{x:d+s,y:(x+c)*.9},...pt(d+s,(x+c)*1.3,d+s-l,(x+c)*1.5,-c*.03,.5)],M=q(m),w=u.path(M,y),k=q(b),v=u.path(k,{...y,fillStyle:"solid"}),D=e.insert(()=>v,":first-child");return D.insert(()=>w,":first-child"),D.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&D.selectAll("path").attr("style",p),a&&t.look!=="handDrawn"&&D.selectAll("path").attr("style",a),D.attr("transform",`translate(0,${-n/2})`),h.attr("transform",`translate(${-s/2+(t.padding??0)-(r.x-(r.left??0))},${-c/2+(t.padding??0)-n/2-(r.y-(r.top??0))})`),H(t,D),t.intersect=function(B){return N.polygon(t,m,B)},e}$(js,"taggedWaveEdgedRectangle");async function Gs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=Math.max(r.width+t.padding,t?.width||0),s=Math.max(r.height+t.padding,t?.height||0),c=-h/2,n=-s/2,l=e.insert("rect",":first-child");return l.attr("class","text").attr("style",a).attr("rx",0).attr("ry",0).attr("x",c).attr("y",n).attr("width",h).attr("height",s),H(t,l),t.intersect=function(g){return N.rect(t,g)},e}$(Gs,"text");var La=$((o,t,i,a,e,r)=>`M${o},${t}
+ a${e},${r} 0,0,1 0,${-a}
+ l${i},0
+ a${e},${r} 0,0,1 0,${a}
+ M${i},${-a}
+ a${e},${r} 0,0,0 0,${a}
+ l${-i},0`,"createCylinderPathD"),Wa=$((o,t,i,a,e,r)=>[`M${o},${t}`,`M${o+i},${t}`,`a${e},${r} 0,0,0 0,${-a}`,`l${-i},0`,`a${e},${r} 0,0,0 0,${a}`,`l${i},0`].join(" "),"createOuterCylinderPathD"),Ta=$((o,t,i,a,e,r)=>[`M${o+i/2},${-a/2}`,`a${e},${r} 0,0,0 0,${a}`].join(" "),"createInnerCylinderPathD");async function qs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h,halfPadding:s}=await G(o,t,_(t)),c=t.look==="neo"?s*2:s,n=r.height+c,l=n/2,g=l/(2.5+n/50),f=r.width+g+c,{cssStyles:p}=t,u;if(t.look==="handDrawn"){let y=S.svg(e),m=Wa(0,0,f,n,g,l),d=Ta(0,0,f,n,g,l),x=y.path(m,W(t,{})),b=y.path(d,W(t,{fill:"none"}));u=e.insert(()=>b,":first-child"),u=e.insert(()=>x,":first-child"),u.attr("class","basic label-container"),p&&u.attr("style",p)}else{let y=La(0,0,f,n,g,l);u=e.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",U(p)).attr("style",a),u.attr("class","basic label-container"),p&&u.selectAll("path").attr("style",p),a&&u.selectAll("path").attr("style",a)}return u.attr("label-offset-x",g),u.attr("transform",`translate(${-f/2}, ${n/2} )`),h.attr("transform",`translate(${-(r.width/2)-g-(r.x-(r.left??0))}, ${-(r.height/2)-(r.y-(r.top??0))})`),H(t,u),t.intersect=function(y){let m=N.rect(t,y),d=m.y-(t.y??0);if(l!=0&&(Math.abs(d)<(t.height??0)/2||Math.abs(d)==(t.height??0)/2&&Math.abs(m.x-(t.x??0))>(t.width??0)/2-g)){let x=g*g*(1-d*d/(l*l));x!=0&&(x=Math.sqrt(Math.abs(x))),x=g-x,y.x-(t.x??0)>0&&(x=-x),m.x+=x}return m},e}$(qs,"tiltedCylinder");async function Fs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=r.width+t.padding,s=r.height+t.padding,c=[{x:-3*s/6,y:0},{x:h+3*s/6,y:0},{x:h,y:-s},{x:0,y:-s}],n,{cssStyles:l}=t;if(t.look==="handDrawn"){let g=S.svg(e),f=W(t,{}),p=q(c),u=g.path(p,f);n=e.insert(()=>u,":first-child").attr("transform",`translate(${-h/2}, ${s/2})`),l&&n.attr("style",l)}else n=ut(e,h,s,c);return a&&n.attr("style",a),t.width=h,t.height=s,H(t,n),t.intersect=function(g){return N.polygon(t,c,g)},e}$(Fs,"trapezoid");async function Xs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=60,s=20,c=Math.max(h,r.width+(t.padding??0)*2,t?.width??0),n=Math.max(s,r.height+(t.padding??0)*2,t?.height??0),{cssStyles:l}=t,g=S.svg(e),f=W(t,{});t.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let p=[{x:-c/2*.8,y:-n/2},{x:c/2*.8,y:-n/2},{x:c/2,y:-n/2*.6},{x:c/2,y:n/2},{x:-c/2,y:n/2},{x:-c/2,y:-n/2*.6}],u=q(p),y=g.path(u,f),m=e.insert(()=>y,":first-child");return m.attr("class","basic label-container"),l&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),a&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",a),H(t,m),t.intersect=function(d){return N.polygon(t,p,d)},e}$(Xs,"trapezoidalPentagon");async function Ys(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=J(V().flowchart?.htmlLabels),c=r.width+(t.padding??0),n=c+r.height,l=c+r.height,g=[{x:0,y:0},{x:l,y:0},{x:l/2,y:-n}],{cssStyles:f}=t,p=S.svg(e),u=W(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=q(g),m=p.path(y,u),d=e.insert(()=>m,":first-child").attr("transform",`translate(${-n/2}, ${n/2})`);return f&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",f),a&&t.look!=="handDrawn"&&d.selectChildren("path").attr("style",a),t.width=c,t.height=n,H(t,d),h.attr("transform",`translate(${-r.width/2-(r.x-(r.left??0))}, ${n/2-(r.height+(t.padding??0)/(s?2:1)-(r.y-(r.top??0)))})`),t.intersect=function(x){return F.info("Triangle intersect",t,g,x),N.polygon(t,g,x)},e}$(Ys,"triangle");async function Vs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=c/8,l=c+n,{cssStyles:g}=t,p=70-s,u=p>0?p/2:0,y=S.svg(e),m=W(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let d=[{x:-s/2-u,y:l/2},...pt(-s/2-u,l/2,s/2+u,l/2,n,.8),{x:s/2+u,y:-l/2},{x:-s/2-u,y:-l/2}],x=q(d),b=y.path(x,m),M=e.insert(()=>b,":first-child");return M.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&M.selectAll("path").attr("style",g),a&&t.look!=="handDrawn"&&M.selectAll("path").attr("style",a),M.attr("transform",`translate(0,${-n/2})`),h.attr("transform",`translate(${-s/2+(t.padding??0)-(r.x-(r.left??0))},${-c/2+(t.padding??0)-n-(r.y-(r.top??0))})`),H(t,M),t.intersect=function(w){return N.polygon(t,d,w)},e}$(Vs,"waveEdgedRectangle");async function Zs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r}=await G(o,t,_(t)),h=100,s=50,c=Math.max(r.width+(t.padding??0)*2,t?.width??0),n=Math.max(r.height+(t.padding??0)*2,t?.height??0),l=c/n,g=c,f=n;g>f*l?f=g/l:g=f*l,g=Math.max(g,h),f=Math.max(f,s);let p=Math.min(f*.2,f/4),u=f+p*2,{cssStyles:y}=t,m=S.svg(e),d=W(t,{});t.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let x=[{x:-g/2,y:u/2},...pt(-g/2,u/2,g/2,u/2,p,1),{x:g/2,y:-u/2},...pt(g/2,-u/2,-g/2,-u/2,p,-1)],b=q(x),M=m.path(b,d),w=e.insert(()=>M,":first-child");return w.attr("class","basic label-container"),y&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",y),a&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",a),H(t,w),t.intersect=function(k){return N.polygon(t,x,k)},e}$(Zs,"waveRectangle");async function Qs(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,label:h}=await G(o,t,_(t)),s=Math.max(r.width+(t.padding??0)*2,t?.width??0),c=Math.max(r.height+(t.padding??0)*2,t?.height??0),n=5,l=-s/2,g=-c/2,{cssStyles:f}=t,p=S.svg(e),u=W(t,{}),y=[{x:l-n,y:g-n},{x:l-n,y:g+c},{x:l+s,y:g+c},{x:l+s,y:g-n}],m=`M${l-n},${g-n} L${l+s},${g-n} L${l+s},${g+c} L${l-n},${g+c} L${l-n},${g-n}
+ M${l-n},${g} L${l+s},${g}
+ M${l},${g-n} L${l},${g+c}`;t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let d=p.path(m,u),x=e.insert(()=>d,":first-child");return x.attr("transform",`translate(${n/2}, ${n/2})`),x.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",f),a&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",a),h.attr("transform",`translate(${-(r.width/2)+n/2-(r.x-(r.left??0))}, ${-(r.height/2)+n/2-(r.y-(r.top??0))})`),H(t,x),t.intersect=function(b){return N.polygon(t,y,b)},e}$(Qs,"windowPane");async function xe(o,t){let i=t;if(i.alias&&(t.label=i.alias),t.look==="handDrawn"){let{themeVariables:X}=mt(),{background:Q}=X,tt={...t,id:t.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${Q}`]};await xe(o,tt)}let a=mt();t.useHtmlLabels=a.htmlLabels;let e=a.er?.diagramPadding??10,r=a.er?.entityPadding??6,{cssStyles:h}=t,{labelStyles:s,nodeStyles:c}=T(t);if(i.attributes.length===0&&t.label){let X={rx:0,ry:0,labelPaddingX:e,labelPaddingY:e*1.5,classes:""};kt(t.label,a)+X.labelPaddingX*20){let X=g.width+e*2-(y+m+d+x);y+=X/w,m+=X/w,d>0&&(d+=X/w),x>0&&(x+=X/w)}let v=y+m+d+x,D=S.svg(l),B=W(t,{});t.look!=="handDrawn"&&(B.roughness=0,B.fillStyle="solid");let L=0;u.length>0&&(L=u.reduce((X,Q)=>X+(Q?.rowHeight??0),0));let A=Math.max(k.width+e*2,t?.width||0,v),I=Math.max((L??0)+g.height,t?.height||0),P=-A/2,C=-I/2;l.selectAll("g:not(:first-child)").each((X,Q,tt)=>{let st=Y(tt[Q]),yt=st.attr("transform"),ot=0,be=0;if(yt){let Ft=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(yt);Ft&&(ot=parseFloat(Ft[1]),be=parseFloat(Ft[2]),st.attr("class").includes("attribute-name")?ot+=y:st.attr("class").includes("attribute-keys")?ot+=y+m:st.attr("class").includes("attribute-comment")&&(ot+=y+m+d))}st.attr("transform",`translate(${P+e/2+ot}, ${be+C+g.height+r/2})`)}),l.select(".name").attr("transform","translate("+-g.width/2+", "+(C+r/2)+")");let E=D.rectangle(P,C,A,I,B),R=l.insert(()=>E,":first-child").attr("style",h.join("")),{themeVariables:O}=mt(),{rowEven:z,rowOdd:Z,nodeBorder:rt}=O;p.push(0);for(let[X,Q]of u.entries()){let st=(X+1)%2===0&&Q.yOffset!==0,yt=D.rectangle(P,g.height+C+Q?.yOffset,A,Q?.rowHeight,{...B,fill:st?z:Z,stroke:rt});l.insert(()=>yt,"g.label").attr("style",h.join("")).attr("class",`row-rect-${st?"even":"odd"}`)}let it=D.line(P,g.height+C,A+P,g.height+C,B);l.insert(()=>it).attr("class","divider"),it=D.line(y+P,g.height+C,y+P,I+C,B),l.insert(()=>it).attr("class","divider"),b&&(it=D.line(y+m+P,g.height+C,y+m+P,I+C,B),l.insert(()=>it).attr("class","divider")),M&&(it=D.line(y+m+d+P,g.height+C,y+m+d+P,I+C,B),l.insert(()=>it).attr("class","divider"));for(let X of p)it=D.line(P,g.height+C+X,A+P,g.height+C+X,B),l.insert(()=>it).attr("class","divider");if(H(t,R),c&&t.look!=="handDrawn"){let Q=c.split(";")?.filter(tt=>tt.includes("stroke"))?.map(tt=>`${tt}`).join("; ");l.selectAll("path").attr("style",Q??""),l.selectAll(".row-rect-even path").attr("style",c)}return t.intersect=function(X){return N.rect(t,X)},l}$(xe,"erBox");async function St(o,t,i,a=0,e=0,r=[],h=""){let s=o.insert("g").attr("class",`label ${r.join(" ")}`).attr("transform",`translate(${a}, ${e})`).attr("style",h);t!==Xt(t)&&(t=Xt(t),t=t.replaceAll("<","<").replaceAll(">",">"));let c=s.node().appendChild(await ht(s,t,{width:kt(t,i)+100,style:h,useHtmlLabels:i.htmlLabels},i));if(t.includes("<")||t.includes(">")){let l=c.children[0];for(l.textContent=l.textContent.replaceAll("<","<").replaceAll(">",">");l.childNodes[0];)l=l.childNodes[0],l.textContent=l.textContent.replaceAll("<","<").replaceAll(">",">")}let n=c.getBBox();if(J(i.htmlLabels)){let l=c.children[0];l.style.textAlign="start";let g=Y(c);n=l.getBoundingClientRect(),g.attr("width",n.width),g.attr("height",n.height)}return n}$(St,"addText");async function Js(o,t,i,a,e=i.class.padding??12){let r=a?0:3,h=o.insert("g").attr("class",_(t)).attr("id",t.domId||t.id),s=null,c=null,n=null,l=null,g=0,f=0,p=0;if(s=h.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let x=t.annotations[0];await Rt(s,{text:`\xAB${x}\xBB`},0),g=s.node().getBBox().height}c=h.insert("g").attr("class","label-group text"),await Rt(c,t,0,["font-weight: bolder"]);let u=c.node().getBBox();f=u.height,n=h.insert("g").attr("class","members-group text");let y=0;for(let x of t.members){let b=await Rt(n,x,y,[x.parseClassifier()]);y+=b+r}p=n.node().getBBox().height,p<=0&&(p=e/2),l=h.insert("g").attr("class","methods-group text");let m=0;for(let x of t.methods){let b=await Rt(l,x,m,[x.parseClassifier()]);m+=b+r}let d=h.node().getBBox();if(s!==null){let x=s.node().getBBox();s.attr("transform",`translate(${-x.width/2})`)}return c.attr("transform",`translate(${-u.width/2}, ${g})`),d=h.node().getBBox(),n.attr("transform",`translate(0, ${g+f+e*2})`),d=h.node().getBBox(),l.attr("transform",`translate(0, ${g+f+(p?p+e*4:e*2)})`),d=h.node().getBBox(),{shapeSvg:h,bbox:d}}$(Js,"textHelper");async function Rt(o,t,i,a=[]){let e=o.insert("g").attr("class","label").attr("style",a.join("; ")),r=mt(),h="useHtmlLabels"in t?t.useHtmlLabels:J(r.htmlLabels)??!0,s="";"text"in t?s=t.text:s=t.label,!h&&s.startsWith("\\")&&(s=s.substring(1)),Yt(s)&&(h=!0);let c=await ht(e,Vt(xt(s)),{width:kt(s,r)+50,classes:"markdown-node-label",useHtmlLabels:h},r),n,l=1;if(h){let g=c.children[0],f=Y(c);l=g.innerHTML.split(" ").length,g.innerHTML.includes(" ")&&(l+=g.innerHTML.split("").length-1);let p=g.getElementsByTagName("img");if(p){let u=s.replace(/ ]*>/g,"").trim()==="";await Promise.all([...p].map(y=>new Promise(m=>{function d(){if(y.style.display="flex",y.style.flexDirection="column",u){let x=r.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,M=parseInt(x,10)*5+"px";y.style.minWidth=M,y.style.maxWidth=M}else y.style.width="100%";m(y)}$(d,"setupImage"),setTimeout(()=>{y.complete&&d()}),y.addEventListener("error",d),y.addEventListener("load",d)})))}n=g.getBoundingClientRect(),f.attr("width",n.width),f.attr("height",n.height)}else{a.includes("font-weight: bolder")&&Y(c).selectAll("tspan").attr("font-weight",""),l=c.children.length;let g=c.children[0];(c.textContent===""||c.textContent.includes(">"))&&(g.textContent=s[0]+s.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),s[1]===" "&&(g.textContent=g.textContent[0]+" "+g.textContent.substring(1))),g.textContent==="undefined"&&(g.textContent=""),n=c.getBBox()}return e.attr("transform","translate(0,"+(-n.height/(2*l)+i)+")"),n.height}$(Rt,"addText");async function Ks(o,t){let i=V(),a=i.class.padding??12,e=a,r=t.useHtmlLabels??J(i.htmlLabels)??!0,h=t;h.annotations=h.annotations??[],h.members=h.members??[],h.methods=h.methods??[];let{shapeSvg:s,bbox:c}=await Js(o,t,i,r,e),{labelStyles:n,nodeStyles:l}=T(t);t.labelStyle=n,t.cssStyles=h.styles||"";let g=h.styles?.join(";")||l||"";t.cssStyles||(t.cssStyles=g.replaceAll("!important","").split(";"));let f=h.members.length===0&&h.methods.length===0&&!i.class?.hideEmptyMembersBox,p=S.svg(s),u=W(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=c.width,m=c.height;h.members.length===0&&h.methods.length===0?m+=e:h.members.length>0&&h.methods.length===0&&(m+=e*2);let d=-y/2,x=-m/2,b=p.rectangle(d-a,x-a-(f?a:h.members.length===0&&h.methods.length===0?-a/2:0),y+2*a,m+2*a+(f?a*2:h.members.length===0&&h.methods.length===0?-a:0),u),M=s.insert(()=>b,":first-child");M.attr("class","basic label-container");let w=M.node().getBBox();s.selectAll(".text").each((B,L,A)=>{let I=Y(A[L]),P=I.attr("transform"),C=0;if(P){let z=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(P);z&&(C=parseFloat(z[2]))}let E=C+x+a-(f?a:h.members.length===0&&h.methods.length===0?-a/2:0);r||(E-=4);let R=d;(I.attr("class").includes("label-group")||I.attr("class").includes("annotation-group"))&&(R=-I.node()?.getBBox().width/2||0,s.selectAll("text").each(function(O,z,Z){window.getComputedStyle(Z[z]).textAnchor==="middle"&&(R=0)})),I.attr("transform",`translate(${R}, ${E})`)});let k=s.select(".annotation-group").node().getBBox().height-(f?a/2:0)||0,v=s.select(".label-group").node().getBBox().height-(f?a/2:0)||0,D=s.select(".members-group").node().getBBox().height-(f?a/2:0)||0;if(h.members.length>0||h.methods.length>0||f){let B=p.line(w.x,k+v+x+a,w.x+w.width,k+v+x+a,u);s.insert(()=>B).attr("class","divider").attr("style",g)}if(f||h.members.length>0||h.methods.length>0){let B=p.line(w.x,k+v+D+x+e*2+a,w.x+w.width,k+v+D+x+a+e*2,u);s.insert(()=>B).attr("class","divider").attr("style",g)}if(h.look!=="handDrawn"&&s.selectAll("path").attr("style",g),M.select(":nth-child(2)").attr("style",g),s.selectAll(".divider").select("path").attr("style",g),t.labelStyle?s.selectAll("span").attr("style",t.labelStyle):s.selectAll("span").attr("style",g),!r){let B=RegExp(/color\s*:\s*([^;]*)/),L=B.exec(g);if(L){let A=L[0].replace("color","fill");s.selectAll("tspan").attr("style",A)}else if(n){let A=B.exec(n);if(A){let I=A[0].replace("color","fill");s.selectAll("tspan").attr("style",I)}}}return H(t,M),t.intersect=function(B){return N.rect(t,B)},s}$(Ks,"classBox");async function Us(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let e=t,r=t,h=20,s=20,c="verifyMethod"in t,n=_(t),l=o.insert("g").attr("class",n).attr("id",t.domId??t.id),g;c?g=await nt(l,`<<${e.type}>>`,0,t.labelStyle):g=await nt(l,"<<Element>>",0,t.labelStyle);let f=g,p=await nt(l,e.name,f,t.labelStyle+"; font-weight: bold;");if(f+=p+s,c){let k=await nt(l,`${e.requirementId?`ID: ${e.requirementId}`:""}`,f,t.labelStyle);f+=k;let v=await nt(l,`${e.text?`Text: ${e.text}`:""}`,f,t.labelStyle);f+=v;let D=await nt(l,`${e.risk?`Risk: ${e.risk}`:""}`,f,t.labelStyle);f+=D,await nt(l,`${e.verifyMethod?`Verification: ${e.verifyMethod}`:""}`,f,t.labelStyle)}else{let k=await nt(l,`${r.type?`Type: ${r.type}`:""}`,f,t.labelStyle);f+=k,await nt(l,`${r.docRef?`Doc Ref: ${r.docRef}`:""}`,f,t.labelStyle)}let u=(l.node()?.getBBox().width??200)+h,y=(l.node()?.getBBox().height??200)+h,m=-u/2,d=-y/2,x=S.svg(l),b=W(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let M=x.rectangle(m,d,u,y,b),w=l.insert(()=>M,":first-child");if(w.attr("class","basic label-container").attr("style",a),l.selectAll(".label").each((k,v,D)=>{let B=Y(D[v]),L=B.attr("transform"),A=0,I=0;if(L){let R=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(L);R&&(A=parseFloat(R[1]),I=parseFloat(R[2]))}let P=I-y/2,C=m+h/2;(v===0||v===1)&&(C=A),B.attr("transform",`translate(${C}, ${P+h})`)}),f>g+p+s){let k=x.line(m,d+g+p+s,m+u,d+g+p+s,b);l.insert(()=>k).attr("style",a)}return H(t,w),t.intersect=function(k){return N.rect(t,k)},l}$(Us,"requirementBox");async function nt(o,t,i,a=""){if(t==="")return 0;let e=o.insert("g").attr("class","label").attr("style",a),r=V(),h=r.htmlLabels??!0,s=await ht(e,Vt(xt(t)),{width:kt(t,r)+50,classes:"markdown-node-label",useHtmlLabels:h,style:a},r),c;if(h){let n=s.children[0],l=Y(s);c=n.getBoundingClientRect(),l.attr("width",c.width),l.attr("height",c.height)}else{let n=s.children[0];for(let l of n.children)l.textContent=l.textContent.replaceAll(">",">").replaceAll("<","<"),a&&l.setAttribute("style",a);c=s.getBBox(),c.height+=6}return e.attr("transform",`translate(${-c.width/2},${-c.height/2+i})`),c.height}$(nt,"addText");var Ha=$(o=>{switch(o){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function ta(o,t,{config:i}){let{labelStyles:a,nodeStyles:e}=T(t);t.labelStyle=a||"";let r=10,h=t.width;t.width=(t.width??200)-10;let{shapeSvg:s,bbox:c,label:n}=await G(o,t,_(t)),l=t.padding||10,g="",f;"ticket"in t&&t.ticket&&i?.kanban?.ticketBaseUrl&&(g=i?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),f=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",g).attr("target","_blank"));let p={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},u,y;f?{label:u,bbox:y}=await fe(f,"ticket"in t&&t.ticket||"",p):{label:u,bbox:y}=await fe(s,"ticket"in t&&t.ticket||"",p);let{label:m,bbox:d}=await fe(s,"assigned"in t&&t.assigned||"",p);t.width=h;let x=10,b=t?.width||0,M=Math.max(y.height,d.height)/2,w=Math.max(c.height+x*2,t?.height||0)+M,k=-b/2,v=-w/2;n.attr("transform","translate("+(l-b/2)+", "+(-M-c.height/2)+")"),u.attr("transform","translate("+(l-b/2)+", "+(-M+c.height/2)+")"),m.attr("transform","translate("+(l+b/2-d.width-2*r)+", "+(-M+c.height/2)+")");let D,{rx:B,ry:L}=t,{cssStyles:A}=t;if(t.look==="handDrawn"){let I=S.svg(s),P=W(t,{}),C=B||L?I.path(ft(k,v,b,w,B||0),P):I.rectangle(k,v,b,w,P);D=s.insert(()=>C,":first-child"),D.attr("class","basic label-container").attr("style",A||null)}else{D=s.insert("rect",":first-child"),D.attr("class","basic label-container __APA__").attr("style",e).attr("rx",B??5).attr("ry",L??5).attr("x",k).attr("y",v).attr("width",b).attr("height",w);let I="priority"in t&&t.priority;if(I){let P=s.append("line"),C=k+2,E=v+Math.floor((B??0)/2),R=v+w-Math.floor((B??0)/2);P.attr("x1",C).attr("y1",E).attr("x2",C).attr("y2",R).attr("stroke-width","4").attr("stroke",Ha(I))}}return H(t,D),t.height=w,t.intersect=function(I){return N.rect(t,I)},s}$(ta,"kanbanItem");async function ea(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,halfPadding:h,label:s}=await G(o,t,_(t)),c=r.width+10*h,n=r.height+8*h,l=.15*c,{cssStyles:g}=t,f=r.width+20,p=r.height+20,u=Math.max(c,f),y=Math.max(n,p);s.attr("transform",`translate(${-r.width/2}, ${-r.height/2})`);let m,d=`M0 0
+ a${l},${l} 1 0,0 ${u*.25},${-1*y*.1}
+ a${l},${l} 1 0,0 ${u*.25},0
+ a${l},${l} 1 0,0 ${u*.25},0
+ a${l},${l} 1 0,0 ${u*.25},${y*.1}
+
+ a${l},${l} 1 0,0 ${u*.15},${y*.33}
+ a${l*.8},${l*.8} 1 0,0 0,${y*.34}
+ a${l},${l} 1 0,0 ${-1*u*.15},${y*.33}
+
+ a${l},${l} 1 0,0 ${-1*u*.25},${y*.15}
+ a${l},${l} 1 0,0 ${-1*u*.25},0
+ a${l},${l} 1 0,0 ${-1*u*.25},0
+ a${l},${l} 1 0,0 ${-1*u*.25},${-1*y*.15}
+
+ a${l},${l} 1 0,0 ${-1*u*.1},${-1*y*.33}
+ a${l*.8},${l*.8} 1 0,0 0,${-1*y*.34}
+ a${l},${l} 1 0,0 ${u*.1},${-1*y*.33}
+ H0 V0 Z`;if(t.look==="handDrawn"){let x=S.svg(e),b=W(t,{}),M=x.path(d,b);m=e.insert(()=>M,":first-child"),m.attr("class","basic label-container").attr("style",U(g))}else m=e.insert("path",":first-child").attr("class","basic label-container").attr("style",a).attr("d",d);return m.attr("transform",`translate(${-u/2}, ${-y/2})`),H(t,m),t.calcIntersect=function(x,b){return N.rect(x,b)},t.intersect=function(x){return F.info("Bang intersect",t,x),N.rect(t,x)},e}$(ea,"bang");async function sa(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,halfPadding:h,label:s}=await G(o,t,_(t)),c=r.width+2*h,n=r.height+2*h,l=.15*c,g=.25*c,f=.35*c,p=.2*c,{cssStyles:u}=t,y,m=`M0 0
+ a${l},${l} 0 0,1 ${c*.25},${-1*c*.1}
+ a${f},${f} 1 0,1 ${c*.4},${-1*c*.1}
+ a${g},${g} 1 0,1 ${c*.35},${c*.2}
+
+ a${l},${l} 1 0,1 ${c*.15},${n*.35}
+ a${p},${p} 1 0,1 ${-1*c*.15},${n*.65}
+
+ a${g},${l} 1 0,1 ${-1*c*.25},${c*.15}
+ a${f},${f} 1 0,1 ${-1*c*.5},0
+ a${l},${l} 1 0,1 ${-1*c*.25},${-1*c*.15}
+
+ a${l},${l} 1 0,1 ${-1*c*.1},${-1*n*.35}
+ a${p},${p} 1 0,1 ${c*.1},${-1*n*.65}
+ H0 V0 Z`;if(t.look==="handDrawn"){let d=S.svg(e),x=W(t,{}),b=d.path(m,x);y=e.insert(()=>b,":first-child"),y.attr("class","basic label-container").attr("style",U(u))}else y=e.insert("path",":first-child").attr("class","basic label-container").attr("style",a).attr("d",m);return s.attr("transform",`translate(${-r.width/2}, ${-r.height/2})`),y.attr("transform",`translate(${-c/2}, ${-n/2})`),H(t,y),t.calcIntersect=function(d,x){return N.rect(d,x)},t.intersect=function(d){return F.info("Cloud intersect",t,d),N.rect(t,d)},e}$(sa,"cloud");async function aa(o,t){let{labelStyles:i,nodeStyles:a}=T(t);t.labelStyle=i;let{shapeSvg:e,bbox:r,halfPadding:h,label:s}=await G(o,t,_(t)),c=r.width+8*h,n=r.height+2*h,l=5,g=`
+ M${-c/2} ${n/2-l}
+ v${-n+2*l}
+ q0,-${l} ${l},-${l}
+ h${c-2*l}
+ q${l},0 ${l},${l}
+ v${n-2*l}
+ q0,${l} -${l},${l}
+ h${-c+2*l}
+ q-${l},0 -${l},-${l}
+ Z
+ `,f=e.append("path").attr("id","node-"+t.id).attr("class","node-bkg node-"+t.type).attr("style",a).attr("d",g);return e.append("line").attr("class","node-line-").attr("x1",-c/2).attr("y1",n/2).attr("x2",c/2).attr("y2",n/2),s.attr("transform",`translate(${-r.width/2}, ${-r.height/2})`),e.append(()=>s.node()),H(t,f),t.calcIntersect=function(p,u){return N.rect(p,u)},t.intersect=function(p){return N.rect(t,p)},e}$(aa,"defaultMindmapNode");async function ra(o,t){let i={padding:t.padding??0};return me(o,t,i)}$(ra,"mindmapCircle");var Ia=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Ts},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:As},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Hs},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:_s},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:ns},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:me},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:ea},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:sa},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Cs},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:ps},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:$s},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:Ss},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:Fs},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:bs},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:ls},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Gs},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Je},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Ls},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Os},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Es},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:hs},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:fs},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:es},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:ss},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:as},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:Ms},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:Vs},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:gs},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:qs},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:ks},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:rs},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:is},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:Ys},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:Qs},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:cs},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:Xs},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:os},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Ws},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Ps},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:Ds},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:Qe},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:ts},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:js},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:zs},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:Zs},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Ns},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:vs}],Ea=$(()=>{let t=[...Object.entries({state:Is,choice:Ke,note:Bs,rectWithTitle:Rs,labelRect:ws,iconSquare:ms,iconCircle:ys,icon:us,iconRounded:ds,imageSquare:xs,anchor:Ze,kanbanItem:ta,mindmapCircle:ra,defaultMindmapNode:aa,classBox:Ks,erBox:xe,requirementBox:Us}),...Ia.flatMap(i=>[i.shortName,..."aliases"in i?i.aliases:[],..."internalAliases"in i?i.internalAliases:[]].map(e=>[e,i.handler]))];return Object.fromEntries(t)},"generateShapeMap"),na=Ea();function Oa(o){return o in na}$(Oa,"isValidShape");var qt=new Map;async function _a(o,t,i){let a,e;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let r=t.shape?na[t.shape]:void 0;if(!r)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let h;i.config.securityLevel==="sandbox"?h="_top":t.linkTarget&&(h=t.linkTarget||"_blank"),a=o.insert("svg:a").attr("xlink:href",t.link).attr("target",h??null),e=await r(a,t,i)}else e=await r(o,t,i),a=e;return t.tooltip&&e.attr("title",t.tooltip),qt.set(t.id,a),t.haveCallback&&a.attr("class",a.attr("class")+" clickable"),a}$(_a,"insertNode");var pn=$((o,t)=>{qt.set(t.id,o)},"setNodeElem"),fn=$(()=>{qt.clear()},"clear"),un=$(o=>{let t=qt.get(o.id);F.trace("Transforming node",o.diff,o,"translate("+(o.x-o.width/2-5)+", "+o.width/2+")");let i=8,a=o.diff||0;return o.clusterNode?t.attr("transform","translate("+(o.x+a-o.width/2)+", "+(o.y-o.height/2-i)+")"):t.attr("transform","translate("+o.x+", "+o.y+")"),a},"positionNode");export{S as a,G as b,H as c,ue as d,Ua as e,tr as f,Oa as g,_a as h,pn as i,fn as j,un as k};
+//# sourceMappingURL=chunk-IDQ2RCY2.min.js.map
diff --git a/docs/public/chunk-IDQ2RCY2.min.js.map b/docs/public/chunk-IDQ2RCY2.min.js.map
new file mode 100755
index 0000000..2ef86be
--- /dev/null
+++ b/docs/public/chunk-IDQ2RCY2.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/roughjs/bundled/rough.esm.js", "../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.mjs"],
+ "sourcesContent": ["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;et.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;ei);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;tn%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),td&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e2){const o=[];for(let e=0;e2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;ni&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n", "import {\n getSubGraphTitleMargins\n} from \"./chunk-CVBHYZKI.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-ATLVNIR6.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr,\n parseFontSize\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n common_default,\n defaultConfig_default,\n evaluate,\n getConfig,\n getConfig2,\n hasKatex,\n parseGenericTypes,\n renderKatexSanitized,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n if (!_classes) {\n cssClasses = \"node default\";\n } else {\n cssClasses = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n let label;\n if (node.label === void 0) {\n label = \"\";\n } else {\n label = typeof node.label === \"string\" ? node.label : node.label[0];\n }\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n cssClasses: \"markdown-node-label\",\n style: node.labelStyle,\n addSvgBackground: !!node.icon || !!node.img\n });\n let bbox = text2.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n if (useHtmlLabels) {\n const div = text2.children[0];\n const dv = select(text2);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = label.replace(/ ]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const config = getConfig2();\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatexSanitized(node.label.replace(common_default.lineBreakRegex, \"\\n\"), config);\n }\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const labelSpan = '\" + label + \" \";\n div.html(sanitizeText(labelSpan, config));\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"padding-right\", \"1px\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \" \");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ` `\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n| /gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"divider\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n {\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n const epsilon = 1e-6;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return;\n }\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n const offset = Math.abs(denom / 2);\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n }\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const padding = options?.padding ?? halfPadding;\n const radius = bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options2);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function(bounds, point) {\n const radius2 = bounds.width / 2;\n return intersect_default.circle(bounds, radius2, point);\n };\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.padding ?? 0);\n const w = bbox.width + (node.padding ?? 0) * 2.5;\n const { cssStyles } = node;\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let halfWidth = w / 2;\n const m = halfWidth / 6;\n halfWidth = halfWidth + m;\n const halfHeight = h / 2;\n const fixedLength = halfHeight / 2;\n const deducedWidth = halfWidth - fixedLength;\n const points = [\n { x: -deducedWidth, y: -halfHeight },\n { x: 0, y: -halfHeight },\n { x: deducedWidth, y: -halfHeight },\n { x: halfWidth, y: 0 },\n { x: deducedWidth, y: halfHeight },\n { x: 0, y: halfHeight },\n { x: -deducedWidth, y: halfHeight },\n { x: -halfWidth, y: 0 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })} `\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough22 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n const topLabel = node.pos === \"t\";\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const rc = rough22.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconElem = shapeSvg.append(\"g\");\n if (node.icon) {\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })} `\n );\n }\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough23 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough23.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })} `\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough24 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough24.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })} `\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough25 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n const img = new Image();\n img.src = node?.img ?? \"\";\n await img.decode();\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n const imageRawWidth = Math.max(\n node.label ? defaultWidth ?? 0 : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n const topLabel = node.pos === \"t\";\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough25.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"none\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.img) {\n const image = shapeSvg.append(\"image\");\n image.attr(\"href\", node.img);\n image.attr(\"width\", imageWidth);\n image.attr(\"height\", imageHeight);\n image.attr(\"preserveAspectRatio\", \"none\");\n image.attr(\n \"transform\",\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough26 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: -3 * h / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough26.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough27 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n let rect2;\n let { rx, ry } = node;\n const { cssStyles } = node;\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n if (node.look === \"handDrawn\") {\n const rc = rough27.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n }\n updateNodeBounds(node, rect2);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough28 from \"roughjs\";\nasync function lean_left(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough28.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough29 from \"roughjs\";\nasync function lean_right(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough29.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough30 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 }\n ];\n const rc = rough30.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n updateNodeBounds(node, lightningBolt2);\n node.intersect = function(point) {\n log.info(\"lightningBolt intersect\", node, point);\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough31 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function linedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\n const outerOffset = h * 0.1;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough31.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n innerLineEl.attr(\"class\", \"line\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough32 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough32.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: finalH / 2 * 1.1 },\n { x: -w / 2, y: -finalH / 2 }\n ];\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough33 from \"roughjs\";\nasync function multiRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough33.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, { ...options, fill: \"none\" });\n const multiRect2 = shapeSvg.insert(() => innerNode, \":first-child\");\n multiRect2.insert(() => outerNode, \":first-child\");\n multiRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, multiRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough34 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 5;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y },\n { x, y }\n ];\n const rc = rough34.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n shape.insert(() => innerNode);\n shape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, shape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough35 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart?.htmlLabels !== false;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough35.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough36 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createDecisionBoxPathD\");\nasync function question(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const adjustment = 0.5;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough36.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.calcIntersect = function(bounds, point) {\n const s2 = bounds.width;\n const points2 = [\n { x: s2 / 2, y: 0 },\n { x: s2, y: -s2 / 2 },\n { x: s2 / 2, y: -s2 },\n { x: 0, y: -s2 / 2 }\n ];\n const res = intersect_default.polygon(bounds, points2, point);\n return { x: res.x - 0.5, y: res.y - 0.5 };\n };\n node.intersect = function(point) {\n return this.calcIntersect(node, point);\n };\n return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough37 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n const points = [\n { x: x + notch, y },\n { x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y }\n ];\n const { cssStyles } = node;\n const rc = rough37.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n label.attr(\n \"transform\",\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select4 } from \"d3\";\nimport rough38 from \"roughjs\";\nasync function rectWithTitle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.cssClasses;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const g = shapeSvg.insert(\"g\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n const description = node.description;\n const title = node.label;\n const text2 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div2 = text2.children[0];\n const dv2 = select4(text2);\n bbox = div2.getBoundingClientRect();\n dv2.attr(\"width\", bbox.width);\n dv2.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", description);\n const textRows = description || [];\n const titleBox = text2.getBBox();\n const descr = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\" \") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nimport rough39 from \"roughjs\";\nfunction generateArcPoints2(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints2, \"generateArcPoints\");\nasync function roundedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node?.padding ?? 0;\n const labelPaddingY = node?.padding ?? 0;\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const radius = node.radius || 5;\n const taper = node.taper || 5;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.stroke) {\n options.stroke = node.stroke;\n }\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n // Top edge (left to right)\n { x: -w / 2 + taper, y: -h / 2 },\n // Top-left corner start (1)\n { x: w / 2 - taper, y: -h / 2 },\n // Top-right corner start (2)\n ...generateArcPoints2(w / 2 - taper, -h / 2, w / 2, -h / 2 + taper, radius, radius, true),\n // Top-left arc (2 to 3)\n // Right edge (top to bottom)\n { x: w / 2, y: -h / 2 + taper },\n // Top-right taper point (3)\n { x: w / 2, y: h / 2 - taper },\n // Bottom-right taper point (4)\n ...generateArcPoints2(w / 2, h / 2 - taper, w / 2 - taper, h / 2, radius, radius, true),\n // Top-left arc (4 to 5)\n // Bottom edge (right to left)\n { x: w / 2 - taper, y: h / 2 },\n // Bottom-right corner start (5)\n { x: -w / 2 + taper, y: h / 2 },\n // Bottom-left corner start (6)\n ...generateArcPoints2(-w / 2 + taper, h / 2, -w / 2, h / 2 - taper, radius, radius, true),\n // Top-left arc (4 to 5)\n // Left edge (bottom to top)\n { x: -w / 2, y: h / 2 - taper },\n // Bottom-left taper point (7)\n { x: -w / 2, y: -h / 2 + taper },\n // Top-left taper point (8)\n ...generateArcPoints2(-w / 2, -h / 2 + taper, -w / 2 + taper, -h / 2, radius, radius, true)\n // Top-left arc (4 to 5)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough40 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough41 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough42 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough43 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough43.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough44 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough45 from \"roughjs\";\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n if (node.look === \"handDrawn\") {\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough46 from \"roughjs\";\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough47 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough47.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough48 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough49 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough50 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough51 from \"roughjs\";\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough53 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough54 from \"roughjs\";\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough55 from \"roughjs\";\nimport { select as select5 } from \"d3\";\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n if (node.look === \"handDrawn\") {\n const { themeVariables: themeVariables2 } = getConfig();\n const { background } = themeVariables2;\n const backgroundNode = {\n ...node,\n id: node.id + \"-background\",\n look: \"default\",\n cssStyles: [\"stroke: none\", `fill: ${background}`]\n };\n await erBox(parent, backgroundNode);\n }\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n if (entityNode.attributes.length === 0 && node.label) {\n const options2 = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: \"\"\n };\n if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n node.width = config.er.minEntityWidth;\n }\n const shapeSvg2 = await drawRect(parent, node, options2);\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg2.select(\"text\");\n const bbox = textElement.node()?.getBBox();\n textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg2;\n }\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = \"node default\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n [\"attribute-type\"],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox2 = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n [\"attribute-name\"],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n [\"attribute-keys\"],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n [\"attribute-comment\"],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n const shapeBBox = shapeSvg.node().getBBox();\n if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n const rc = rough55.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n const text2 = select5(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text2.attr(\"class\").includes(\"attribute-name\")) {\n translateX += maxTypeWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n text2.attr(\n \"transform\",\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"style\", cssStyles.join(\"\"));\n const { themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder } = themeVariables;\n yOffsets.push(0);\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1;\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect2 = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder\n });\n shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${isEven ? \"even\" : \"odd\"}`);\n }\n let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n roughLine = rc.line(\n x,\n nameBBox.height + y + yOffset2,\n w + x,\n nameBBox.height + y + yOffset2,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\n const allStyle = nodeStyles.split(\";\");\n const strokeStyles = allStyle?.filter((e) => {\n return e.includes(\"stroke\");\n })?.map((s) => `${s}`).join(\"; \");\n shapeSvg.selectAll(\"path\").attr(\"style\", strokeStyles ?? \"\");\n shapeSvg.selectAll(\".row-rect-even path\").attr(\"style\", nodeStyles);\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n labelText = labelText.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n const text2 = label.node().appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels\n },\n config\n )\n );\n if (labelText.includes(\"<\") || labelText.includes(\">\")) {\n let child = text2.children[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n }\n let bbox = text2.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text2.children[0];\n div.style.textAlign = \"start\";\n const dv = select5(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n return bbox;\n}\n__name(addText, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select7 } from \"d3\";\nimport rough56 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select6 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select6(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select6(text2);\n numberOfLines = div.innerHTML.split(\" \").length;\n if (div.innerHTML.includes(\" \")) {\n numberOfLines += div.innerHTML.split(\"\").length - 1;\n }\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = textContent.replace(/ ]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = bbox.width;\n let h = bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n const rectBBox = rect2.node().getBBox();\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select7(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough57 from \"roughjs\";\nimport { select as select8 } from \"d3\";\nasync function requirementBox(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node;\n const elementNode = node;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = \"verifyMethod\" in node;\n const classes = getNodeClasses(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText3(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText3(shapeSvg, \"<<Element>>\", 0, node.labelStyle);\n }\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText3(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + \"; font-weight: bold;\"\n );\n accumulativeHeight += nameHeight + gap;\n if (isRequirementNode) {\n const idHeight = await addText3(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += idHeight;\n const textHeight = await addText3(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText3(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText3(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n const typeHeight2 = await addText3(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight2;\n await addText3(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rc = rough57.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select8(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const roughLine = rc.line(\n x,\n y + typeHeight + nameHeight + gap,\n x + totalWidth,\n y + typeHeight + nameHeight + gap,\n options\n );\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n if (inputText === \"\") {\n return 0;\n }\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n const config = getConfig2();\n const useHtmlLabels = config.htmlLabels ?? true;\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels,\n style\n },\n config\n );\n let bbox;\n if (!useHtmlLabels) {\n const textChild = text2.children[0];\n for (const child of textChild.children) {\n child.textContent = child.textContent.replaceAll(\">\", \">\").replaceAll(\"<\", \"<\");\n if (style) {\n child.setAttribute(\"style\", style);\n }\n }\n bbox = text2.getBBox();\n bbox.height += 6;\n } else {\n const div = text2.children[0];\n const dv = select8(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough58 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n // no stroke\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough58.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes/bang.ts\nimport rough59 from \"roughjs\";\nasync function bang(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough59.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, \":first-child\");\n bangElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n bangElem.attr(\"transform\", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Bang intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(bang, \"bang\");\n\n// src/rendering-util/rendering-elements/shapes/cloud.ts\nimport rough60 from \"roughjs\";\nasync function cloud(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n const { cssStyles } = node;\n let cloudElem;\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough60.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, \":first-child\");\n cloudElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n cloudElem.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, cloudElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Cloud intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(cloud, \"cloud\");\n\n// src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts\nasync function defaultMindmapNode(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n const rectPath = `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} -${rd},${rd}\n h${-w + 2 * rd}\n q-${rd},0 -${rd},-${rd}\n Z\n `;\n const bg = shapeSvg.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"style\", nodeStyles).attr(\"d\", rectPath);\n shapeSvg.append(\"line\").attr(\"class\", \"node-line-\").attr(\"x1\", -w / 2).attr(\"y1\", h / 2).attr(\"x2\", w / 2).attr(\"y2\", h / 2);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n updateNodeBounds(node, bg);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(defaultMindmapNode, \"defaultMindmapNode\");\n\n// src/rendering-util/rendering-elements/shapes/mindmapCircle.ts\nasync function mindmapCircle(parent, node) {\n const options = {\n padding: node.padding ?? 0\n };\n return circle(parent, node, options);\n}\n__name(mindmapCircle, \"mindmapCircle\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Bang\",\n name: \"Bang\",\n shortName: \"bang\",\n description: \"Bang\",\n aliases: [\"bang\"],\n handler: bang\n },\n {\n semanticName: \"Cloud\",\n name: \"Cloud\",\n shortName: \"cloud\",\n description: \"cloud\",\n aliases: [\"cloud\"],\n handler: cloud\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n // er diagram\n erBox,\n // Requirement diagram\n requirementBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems.get(node.id);\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],
+ "mappings": "sZAAA,SAASA,GAAEA,EAAEC,EAAEC,EAAE,CAAC,GAAGF,GAAGA,EAAE,OAAO,CAAC,GAAK,CAACG,EAAEC,CAAC,EAAEH,EAAEI,EAAE,KAAK,GAAG,IAAIH,EAAE,EAAE,KAAK,IAAIG,CAAC,EAAEC,EAAE,KAAK,IAAID,CAAC,EAAE,QAAUJ,KAAKD,EAAE,CAAC,GAAK,CAACA,EAAEE,CAAC,EAAED,EAAEA,EAAE,CAAC,GAAGD,EAAEG,GAAG,GAAGD,EAAEE,GAAGE,EAAEH,EAAEF,EAAE,CAAC,GAAGD,EAAEG,GAAGG,GAAGJ,EAAEE,GAAG,EAAEA,CAAC,CAAC,CAAC,CAAC,SAASH,GAAED,EAAEC,EAAE,CAAC,OAAOD,EAAE,CAAC,IAAIC,EAAE,CAAC,GAAGD,EAAE,CAAC,IAAIC,EAAE,CAAC,CAAC,CAAC,SAASC,GAAEA,EAAEC,EAAEC,EAAE,EAAE,EAAE,CAAC,IAAMG,EAAEH,EAAE,EAAE,KAAK,IAAID,EAAE,EAAE,EAAEK,EAAEN,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAAC,GAAa,OAAOA,EAAE,CAAC,EAAE,CAAC,GAAvB,SAAyB,CAACA,CAAC,EAAEA,EAAEO,EAAE,CAAC,EAAE,CAAC,EAAE,GAAGF,EAAE,QAAUN,KAAKO,EAAER,GAAEC,EAAEQ,EAAEF,CAAC,EAAE,IAAMG,GAAE,SAASV,EAAEE,EAAEC,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAE,QAAUF,KAAKF,EAAE,CAAC,IAAMA,EAAE,CAAC,GAAGE,CAAC,EAAED,GAAED,EAAE,CAAC,EAAEA,EAAEA,EAAE,OAAO,CAAC,CAAC,GAAGA,EAAE,KAAK,CAACA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,OAAO,GAAGI,EAAE,KAAKJ,CAAC,CAAC,CAAC,IAAMK,EAAE,CAAC,EAAEH,EAAE,KAAK,IAAIA,EAAE,EAAE,EAAE,IAAMK,EAAE,CAAC,EAAE,QAAUP,KAAKI,EAAE,QAAQH,EAAE,EAAEA,EAAED,EAAE,OAAO,EAAEC,IAAI,CAAC,IAAMC,EAAEF,EAAEC,CAAC,EAAEE,EAAEH,EAAEC,EAAE,CAAC,EAAE,GAAGC,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAE,CAAC,IAAMH,EAAE,KAAK,IAAIE,EAAE,CAAC,EAAEC,EAAE,CAAC,CAAC,EAAEI,EAAE,KAAK,CAAC,KAAKP,EAAE,KAAK,KAAK,IAAIE,EAAE,CAAC,EAAEC,EAAE,CAAC,CAAC,EAAE,EAAEH,IAAIE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,QAAQA,EAAE,CAAC,EAAED,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAED,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGK,EAAE,MAAM,CAACP,EAAEC,IAAID,EAAE,KAAKC,EAAE,KAAK,GAAGD,EAAE,KAAKC,EAAE,KAAK,EAAED,EAAE,EAAEC,EAAE,EAAE,GAAGD,EAAE,EAAEC,EAAE,EAAE,EAAED,EAAE,OAAOC,EAAE,KAAK,GAAGD,EAAE,KAAKC,EAAE,MAAM,KAAK,IAAID,EAAE,KAAKC,EAAE,IAAI,EAAE,EAAE,CAACM,EAAE,OAAO,OAAOF,EAAE,IAAIC,EAAE,CAAC,EAAEE,EAAED,EAAE,CAAC,EAAE,KAAKE,EAAE,EAAE,KAAKH,EAAE,QAAQC,EAAE,QAAQ,CAAC,GAAGA,EAAE,OAAO,CAAC,IAAIP,EAAE,GAAG,QAAQC,EAAE,EAAEA,EAAEM,EAAE,QAAQ,EAAEA,EAAEN,CAAC,EAAE,KAAKO,GAAGP,IAAID,EAAEC,EAAEM,EAAE,OAAO,EAAEP,EAAE,CAAC,EAAE,SAASA,GAAG,CAACM,EAAE,KAAK,CAAC,EAAEE,EAAE,KAAKR,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGM,EAAEA,EAAE,QAAQN,GAAG,EAAEA,EAAE,KAAK,MAAMQ,GAAG,EAAEF,EAAE,MAAM,CAACN,EAAEC,IAAID,EAAE,KAAK,IAAIC,EAAE,KAAK,EAAE,GAAGD,EAAE,KAAK,EAAEC,EAAE,KAAK,GAAG,KAAK,IAAID,EAAE,KAAK,EAAEC,EAAE,KAAK,CAAC,EAAE,GAAOE,IAAJ,GAAOM,EAAEP,GAAG,IAAII,EAAE,OAAO,EAAE,QAAQN,EAAE,EAAEA,EAAEM,EAAE,OAAON,GAAG,EAAE,CAAC,IAAMC,EAAED,EAAE,EAAE,GAAGC,GAAGK,EAAE,OAAO,MAAM,IAAMJ,EAAEI,EAAEN,CAAC,EAAE,KAAKG,EAAEG,EAAEL,CAAC,EAAE,KAAKI,EAAE,KAAK,CAAC,CAAC,KAAK,MAAMH,EAAE,CAAC,EAAEM,CAAC,EAAE,CAAC,KAAK,MAAML,EAAE,CAAC,EAAEK,CAAC,CAAC,CAAC,CAAC,CAACA,GAAGL,EAAEG,EAAE,SAASN,GAAG,CAACA,EAAE,KAAK,EAAEA,EAAE,KAAK,EAAEG,EAAEH,EAAE,KAAK,MAAM,EAAE,EAAES,GAAG,CAAC,OAAOJ,CAAC,GAAEG,EAAE,EAAE,CAAC,EAAE,GAAGD,EAAE,CAAC,QAAUN,KAAKO,EAAER,GAAEC,EAAEQ,EAAE,CAACF,CAAC,GAAG,SAASN,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAEH,EAAE,SAASD,GAAGI,EAAE,KAAK,GAAGJ,CAAC,EAAE,EAAEA,GAAEI,EAAEF,EAAEC,CAAC,CAAC,GAAEO,EAAED,EAAE,CAACF,CAAC,CAAC,CAAC,OAAOG,CAAC,CAAC,SAASP,GAAEH,EAAEC,EAAE,CAAC,IAAIE,EAAE,IAAMC,EAAEH,EAAE,aAAa,GAAOI,EAAEJ,EAAE,WAAWI,EAAE,IAAIA,EAAE,EAAEJ,EAAE,aAAaI,EAAE,KAAK,MAAM,KAAK,IAAIA,EAAE,EAAE,CAAC,EAAE,IAAIE,EAAE,EAAE,OAAON,EAAE,WAAW,MAAaE,EAAEF,EAAE,cAAZ,MAAkCE,IAAT,OAAW,OAAOA,EAAE,KAAK,IAAI,KAAK,OAAO,GAAG,KAAKI,EAAEF,GAAGH,GAAEF,EAAEK,EAAED,EAAEG,GAAG,CAAC,CAAC,CAAC,IAAMH,GAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,aAAa,EAAEH,EAAE,CAAC,OAAO,KAAK,cAAc,EAAEA,CAAC,CAAC,CAAC,cAAc,EAAEA,EAAE,CAAC,IAAMC,EAAEC,GAAE,EAAEF,CAAC,EAAE,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,YAAYC,EAAED,CAAC,CAAC,CAAC,CAAC,YAAY,EAAEA,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAE,QAAUC,KAAK,EAAED,EAAE,KAAK,GAAG,KAAK,OAAO,cAAcC,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEF,CAAC,CAAC,EAAE,OAAOC,CAAC,CAAC,EAAC,SAASG,GAAEL,EAAE,CAAC,IAAMC,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAE,OAAO,KAAK,KAAK,KAAK,IAAIC,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAID,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAMK,GAAN,cAAgBH,EAAC,CAAC,aAAa,EAAEH,EAAE,CAAC,IAAIC,EAAED,EAAE,WAAWC,EAAE,IAAIA,EAAE,EAAED,EAAE,aAAaC,EAAE,KAAK,IAAIA,EAAE,EAAE,EAAE,IAAME,EAAED,GAAE,EAAE,OAAO,OAAO,CAAC,EAAEF,EAAE,CAAC,WAAWC,CAAC,CAAC,CAAC,EAAEK,EAAE,KAAK,GAAG,IAAIN,EAAE,aAAaK,EAAE,CAAC,EAAEE,EAAE,GAAGN,EAAE,KAAK,IAAIK,CAAC,EAAE,EAAE,GAAGL,EAAE,KAAK,IAAIK,CAAC,EAAE,OAAS,CAACP,EAAEC,CAAC,IAAIG,EAAEC,GAAE,CAACL,EAAEC,CAAC,CAAC,GAAGK,EAAE,KAAK,CAAC,CAACN,EAAE,CAAC,EAAEQ,EAAER,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAGC,CAAC,CAAC,EAAE,CAAC,CAACD,EAAE,CAAC,EAAEQ,EAAER,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,YAAYK,EAAEL,CAAC,CAAC,CAAC,CAAC,EAAOK,GAAN,cAAgBF,EAAC,CAAC,aAAa,EAAEH,EAAE,CAAC,IAAMC,EAAE,KAAK,cAAc,EAAED,CAAC,EAAEE,EAAE,OAAO,OAAO,CAAC,EAAEF,EAAE,CAAC,aAAaA,EAAE,aAAa,EAAE,CAAC,EAAEG,EAAE,KAAK,cAAc,EAAED,CAAC,EAAE,OAAOD,EAAE,IAAIA,EAAE,IAAI,OAAOE,EAAE,GAAG,EAAEF,CAAC,CAAC,EAAOM,GAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,aAAa,EAAEP,EAAE,CAAC,IAAMC,EAAEC,GAAE,EAAEF,EAAE,OAAO,OAAO,CAAC,EAAEA,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,YAAYC,EAAED,CAAC,CAAC,CAAC,YAAY,EAAEA,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAMC,EAAEF,EAAE,WAAWE,EAAE,IAAIA,EAAE,EAAEF,EAAE,aAAaE,EAAE,KAAK,IAAIA,EAAE,EAAE,EAAE,IAAIC,EAAEH,EAAE,WAAWG,EAAE,IAAIA,EAAEH,EAAE,YAAY,GAAG,IAAM,EAAEE,EAAE,EAAE,QAAUG,KAAK,EAAE,CAAC,IAAMN,EAAEK,GAAEC,CAAC,EAAEE,EAAER,EAAEG,EAAEM,EAAE,KAAK,KAAKD,CAAC,EAAE,EAAEE,EAAEV,EAAES,EAAEN,EAAEQ,GAAGL,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,GAAG,EAAEH,EAAE,EAAE,EAAE,KAAK,IAAIG,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQN,EAAE,EAAEA,EAAES,EAAET,IAAI,CAAC,IAAMK,EAAE,EAAEK,EAAEV,EAAEG,EAAEG,EAAEK,EAAE,EAAE,EAAE,KAAK,OAAO,EAAE,EAAEH,EAAEH,EAAE,EAAE,EAAE,KAAK,OAAO,EAAE,EAAEI,EAAE,KAAK,OAAO,QAAQH,EAAEE,EAAEJ,EAAEA,EAAEH,CAAC,EAAEC,EAAE,KAAK,GAAGO,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa,IAAIP,CAAC,CAAC,CAAC,EAAOO,GAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,aAAa,EAAER,EAAE,CAAC,IAAMC,EAAEC,GAAE,EAAEF,CAAC,EAAE,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,WAAWC,EAAED,CAAC,CAAC,CAAC,CAAC,WAAW,EAAEA,EAAE,CAAC,IAAMC,EAAED,EAAE,WAAW,EAAEA,EAAE,WAAW,EAAE,EAAEA,EAAE,YAAYA,EAAE,WAAWA,EAAE,WAAWE,EAAEF,EAAE,QAAQ,EAAEA,EAAE,WAAW,EAAE,EAAEA,EAAE,YAAYA,EAAE,WAAWA,EAAE,QAAQG,EAAE,CAAC,EAAE,OAAO,EAAE,SAASJ,GAAG,CAAC,IAAMO,EAAEF,GAAEL,CAAC,EAAEM,EAAE,KAAK,MAAMC,GAAGL,EAAEC,EAAE,EAAEK,GAAGD,EAAEJ,EAAEG,GAAGJ,EAAEC,IAAI,EAAMM,EAAET,EAAE,CAAC,EAAEU,EAAEV,EAAE,CAAC,EAAES,EAAE,CAAC,EAAEC,EAAE,CAAC,IAAID,EAAET,EAAE,CAAC,EAAEU,EAAEV,EAAE,CAAC,GAAG,IAAMW,EAAE,KAAK,MAAMD,EAAE,CAAC,EAAED,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAED,EAAE,CAAC,EAAE,EAAE,QAAQT,EAAE,EAAEA,EAAEM,EAAEN,IAAI,CAAC,IAAMK,EAAEL,GAAGE,EAAEC,GAAGI,EAAEF,EAAEH,EAAEI,EAAE,CAACG,EAAE,CAAC,EAAEJ,EAAE,KAAK,IAAIM,CAAC,EAAEH,EAAE,KAAK,IAAIG,CAAC,EAAEF,EAAE,CAAC,EAAEJ,EAAE,KAAK,IAAIM,CAAC,EAAEH,EAAE,KAAK,IAAIG,CAAC,CAAC,EAAED,EAAE,CAACD,EAAE,CAAC,EAAEF,EAAE,KAAK,IAAII,CAAC,EAAEH,EAAE,KAAK,IAAIG,CAAC,EAAEF,EAAE,CAAC,EAAEF,EAAE,KAAK,IAAII,CAAC,EAAEH,EAAE,KAAK,IAAIG,CAAC,CAAC,EAAEP,EAAE,KAAK,GAAG,KAAK,OAAO,cAAcE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEI,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAET,CAAC,CAAC,CAAC,CAAC,EAAE,EAAEG,CAAC,CAAC,EAAOM,GAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,aAAa,EAAET,EAAE,CAAC,IAAMC,EAAED,EAAE,WAAW,EAAE,EAAEA,EAAE,YAAYA,EAAE,WAAWG,EAAEH,EAAE,aAAa,EAAEC,EAAED,EAAE,aAAaI,EAAEF,GAAE,EAAEF,EAAE,OAAO,OAAO,CAAC,EAAEA,EAAE,CAAC,WAAWC,EAAEE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,YAAYC,EAAED,EAAEH,CAAC,CAAC,CAAC,CAAC,YAAY,EAAEA,EAAEC,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAE,OAAO,EAAE,SAASH,GAAG,CAAC,IAAMI,EAAEC,GAAEL,CAAC,EAAEO,EAAE,KAAK,MAAMH,GAAG,EAAEH,EAAE,EAAMK,EAAEN,EAAE,CAAC,EAAEQ,EAAER,EAAE,CAAC,EAAEM,EAAE,CAAC,EAAEE,EAAE,CAAC,IAAIF,EAAEN,EAAE,CAAC,EAAEQ,EAAER,EAAE,CAAC,GAAG,IAAMS,EAAE,KAAK,MAAMD,EAAE,CAAC,EAAEF,EAAE,CAAC,IAAIE,EAAE,CAAC,EAAEF,EAAE,CAAC,EAAE,EAAE,QAAQN,EAAE,EAAEA,EAAEO,EAAEP,IAAI,CAAC,IAAMI,EAAE,EAAEJ,EAAEC,EAAEI,EAAE,GAAGL,EAAE,GAAGC,EAAEM,EAAE,KAAK,KAAK,EAAE,KAAK,IAAIN,EAAE,CAAC,CAAC,EAAEO,EAAE,CAACF,EAAE,CAAC,EAAEF,EAAE,KAAK,IAAIK,CAAC,EAAEH,EAAE,CAAC,EAAEF,EAAE,KAAK,IAAIK,CAAC,CAAC,EAAEC,EAAE,CAACJ,EAAE,CAAC,EAAED,EAAE,KAAK,IAAII,CAAC,EAAEH,EAAE,CAAC,EAAED,EAAE,KAAK,IAAII,CAAC,CAAC,EAAEE,EAAE,CAACH,EAAE,CAAC,EAAED,EAAE,KAAK,IAAIE,EAAE,KAAK,GAAG,CAAC,EAAED,EAAE,CAAC,EAAED,EAAE,KAAK,IAAIE,EAAE,KAAK,GAAG,CAAC,CAAC,EAAEN,EAAE,KAAK,GAAG,KAAK,OAAO,cAAcK,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEG,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAET,CAAC,EAAE,GAAG,KAAK,OAAO,cAAcS,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAED,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAER,CAAC,CAAC,CAAC,CAAC,EAAE,EAAEC,CAAC,CAAC,EAAOQ,GAAE,CAAC,EAAQC,GAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,EAAOC,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEC,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,SAASC,GAAEjB,EAAEC,EAAE,CAAC,OAAOD,EAAE,OAAOC,CAAC,CAAC,SAASiB,GAAElB,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAEC,GAAE,SAASF,EAAE,CAAC,IAAMC,EAAE,IAAI,MAAM,KAAUD,IAAL,IAAQ,GAAGA,EAAE,MAAM,gBAAgB,EAAEA,EAAEA,EAAE,OAAO,OAAO,GAAG,MAAM,UAAUA,EAAE,MAAM,2BAA2B,EAAEC,EAAEA,EAAE,MAAM,EAAE,CAAC,KAAKY,GAAE,KAAK,OAAO,EAAE,EAAEb,EAAEA,EAAE,OAAO,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,CAACA,EAAE,MAAM,6DAA6D,EAAE,MAAM,CAAC,EAAEC,EAAEA,EAAE,MAAM,EAAE,CAAC,KAAKa,GAAE,KAAK,GAAG,WAAW,OAAO,EAAE,CAAC,EAAE,EAAEd,EAAEA,EAAE,OAAO,OAAO,GAAG,MAAM,CAAC,CAAC,OAAOC,EAAEA,EAAE,MAAM,EAAE,CAAC,KAAKc,GAAE,KAAK,EAAE,EAAEd,CAAC,GAAED,CAAC,EAAMG,EAAE,MAAMC,EAAE,EAAEC,EAAEH,EAAEE,CAAC,EAAE,KAAK,CAACa,GAAEZ,EAAEU,EAAC,GAAG,CAAC,IAAI,EAAE,EAAQT,EAAE,CAAC,EAAE,GAAWH,IAAR,MAAU,CAAC,GAASE,EAAE,OAAR,KAAoBA,EAAE,OAAR,IAAa,OAAOa,GAAE,OAAOlB,CAAC,EAAEI,IAAI,EAAEY,GAAEX,EAAE,IAAI,EAAEF,EAAEE,EAAE,IAAI,MAAMY,GAAEZ,EAAES,EAAC,EAAE,EAAEE,GAAEb,CAAC,GAAGC,IAAI,EAAEY,GAAEX,EAAE,IAAI,EAAEF,EAAEE,EAAE,MAAM,GAAG,EAAED,EAAE,EAAEF,EAAE,QAAQ,MAAM,IAAI,MAAM,uBAAuB,EAAE,QAAQF,EAAEI,EAAEJ,EAAEI,EAAE,EAAEJ,IAAI,CAAC,IAAMC,EAAEC,EAAEF,CAAC,EAAE,GAAG,CAACiB,GAAEhB,EAAEa,EAAC,EAAE,MAAM,IAAI,MAAM,uBAAuBX,EAAE,IAAIF,EAAE,IAAI,EAAEK,EAAEA,EAAE,MAAM,EAAE,CAACL,EAAE,IAAI,CAAC,GAAa,OAAOe,GAAEb,CAAC,GAApB,SAAsB,MAAM,IAAI,MAAM,gBAAgBA,CAAC,EAAE,CAAC,IAAMH,EAAE,CAAC,IAAIG,EAAE,KAAKG,CAAC,EAAEL,EAAE,KAAKD,CAAC,EAAEI,GAAG,EAAEC,EAAEH,EAAEE,CAAC,EAAQD,IAAN,MAAUA,EAAE,KAAWA,IAAN,MAAUA,EAAE,IAAI,CAAC,CAAC,OAAOF,CAAC,CAAC,SAASkB,GAAEnB,EAAE,CAAC,IAAIC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAQC,EAAE,CAAC,EAAE,OAAS,CAAC,IAAI,EAAE,KAAKC,CAAC,IAAIN,EAAE,OAAO,EAAE,CAAC,IAAI,IAAIK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAE,CAACL,EAAEC,CAAC,EAAEI,EAAE,CAACH,EAAEC,CAAC,EAAEE,EAAE,MAAM,IAAI,IAAIL,GAAGK,EAAE,CAAC,EAAEJ,GAAGI,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACJ,EAAEC,CAAC,CAAC,CAAC,EAAEC,EAAEF,EAAEG,EAAEF,EAAE,MAAM,IAAI,IAAIG,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAE,CAACL,EAAEC,CAAC,EAAEI,EAAE,MAAM,IAAI,IAAIL,GAAGK,EAAE,CAAC,EAAEJ,GAAGI,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACJ,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAIG,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,IAAMN,EAAEM,EAAE,KAAK,CAACN,EAAEG,IAAIA,EAAE,EAAEH,EAAEE,EAAEF,EAAEC,EAAE,EAAEI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKL,CAAC,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,IAAIK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,IAAMN,EAAEM,EAAE,KAAK,CAACN,EAAEG,IAAIA,EAAE,EAAEH,EAAEE,EAAEF,EAAEC,EAAE,EAAEI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKL,CAAC,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,IAAIK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAE,MAAM,IAAI,IAAIL,GAAGK,EAAE,CAAC,EAAEJ,GAAGI,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEL,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAIG,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAE,MAAM,IAAI,IAAIL,GAAGK,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACJ,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAII,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAE,MAAM,IAAI,IAAIJ,GAAGI,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACH,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAIG,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,IAAMN,EAAEM,EAAE,KAAK,CAACN,EAAEG,IAAIA,EAAE,EAAEH,EAAEE,EAAEF,EAAEC,EAAE,EAAEI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKL,CAAC,CAAC,EAAEC,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,IAAIK,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,CAAC,CAAC,CAAC,EAAEL,EAAEK,EAAE,CAAC,EAAEJ,EAAEI,EAAE,CAAC,EAAE,MAAM,IAAI,IAAIL,GAAGK,EAAE,CAAC,EAAEJ,GAAGI,EAAE,CAAC,EAAED,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACJ,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,IAAI,IAAIG,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAEJ,EAAEE,EAAED,EAAEE,CAAC,CAAC,OAAOC,CAAC,CAAC,SAASe,GAAEpB,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAMC,EAAE,GAAGC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAE,OAAS,CAAC,IAAIC,EAAE,KAAK,CAAC,IAAIT,EAAE,CAAC,OAAOS,EAAE,CAAC,IAAI,IAAIR,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAACE,EAAEC,CAAC,EAAE,EAAE,CAACC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,IAAIJ,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAE,MAAM,IAAI,IAAIP,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAACE,EAAEC,CAAC,EAAE,EAAE,MAAM,IAAI,IAAID,EAAE,EAAE,CAAC,EAAEF,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACE,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAIA,EAAE,EAAE,CAAC,EAAEH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACE,EAAEC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,IAAIJ,EAAE,EAAEK,EAAE,EAAQH,IAAN,KAAeA,IAAN,KAASF,EAAEG,GAAGA,EAAEG,GAAGD,EAAED,GAAGA,EAAEI,KAAKR,EAAEG,EAAEE,EAAED,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACD,EAAEK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAEL,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAK,CAACJ,EAAEK,CAAC,EAAE,EAAME,EAAE,EAAEE,EAAE,EAAQP,IAAN,KAAeA,IAAN,KAASK,EAAEJ,GAAGA,EAAEG,GAAGG,EAAEL,GAAGA,EAAEI,KAAKD,EAAEJ,EAAEM,EAAEL,GAAG,IAAMO,EAAER,EAAE,GAAGI,EAAEJ,GAAG,EAAES,EAAER,EAAE,GAAGK,EAAEL,GAAG,EAAES,EAAEb,EAAE,GAAGO,EAAEP,GAAG,EAAEc,EAAET,EAAE,GAAGI,EAAEJ,GAAG,EAAEJ,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACU,EAAEC,EAAEC,EAAEC,EAAEd,EAAEK,CAAC,CAAC,CAAC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEN,EAAEH,EAAEI,EAAEC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAK,CAACL,EAAEE,EAAEG,EAAEE,CAAC,EAAE,EAAEE,EAAEN,EAAE,GAAGH,EAAEG,GAAG,EAAEQ,EAAEP,EAAE,GAAGF,EAAEE,GAAG,EAAEQ,EAAEP,EAAE,GAAGL,EAAEK,GAAG,EAAEQ,EAAEN,EAAE,GAAGL,EAAEK,GAAG,EAAEN,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACQ,EAAEE,EAAEC,EAAEC,EAAER,EAAEE,CAAC,CAAC,CAAC,EAAED,EAAEN,EAAEQ,EAAEN,EAAEC,EAAEE,EAAED,EAAEG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAMP,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAEE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAEG,EAAE,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAED,EAAE,EAAE,CAAC,EAAEE,EAAE,EAAE,CAAC,EAAEC,EAAE,EAAE,CAAC,EAAST,IAAJ,GAAWE,IAAJ,GAAMD,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACE,EAAEC,EAAEI,EAAEC,EAAED,EAAEC,CAAC,CAAC,CAAC,EAAEN,EAAEK,EAAEJ,EAAEK,IAAUN,IAAIK,GAAGJ,IAAIK,KAAGY,GAAElB,EAAEC,EAAEI,EAAEC,EAAET,EAAEE,EAAEG,EAAEE,EAAED,CAAC,EAAE,SAAS,SAASN,EAAE,CAACC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKD,CAAC,CAAC,CAAC,EAAE,EAAEG,EAAEK,EAAEJ,EAAEK,GAAE,KAAK,CAAC,IAAI,IAAIR,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAEE,EAAEE,EAAED,EAAE,CAAC,CAACF,EAAEO,CAAC,CAAC,OAAOR,CAAC,CAAC,SAASqB,GAAEtB,EAAEC,EAAEC,EAAE,CAAC,MAAM,CAACF,EAAE,KAAK,IAAIE,CAAC,EAAED,EAAE,KAAK,IAAIC,CAAC,EAAEF,EAAE,KAAK,IAAIE,CAAC,EAAED,EAAE,KAAK,IAAIC,CAAC,CAAC,CAAC,CAAC,SAASmB,GAAErB,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAEE,EAAEC,EAAE,CAAC,IAAM,GAAGE,EAAE,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,IAAIC,EAAE,CAAC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,GAAGP,EAAE,CAACI,EAAEC,EAAEC,EAAEC,CAAC,EAAEP,MAAM,CAAC,CAACT,EAAEC,CAAC,EAAEqB,GAAEtB,EAAEC,EAAE,CAAC,CAAC,EAAE,CAACC,EAAEC,CAAC,EAAEmB,GAAEpB,EAAEC,EAAE,CAAC,CAAC,EAAE,IAAMI,GAAGP,EAAEE,GAAG,EAAEO,GAAGR,EAAEE,GAAG,EAAMQ,EAAEJ,EAAEA,GAAGH,EAAEA,GAAGK,EAAEA,GAAGJ,EAAEA,GAAGM,EAAE,IAAIA,EAAE,KAAK,KAAKA,CAAC,EAAEP,GAAGO,EAAEN,GAAGM,GAAG,IAAMC,EAAER,EAAEA,EAAEa,EAAEZ,EAAEA,EAAEa,EAAEN,EAAEK,EAAEL,EAAEH,EAAEA,EAAEQ,EAAEV,EAAEA,EAAEY,EAAEP,EAAEH,EAAEA,EAAEQ,EAAEV,EAAEA,EAAEa,IAAGd,IAAIE,EAAE,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIU,EAAEC,CAAC,CAAC,EAAEJ,EAAEK,GAAEhB,EAAEK,EAAEJ,GAAGL,EAAEE,GAAG,EAAEc,EAAEI,GAAE,CAACf,EAAEE,EAAEH,GAAGH,EAAEE,GAAG,EAAEU,EAAE,KAAK,KAAK,aAAaZ,EAAEe,GAAGX,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAES,EAAE,KAAK,KAAK,aAAaX,EAAEa,GAAGX,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAEL,EAAEe,IAAIF,EAAE,KAAK,GAAGA,GAAGX,EAAEa,IAAID,EAAE,KAAK,GAAGA,GAAGD,EAAE,IAAIA,EAAE,EAAE,KAAK,GAAGA,GAAGC,EAAE,IAAIA,EAAE,EAAE,KAAK,GAAGA,GAAGN,GAAGK,EAAEC,IAAID,GAAG,EAAE,KAAK,IAAI,CAACL,GAAGM,EAAED,IAAIC,GAAG,EAAE,KAAK,GAAG,CAAC,IAAIG,EAAEH,EAAED,EAAE,GAAG,KAAK,IAAII,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAMjB,EAAEc,EAAEb,EAAEC,EAAEI,EAAEH,EAAEW,EAAEN,GAAGM,EAAED,EAAEA,EAAE,IAAI,KAAK,GAAG,IAAI,EAAEA,EAAE,IAAI,KAAK,GAAG,IAAI,GAAGD,EAAES,GAAEnB,EAAEa,EAAEX,EAAE,KAAK,IAAIU,CAAC,EAAEX,EAAEa,EAAEX,EAAE,KAAK,IAAIS,CAAC,EAAEb,EAAEK,EAAEF,EAAEC,EAAE,EAAE,EAAEG,EAAE,CAACM,EAAEd,EAAEe,EAAEC,CAAC,CAAC,CAAC,CAACC,EAAEH,EAAED,EAAE,IAAMK,EAAE,KAAK,IAAIL,CAAC,EAAEM,EAAE,KAAK,IAAIN,CAAC,EAAEO,EAAE,KAAK,IAAIN,CAAC,EAAES,EAAE,KAAK,IAAIT,CAAC,EAAEU,EAAE,KAAK,IAAIP,EAAE,CAAC,EAAEQ,EAAE,EAAE,EAAErB,EAAEoB,EAAEE,EAAE,EAAE,EAAErB,EAAEmB,EAAEG,EAAE,CAAC3B,EAAEC,CAAC,EAAE2B,EAAE,CAAC5B,EAAEyB,EAAEN,EAAElB,EAAEyB,EAAER,CAAC,EAAEW,EAAE,CAAC3B,EAAEuB,EAAEF,EAAEpB,EAAEuB,EAAEN,CAAC,EAAEU,EAAE,CAAC5B,EAAEC,CAAC,EAAE,GAAGyB,EAAE,CAAC,EAAE,EAAED,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAED,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEnB,EAAE,MAAM,CAACmB,EAAEC,EAAEC,CAAC,EAAE,OAAOlB,CAAC,EAAE,CAACA,EAAE,CAACgB,EAAEC,EAAEC,CAAC,EAAE,OAAOlB,CAAC,EAAE,IAAMZ,EAAE,CAAC,EAAE,QAAQC,EAAE,EAAEA,EAAEW,EAAE,OAAOX,GAAG,EAAE,CAAC,IAAMC,EAAEoB,GAAEV,EAAEX,CAAC,EAAE,CAAC,EAAEW,EAAEX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEE,EAAEmB,GAAEV,EAAEX,EAAE,CAAC,EAAE,CAAC,EAAEW,EAAEX,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEG,EAAEkB,GAAEV,EAAEX,EAAE,CAAC,EAAE,CAAC,EAAEW,EAAEX,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAED,EAAE,KAAK,CAACE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOJ,CAAC,CAAC,CAAC,IAAMuB,GAAE,CAAC,WAAW,SAASvB,EAAEC,EAAE,CAAC,OAAO8B,EAAE/B,EAAEC,CAAC,CAAC,EAAE,oBAAoB,SAASD,EAAEC,EAAEC,EAAE,CAAC,OAAO8B,GAAEhC,EAAEC,EAAEC,CAAC,CAAC,EAAE,QAAQ,SAASF,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAEuB,GAAE1B,EAAEC,EAAEC,CAAC,EAAE,OAAOyB,GAAE7B,EAAEC,EAAEG,EAAEC,CAAC,EAAE,KAAK,EAAE,cAAc,SAASL,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,OAAO6B,GAAEjC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAE,CAAC,CAAC,EAAE,SAASoB,GAAExB,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI6B,GAAEjC,EAAEC,EAAEC,EAAEC,EAAEC,CAAC,CAAC,CAAC,CAAC,SAASqB,GAAEzB,EAAEC,EAAEC,EAAE,CAAC,IAAMC,GAAGH,GAAG,CAAC,GAAG,OAAO,GAAGG,EAAE,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAE,QAAQH,EAAE,EAAEA,EAAEE,EAAE,EAAEF,IAAIG,EAAE,KAAK,GAAG6B,GAAEjC,EAAEC,CAAC,EAAE,CAAC,EAAED,EAAEC,CAAC,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAEC,CAAC,CAAC,EAAE,OAAOD,GAAGG,EAAE,KAAK,GAAG6B,GAAEjC,EAAEG,EAAE,CAAC,EAAE,CAAC,EAAEH,EAAEG,EAAE,CAAC,EAAE,CAAC,EAAEH,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAIE,CAAC,CAAC,CAAC,OAAWD,IAAJ,EAAMqB,GAAExB,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEE,CAAC,EAAE,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,SAASwB,GAAE1B,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,OAAO,SAASJ,EAAEC,EAAE,CAAC,OAAOwB,GAAEzB,EAAE,GAAGC,CAAC,CAAC,GAAE,CAAC,CAACD,EAAEC,CAAC,EAAE,CAACD,EAAEE,EAAED,CAAC,EAAE,CAACD,EAAEE,EAAED,EAAEE,CAAC,EAAE,CAACH,EAAEC,EAAEE,CAAC,CAAC,EAAEC,CAAC,CAAC,CAAC,SAASuB,GAAE3B,EAAEC,EAAE,CAAC,GAAGD,EAAE,OAAO,CAAC,IAAME,EAAY,OAAOF,EAAE,CAAC,EAAE,CAAC,GAAvB,SAAyB,CAACA,CAAC,EAAEA,EAAEG,EAAE+B,GAAEhC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAGD,EAAE,WAAWA,CAAC,EAAEG,EAAEH,EAAE,mBAAmB,CAAC,EAAEiC,GAAEhC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAID,EAAE,WAAWkC,GAAElC,CAAC,CAAC,EAAE,QAAQD,EAAE,EAAEA,EAAEE,EAAE,OAAOF,IAAI,CAAC,IAAMK,EAAEH,EAAEF,CAAC,EAAE,GAAGK,EAAE,OAAO,CAAC,IAAML,EAAEkC,GAAE7B,EAAE,GAAG,EAAE,GAAGJ,EAAE,WAAWA,CAAC,EAAEC,EAAED,EAAE,mBAAmB,CAAC,EAAEiC,GAAE7B,EAAE,KAAK,EAAE,IAAIJ,EAAE,WAAWkC,GAAElC,CAAC,CAAC,EAAE,QAAUA,KAAKD,EAAWC,EAAE,KAAX,QAAeE,EAAE,KAAKF,CAAC,EAAE,QAAUD,KAAKE,EAAWF,EAAE,KAAX,QAAeI,EAAE,KAAKJ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,IAAIG,EAAE,OAAOC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,SAASwB,GAAE5B,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,MAAM,KAAK,IAAIH,EAAE,EAAE,CAAC,EAAE,KAAK,IAAIC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAEG,EAAE,KAAK,KAAK,KAAK,IAAIF,EAAE,eAAeA,EAAE,eAAe,KAAK,KAAK,GAAG,EAAEC,CAAC,CAAC,EAAEE,EAAE,EAAE,KAAK,GAAGD,EAAM,EAAE,KAAK,IAAIJ,EAAE,CAAC,EAAEM,EAAE,KAAK,IAAIL,EAAE,CAAC,EAAQO,EAAE,EAAEN,EAAE,aAAa,OAAO,GAAG6B,EAAE,EAAEvB,EAAEN,CAAC,EAAEI,GAAGyB,EAAEzB,EAAEE,EAAEN,CAAC,EAAE,CAAC,UAAUG,EAAE,GAAG,EAAE,GAAGC,CAAC,CAAC,CAAC,SAASuB,GAAE7B,EAAEC,EAAEC,EAAEC,EAAE,CAAC,GAAK,CAACC,EAAEC,CAAC,EAAE+B,GAAEjC,EAAE,UAAUH,EAAEC,EAAEE,EAAE,GAAGA,EAAE,GAAG,EAAEA,EAAE,UAAU6B,GAAE,GAAGA,GAAE,GAAG,EAAE9B,CAAC,EAAEA,CAAC,EAAEA,CAAC,EAAM,EAAEmC,GAAEjC,EAAE,KAAKF,CAAC,EAAE,GAAG,CAACA,EAAE,oBAAwBA,EAAE,YAAN,EAAgB,CAAC,GAAK,CAACE,CAAC,EAAEgC,GAAEjC,EAAE,UAAUH,EAAEC,EAAEE,EAAE,GAAGA,EAAE,GAAG,IAAI,EAAED,CAAC,EAAEG,EAAEgC,GAAEjC,EAAE,KAAKF,CAAC,EAAE,EAAE,EAAE,OAAOG,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgBA,EAAE,MAAM,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,SAASyB,GAAE9B,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAEE,EAAE,CAAC,IAAMC,EAAET,EAAE,EAAEC,EAAMU,EAAE,KAAK,IAAIT,EAAE,CAAC,EAAEU,EAAE,KAAK,IAAIT,EAAE,CAAC,EAAEQ,GAAGoB,EAAE,IAAIpB,EAAEH,CAAC,EAAEI,GAAGmB,EAAE,IAAInB,EAAEJ,CAAC,EAAE,IAAIK,EAAET,EAAEU,EAAET,EAAE,KAAKQ,EAAE,GAAGA,GAAG,EAAE,KAAK,GAAGC,GAAG,EAAE,KAAK,GAAGA,EAAED,EAAE,EAAE,KAAK,KAAKA,EAAE,EAAEC,EAAE,EAAE,KAAK,IAAI,IAAMC,EAAE,EAAE,KAAK,GAAGP,EAAE,eAAeQ,EAAE,KAAK,IAAID,EAAE,GAAGD,EAAED,GAAG,CAAC,EAAEI,EAAEqB,GAAEtB,EAAEP,EAAE,EAAEE,EAAEC,EAAEC,EAAEC,EAAE,EAAEN,CAAC,EAAE,GAAG,CAACA,EAAE,mBAAmB,CAAC,IAAMR,EAAEsC,GAAEtB,EAAEP,EAAE,EAAEE,EAAEC,EAAEC,EAAEC,EAAE,IAAIN,CAAC,EAAES,EAAE,KAAK,GAAGjB,CAAC,CAAC,CAAC,OAAO,IAAIM,EAAEW,EAAE,KAAK,GAAGgB,GAAExB,EAAE,EAAEA,EAAEE,EAAE,KAAK,IAAIE,CAAC,EAAE,EAAED,EAAE,KAAK,IAAIC,CAAC,EAAEL,CAAC,EAAE,GAAGyB,GAAExB,EAAE,EAAEA,EAAEE,EAAE,KAAK,IAAIG,CAAC,EAAE,EAAEF,EAAE,KAAK,IAAIE,CAAC,EAAEN,CAAC,CAAC,EAAES,EAAE,KAAK,CAAC,GAAG,SAAS,KAAK,CAACR,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,CAACA,EAAEE,EAAE,KAAK,IAAIE,CAAC,EAAE,EAAED,EAAE,KAAK,IAAIC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,IAAII,CAAC,CAAC,CAAC,SAASsB,GAAEvC,EAAEC,EAAE,CAAC,IAAMC,EAAEkB,GAAED,GAAED,GAAElB,CAAC,CAAC,CAAC,EAAEG,EAAE,CAAC,EAAMC,EAAE,CAAC,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAS,CAAC,IAAIL,EAAE,KAAKO,CAAC,IAAIL,EAAE,OAAOF,EAAE,CAAC,IAAI,IAAIK,EAAE,CAACE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEH,EAAE,CAACG,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,IAAIJ,EAAE,KAAK,GAAG8B,GAAE5B,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEE,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEN,CAAC,CAAC,EAAEI,EAAE,CAACE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,GAAK,CAACP,EAAEE,EAAEE,EAAEE,EAAEE,EAAEC,CAAC,EAAEF,EAAEJ,EAAE,KAAK,GAAGqC,GAAExC,EAAEE,EAAEE,EAAEE,EAAEE,EAAEC,EAAEJ,EAAEJ,CAAC,CAAC,EAAEI,EAAE,CAACG,EAAEC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAIN,EAAE,KAAK,GAAG8B,GAAE5B,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAED,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEH,CAAC,CAAC,EAAEI,EAAE,CAACD,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,IAAID,CAAC,CAAC,CAAC,SAASsC,GAAEzC,EAAEC,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAE,QAAUC,KAAKH,EAAE,GAAGG,EAAE,OAAO,CAAC,IAAMH,EAAEC,EAAE,qBAAqB,EAAEG,EAAED,EAAE,OAAO,GAAGC,EAAE,EAAE,CAACF,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACC,EAAE,CAAC,EAAE,CAAC,EAAE4B,EAAE/B,EAAEC,CAAC,EAAEE,EAAE,CAAC,EAAE,CAAC,EAAE4B,EAAE/B,EAAEC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQI,EAAE,EAAEA,EAAED,EAAEC,IAAIH,EAAE,KAAK,CAAC,GAAG,SAAS,KAAK,CAACC,EAAEE,CAAC,EAAE,CAAC,EAAE0B,EAAE/B,EAAEC,CAAC,EAAEE,EAAEE,CAAC,EAAE,CAAC,EAAE0B,EAAE/B,EAAEC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,WAAW,IAAIC,CAAC,CAAC,CAAC,SAASwC,GAAE1C,EAAEC,EAAE,CAAC,OAAO,SAASD,EAAEC,EAAE,CAAC,IAAIC,EAAEF,EAAE,WAAW,UAAU,GAAG,CAACW,GAAET,CAAC,EAAE,OAAOA,EAAE,CAAC,IAAI,SAASS,GAAET,CAAC,IAAIS,GAAET,CAAC,EAAE,IAAIK,GAAEN,CAAC,GAAG,MAAM,IAAI,cAAcU,GAAET,CAAC,IAAIS,GAAET,CAAC,EAAE,IAAII,GAAEL,CAAC,GAAG,MAAM,IAAI,OAAOU,GAAET,CAAC,IAAIS,GAAET,CAAC,EAAE,IAAIM,GAAEP,CAAC,GAAG,MAAM,IAAI,SAASU,GAAET,CAAC,IAAIS,GAAET,CAAC,EAAE,IAAIO,GAAER,CAAC,GAAG,MAAM,IAAI,cAAcU,GAAET,CAAC,IAAIS,GAAET,CAAC,EAAE,IAAIQ,GAAET,CAAC,GAAG,MAAM,QAAQC,EAAE,UAAUS,GAAET,CAAC,IAAIS,GAAET,CAAC,EAAE,IAAIE,GAAEH,CAAC,EAAE,CAAC,OAAOU,GAAET,CAAC,CAAC,GAAED,EAAEsB,EAAC,EAAE,aAAavB,EAAEC,CAAC,CAAC,CAAC,SAASkC,GAAEnC,EAAE,CAAC,IAAMC,EAAE,OAAO,OAAO,CAAC,EAAED,CAAC,EAAE,OAAOC,EAAE,WAAW,OAAOD,EAAE,OAAOC,EAAE,KAAKD,EAAE,KAAK,GAAGC,CAAC,CAAC,SAAS0C,GAAE3C,EAAE,CAAC,OAAOA,EAAE,aAAaA,EAAE,WAAW,IAAIY,GAAEZ,EAAE,MAAM,CAAC,GAAGA,EAAE,WAAW,KAAK,CAAC,CAAC,SAASgC,GAAEhC,EAAEC,EAAEC,EAAEC,EAAE,EAAE,CAAC,OAAOD,EAAE,UAAUC,GAAGwC,GAAEzC,CAAC,GAAGD,EAAED,GAAGA,EAAE,CAAC,SAAS+B,EAAE/B,EAAEC,EAAEC,EAAE,EAAE,CAAC,OAAO8B,GAAE,CAAChC,EAAEA,EAAEC,EAAEC,CAAC,CAAC,CAAC,SAAS+B,GAAEjC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,GAAG,CAAC,IAAM,EAAEA,EAAED,EAAE,uBAAuBA,EAAE,mBAAmBE,EAAEsC,GAAE5C,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAOE,EAAE,IAAME,EAAEoC,GAAE5C,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,GAAG,EAAE,EAAE,OAAOE,EAAE,OAAOE,CAAC,CAAC,CAAC,SAASoC,GAAE5C,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAIN,EAAEE,EAAE,CAAC,EAAE,KAAK,IAAID,EAAEE,EAAE,CAAC,EAAEK,EAAE,KAAK,KAAKF,CAAC,EAAMG,EAAE,EAAEA,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,UAAUA,EAAE,SAAS,IAAI,EAAEJ,EAAE,qBAAqB,EAAE,EAAE,EAAE,IAAIE,IAAI,EAAEE,EAAE,IAAI,IAAMG,EAAE,EAAE,EAAEC,EAAE,GAAG,GAAG+B,GAAEvC,CAAC,EAAMS,EAAET,EAAE,OAAOA,EAAE,qBAAqBD,EAAEF,GAAG,IAAIa,EAAEV,EAAE,OAAOA,EAAE,qBAAqBJ,EAAEE,GAAG,IAAIW,EAAEkB,EAAElB,EAAET,EAAEK,CAAC,EAAEK,EAAEiB,EAAEjB,EAAEV,EAAEK,CAAC,EAAE,IAAMM,EAAE,CAAC,EAAEC,EAAE,IAAIe,EAAEpB,EAAEP,EAAEK,CAAC,EAAEQ,EAAE,IAAIc,EAAE,EAAE3B,EAAEK,CAAC,EAAES,EAAEd,EAAE,iBAAiB,OAAOC,IAAI,EAAEU,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACf,GAAGkB,EAAE,EAAEF,EAAE,GAAGf,GAAGiB,EAAE,EAAEF,EAAE,EAAE,CAAC,CAAC,EAAED,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACf,GAAGkB,EAAE,EAAEa,EAAE,EAAE3B,EAAEK,CAAC,GAAGR,GAAGiB,EAAE,EAAEa,EAAE,EAAE3B,EAAEK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAEM,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACF,EAAEb,GAAGE,EAAEF,GAAGY,EAAEI,EAAE,EAAEF,EAAEb,GAAGE,EAAEF,GAAGW,EAAEI,EAAE,EAAEH,EAAEb,EAAE,GAAGE,EAAEF,GAAGY,EAAEI,EAAE,EAAEF,EAAEb,EAAE,GAAGE,EAAEF,GAAGW,EAAEI,EAAE,EAAEd,GAAGgB,EAAE,EAAEF,EAAE,GAAGb,GAAGe,EAAE,EAAEF,EAAE,EAAE,CAAC,CAAC,EAAED,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACF,EAAEb,GAAGE,EAAEF,GAAGY,EAAEK,EAAE,EAAEH,EAAEb,GAAGE,EAAEF,GAAGW,EAAEK,EAAE,EAAEJ,EAAEb,EAAE,GAAGE,EAAEF,GAAGY,EAAEK,EAAE,EAAEH,EAAEb,EAAE,GAAGE,EAAEF,GAAGW,EAAEK,EAAE,EAAEf,GAAGgB,EAAE,EAAED,EAAE,GAAGd,GAAGe,EAAE,EAAED,EAAE,EAAE,CAAC,CAAC,EAAEF,CAAC,CAAC,SAASmB,GAAElC,EAAEC,EAAEC,EAAE,CAAC,GAAG,CAACF,EAAE,OAAO,MAAM,CAAC,EAAE,IAAMG,EAAE,CAAC,EAAEA,EAAE,KAAK,CAACH,EAAE,CAAC,EAAE,CAAC,EAAE+B,EAAE9B,EAAEC,CAAC,EAAEF,EAAE,CAAC,EAAE,CAAC,EAAE+B,EAAE9B,EAAEC,CAAC,CAAC,CAAC,EAAEC,EAAE,KAAK,CAACH,EAAE,CAAC,EAAE,CAAC,EAAE+B,EAAE9B,EAAEC,CAAC,EAAEF,EAAE,CAAC,EAAE,CAAC,EAAE+B,EAAE9B,EAAEC,CAAC,CAAC,CAAC,EAAE,QAAQE,EAAE,EAAEA,EAAEJ,EAAE,OAAOI,IAAID,EAAE,KAAK,CAACH,EAAEI,CAAC,EAAE,CAAC,EAAE2B,EAAE9B,EAAEC,CAAC,EAAEF,EAAEI,CAAC,EAAE,CAAC,EAAE2B,EAAE9B,EAAEC,CAAC,CAAC,CAAC,EAAEE,IAAIJ,EAAE,OAAO,GAAGG,EAAE,KAAK,CAACH,EAAEI,CAAC,EAAE,CAAC,EAAE2B,EAAE9B,EAAEC,CAAC,EAAEF,EAAEI,CAAC,EAAE,CAAC,EAAE2B,EAAE9B,EAAEC,CAAC,CAAC,CAAC,EAAE,OAAOmC,GAAElC,EAAE,KAAKD,CAAC,CAAC,CAAC,SAASmC,GAAErC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAEH,EAAE,OAAOI,EAAE,CAAC,EAAE,GAAGD,EAAE,EAAE,CAAC,IAAME,EAAE,CAAC,EAAE,EAAE,EAAEH,EAAE,eAAeE,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACJ,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQC,EAAE,EAAEA,EAAE,EAAEE,EAAEF,IAAI,CAAC,IAAMC,EAAEF,EAAEC,CAAC,EAAEI,EAAE,CAAC,EAAE,CAACH,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEG,EAAE,CAAC,EAAE,CAACH,EAAE,CAAC,GAAG,EAAEF,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAEC,EAAE,CAAC,GAAG,EAAEF,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAEI,EAAE,CAAC,EAAE,CAACL,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAED,EAAEC,CAAC,EAAE,CAAC,EAAE,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAED,EAAEC,CAAC,EAAE,CAAC,EAAE,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAEI,EAAE,CAAC,EAAE,CAACL,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAEG,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACC,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGJ,GAAOA,EAAE,SAAN,EAAa,CAAC,IAAMD,EAAEE,EAAE,oBAAoBE,EAAE,KAAK,CAAC,GAAG,SAAS,KAAK,CAACH,EAAE,CAAC,EAAE8B,EAAE/B,EAAEE,CAAC,EAAED,EAAE,CAAC,EAAE8B,EAAE/B,EAAEE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAUC,IAAJ,GAAOC,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACJ,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEI,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACJ,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAOG,IAAJ,GAAOC,EAAE,KAAK,GAAGwC,GAAE5C,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,CAAC,EAAEE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAOE,CAAC,CAAC,SAASgC,GAAEpC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,CAAC,IAAME,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,GAAOH,EAAE,YAAN,EAAgB,CAACN,GAAG,EAAES,EAAE,KAAK,CAACR,EAAEE,EAAE,KAAK,IAAI,CAACH,CAAC,EAAEE,EAAEE,EAAE,KAAK,IAAI,CAACJ,CAAC,CAAC,CAAC,EAAE,QAAQK,EAAE,EAAEA,GAAG,EAAE,KAAK,GAAGA,GAAGL,EAAE,CAAC,IAAMA,EAAE,CAACC,EAAEE,EAAE,KAAK,IAAIE,CAAC,EAAEH,EAAEE,EAAE,KAAK,IAAIC,CAAC,CAAC,EAAEG,EAAE,KAAKR,CAAC,EAAES,EAAE,KAAKT,CAAC,CAAC,CAACS,EAAE,KAAK,CAACR,EAAEE,EAAE,KAAK,IAAI,CAAC,EAAED,EAAEE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAEK,EAAE,KAAK,CAACR,EAAEE,EAAE,KAAK,IAAIH,CAAC,EAAEE,EAAEE,EAAE,KAAK,IAAIJ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAM,EAAE+B,EAAE,GAAGzB,CAAC,EAAE,KAAK,GAAG,EAAEG,EAAE,KAAK,CAACsB,EAAE1B,EAAEC,CAAC,EAAEL,EAAE,GAAGE,EAAE,KAAK,IAAI,EAAEH,CAAC,EAAE+B,EAAE1B,EAAEC,CAAC,EAAEJ,EAAE,GAAGE,EAAE,KAAK,IAAI,EAAEJ,CAAC,CAAC,CAAC,EAAE,IAAMW,EAAE,EAAE,KAAK,GAAG,EAAE,IAAI,QAAQJ,EAAE,EAAEA,EAAEI,EAAEJ,GAAGP,EAAE,CAAC,IAAMA,EAAE,CAAC+B,EAAE1B,EAAEC,CAAC,EAAEL,EAAEE,EAAE,KAAK,IAAII,CAAC,EAAEwB,EAAE1B,EAAEC,CAAC,EAAEJ,EAAEE,EAAE,KAAK,IAAIG,CAAC,CAAC,EAAEC,EAAE,KAAKR,CAAC,EAAES,EAAE,KAAKT,CAAC,CAAC,CAACS,EAAE,KAAK,CAACsB,EAAE1B,EAAEC,CAAC,EAAEL,EAAEE,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,EAAE4B,EAAE1B,EAAEC,CAAC,EAAEJ,EAAEE,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAEK,EAAE,KAAK,CAACsB,EAAE1B,EAAEC,CAAC,EAAEL,EAAE,IAAIE,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE4B,EAAE1B,EAAEC,CAAC,EAAEJ,EAAE,IAAIE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAEK,EAAE,KAAK,CAACsB,EAAE1B,EAAEC,CAAC,EAAEL,EAAE,GAAGE,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE4B,EAAE1B,EAAEC,CAAC,EAAEJ,EAAE,GAAGE,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAACK,EAAED,CAAC,CAAC,CAAC,SAAS8B,GAAEtC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAEE,EAAE,CAAC,IAAMC,EAAEJ,EAAE0B,EAAE,GAAGvB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAACuB,EAAEzB,EAAEE,CAAC,EAAEP,EAAE,GAAGE,EAAE,KAAK,IAAIM,EAAET,CAAC,EAAE+B,EAAEzB,EAAEE,CAAC,EAAEN,EAAE,GAAGE,EAAE,KAAK,IAAIK,EAAET,CAAC,CAAC,CAAC,EAAE,QAAQK,EAAEI,EAAEJ,GAAG,EAAEA,GAAGL,EAAE,EAAE,KAAK,CAAC+B,EAAEzB,EAAEE,CAAC,EAAEP,EAAEE,EAAE,KAAK,IAAIE,CAAC,EAAE0B,EAAEzB,EAAEE,CAAC,EAAEN,EAAEE,EAAE,KAAK,IAAIC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAACJ,EAAEE,EAAE,KAAK,IAAI,CAAC,EAAED,EAAEE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAACH,EAAEE,EAAE,KAAK,IAAI,CAAC,EAAED,EAAEE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAEiC,GAAE,EAAE,KAAK7B,CAAC,CAAC,CAAC,SAASgC,GAAExC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEC,EAAE,CAAC,IAAME,EAAE,CAAC,EAAEC,EAAE,CAACH,EAAE,qBAAqB,GAAGA,EAAE,qBAAqB,GAAG,EAAE,EAAM,EAAE,CAAC,EAAE,CAAC,EAAQK,EAAEL,EAAE,mBAAmB,EAAE,EAAEM,EAAEN,EAAE,iBAAiB,QAAQO,EAAE,EAAEA,EAAEF,EAAEE,IAAQA,IAAJ,EAAML,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEA,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,EAAE,CAAC,GAAGI,EAAE,EAAEmB,EAAEtB,EAAE,CAAC,EAAEH,CAAC,GAAG,EAAE,CAAC,GAAGM,EAAE,EAAEmB,EAAEtB,EAAE,CAAC,EAAEH,CAAC,EAAE,CAAC,CAAC,EAAE,EAAEM,EAAE,CAACR,EAAEC,CAAC,EAAE,CAACD,EAAE2B,EAAEtB,EAAEI,CAAC,EAAEP,CAAC,EAAED,EAAE0B,EAAEtB,EAAEI,CAAC,EAAEP,CAAC,CAAC,EAAEE,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACR,EAAE+B,EAAEtB,EAAEI,CAAC,EAAEP,CAAC,EAAEL,EAAE8B,EAAEtB,EAAEI,CAAC,EAAEP,CAAC,EAAEJ,EAAE6B,EAAEtB,EAAEI,CAAC,EAAEP,CAAC,EAAEH,EAAE4B,EAAEtB,EAAEI,CAAC,EAAEP,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAOE,CAAC,CAAC,SAASqC,GAAE7C,EAAE,CAAC,MAAM,CAAC,GAAGA,CAAC,CAAC,CAAC,SAAS8C,GAAE9C,EAAEC,EAAE,EAAE,CAAC,IAAMC,EAAEF,EAAE,OAAO,GAAGE,EAAE,EAAE,MAAM,IAAI,MAAM,0CAA0C,EAAE,IAAMC,EAAE,CAAC,EAAE,GAAOD,IAAJ,EAAMC,EAAE,KAAK0C,GAAE7C,EAAE,CAAC,CAAC,EAAE6C,GAAE7C,EAAE,CAAC,CAAC,EAAE6C,GAAE7C,EAAE,CAAC,CAAC,EAAE6C,GAAE7C,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAME,EAAE,CAAC,EAAEA,EAAE,KAAKF,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,QAAQC,EAAE,EAAEA,EAAED,EAAE,OAAOC,IAAIC,EAAE,KAAKF,EAAEC,CAAC,CAAC,EAAEA,IAAID,EAAE,OAAO,GAAGE,EAAE,KAAKF,EAAEC,CAAC,CAAC,EAAE,IAAMG,EAAE,CAAC,EAAEC,EAAE,EAAEJ,EAAEE,EAAE,KAAK0C,GAAE3C,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQF,EAAE,EAAEA,EAAE,EAAEE,EAAE,OAAOF,IAAI,CAAC,IAAMC,EAAEC,EAAEF,CAAC,EAAEI,EAAE,CAAC,EAAE,CAACH,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEG,EAAE,CAAC,EAAE,CAACH,EAAE,CAAC,GAAGI,EAAEH,EAAEF,EAAE,CAAC,EAAE,CAAC,EAAEK,EAAEH,EAAEF,EAAE,CAAC,EAAE,CAAC,GAAG,EAAEC,EAAE,CAAC,GAAGI,EAAEH,EAAEF,EAAE,CAAC,EAAE,CAAC,EAAEK,EAAEH,EAAEF,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAEI,EAAE,CAAC,EAAE,CAACF,EAAEF,EAAE,CAAC,EAAE,CAAC,GAAGK,EAAEH,EAAEF,CAAC,EAAE,CAAC,EAAEK,EAAEH,EAAEF,EAAE,CAAC,EAAE,CAAC,GAAG,EAAEE,EAAEF,EAAE,CAAC,EAAE,CAAC,GAAGK,EAAEH,EAAEF,CAAC,EAAE,CAAC,EAAEK,EAAEH,EAAEF,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAEI,EAAE,CAAC,EAAE,CAACF,EAAEF,EAAE,CAAC,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAE,CAAC,CAAC,EAAEG,EAAE,KAAKC,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOD,CAAC,CAAC,SAAS4C,GAAE/C,EAAEC,EAAE,CAAC,OAAO,KAAK,IAAID,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAID,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS+C,GAAEhD,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE4C,GAAE9C,EAAEC,CAAC,EAAE,GAAOC,IAAJ,EAAM,OAAO4C,GAAE/C,EAAEC,CAAC,EAAE,IAAIG,IAAIJ,EAAE,CAAC,EAAEC,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAED,EAAE,CAAC,IAAID,EAAE,CAAC,EAAEC,EAAE,CAAC,IAAIC,EAAE,CAAC,EAAED,EAAE,CAAC,IAAIE,EAAE,OAAOC,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEA,CAAC,CAAC,EAAE2C,GAAE/C,EAAEiD,GAAEhD,EAAEC,EAAEE,CAAC,CAAC,CAAC,CAAC,SAAS6C,GAAEjD,EAAEC,EAAEC,EAAE,CAAC,MAAM,CAACF,EAAE,CAAC,GAAGC,EAAE,CAAC,EAAED,EAAE,CAAC,GAAGE,EAAEF,EAAE,CAAC,GAAGC,EAAE,CAAC,EAAED,EAAE,CAAC,GAAGE,CAAC,CAAC,CAAC,SAASgD,GAAElD,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAED,GAAG,CAAC,EAAE,IAAG,SAASH,EAAEC,EAAE,CAAC,IAAMC,EAAEF,EAAEC,EAAE,CAAC,EAAEE,EAAEH,EAAEC,EAAE,CAAC,EAAEG,EAAEJ,EAAEC,EAAE,CAAC,EAAEI,EAAEL,EAAEC,EAAE,CAAC,EAAMM,EAAE,EAAEJ,EAAE,CAAC,EAAE,EAAED,EAAE,CAAC,EAAEG,EAAE,CAAC,EAAEE,GAAGA,EAAE,IAAID,EAAE,EAAEH,EAAE,CAAC,EAAE,EAAED,EAAE,CAAC,EAAEG,EAAE,CAAC,EAAEC,GAAGA,EAAE,IAAIE,EAAE,EAAEJ,EAAE,CAAC,EAAE,EAAEC,EAAE,CAAC,EAAEH,EAAE,CAAC,EAAEM,GAAGA,EAAE,IAAIC,EAAE,EAAEL,EAAE,CAAC,EAAE,EAAEC,EAAE,CAAC,EAAEH,EAAE,CAAC,EAAE,OAAOO,GAAGA,EAAEF,EAAEC,IAAID,EAAEC,GAAGF,EAAEG,IAAIH,EAAEG,GAAGF,EAAED,CAAC,GAAEN,EAAEC,CAAC,EAAEC,EAAE,CAAC,IAAM,EAAEF,EAAEC,EAAE,CAAC,EAAKG,EAAE,QAASC,EAAED,EAAEA,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,KAAK2C,GAAE1C,EAAE,CAAC,CAAC,EAAG,GAAGD,EAAE,KAAK,CAAC,GAAOA,EAAE,KAAK,CAAC,EAAEA,EAAE,KAAKJ,EAAEC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAWI,EAAEL,EAAEC,EAAE,CAAC,EAAEM,EAAEP,EAAEC,EAAE,CAAC,EAAEK,EAAEN,EAAEC,EAAE,CAAC,EAAEO,EAAER,EAAEC,EAAE,CAAC,EAAEQ,EAAEwC,GAAE5C,EAAEE,EAAE,EAAC,EAAEG,EAAEuC,GAAE1C,EAAED,EAAE,EAAC,EAAE,EAAE2C,GAAE3C,EAAEE,EAAE,EAAC,EAAEI,EAAEqC,GAAExC,EAAEC,EAAE,EAAC,EAAEG,EAAEoC,GAAEvC,EAAE,EAAE,EAAC,EAAE,EAAEuC,GAAErC,EAAEC,EAAE,EAAC,EAAEqC,GAAE,CAAC7C,EAAEI,EAAEG,EAAE,CAAC,EAAE,EAAEV,EAAEE,CAAC,EAAE8C,GAAE,CAAC,EAAErC,EAAE,EAAEL,CAAC,EAAE,EAAEN,EAAEE,CAAC,CAAC,CAAC,IAAIC,EAAE,EAAE,OAAOD,CAAC,CAAC,SAAS+C,GAAEnD,EAAEC,EAAE,CAAC,OAAOmD,GAAEpD,EAAE,EAAEA,EAAE,OAAOC,CAAC,CAAC,CAAC,SAASmD,GAAEpD,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAED,GAAG,CAAC,EAAE,EAAEJ,EAAEC,CAAC,EAAEK,EAAEN,EAAEE,EAAE,CAAC,EAAMM,EAAE,EAAEC,EAAE,EAAE,QAAQN,EAAEF,EAAE,EAAEE,EAAED,EAAE,EAAE,EAAEC,EAAE,CAAC,IAAMF,EAAE+C,GAAEhD,EAAEG,CAAC,EAAE,EAAEG,CAAC,EAAEL,EAAEO,IAAIA,EAAEP,EAAEQ,EAAEN,EAAE,CAAC,OAAO,KAAK,KAAKK,CAAC,EAAEL,GAAGiD,GAAEpD,EAAEC,EAAEQ,EAAE,EAAEN,EAAEE,CAAC,EAAE+C,GAAEpD,EAAES,EAAEP,EAAEC,EAAEE,CAAC,IAAIA,EAAE,QAAQA,EAAE,KAAK,CAAC,EAAEA,EAAE,KAAKC,CAAC,GAAGD,CAAC,CAAC,SAASgD,GAAErD,EAAEC,EAAE,IAAIC,EAAE,CAAC,IAAMC,EAAE,CAAC,EAAEC,GAAGJ,EAAE,OAAO,GAAG,EAAE,QAAQE,EAAE,EAAEA,EAAEE,EAAEF,IAAKgD,GAAElD,EAAE,EAAEE,EAAED,EAAEE,CAAC,EAAE,OAAOD,GAAGA,EAAE,EAAEkD,GAAEjD,EAAE,EAAEA,EAAE,OAAOD,CAAC,EAAEC,CAAC,CAAC,IAAMmD,GAAG,OAAaC,GAAN,KAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,eAAe,CAAC,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,OAAO,YAAY,EAAE,eAAe,EAAE,aAAa,IAAI,eAAe,EAAE,UAAU,UAAU,WAAW,GAAG,aAAa,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,KAAK,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,uBAAuB,EAAE,EAAE,KAAK,OAAO,GAAG,CAAC,EAAE,KAAK,OAAO,UAAU,KAAK,eAAe,KAAK,GAAG,KAAK,OAAO,OAAO,EAAE,CAAC,OAAO,SAAS,CAAC,OAAO,KAAK,MAAM,KAAK,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,KAAK,cAAc,CAAC,GAAG,EAAEtD,EAAEC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,KAAKD,GAAG,CAAC,EAAE,QAAQC,GAAG,KAAK,cAAc,CAAC,CAAC,KAAK,EAAED,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,CAACoB,GAAE,EAAEvB,EAAEC,EAAEC,EAAEE,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,UAAU,EAAEJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAEG,EAAE,CAAC,EAAED,EAAEoB,GAAE,EAAEzB,EAAEC,EAAEC,EAAEE,CAAC,EAAE,GAAGA,EAAE,KAAK,CAAC,IAAMD,EAAE,CAAC,CAAC,EAAEH,CAAC,EAAE,CAAC,EAAEC,EAAED,CAAC,EAAE,CAAC,EAAEC,EAAED,EAAEE,CAAC,EAAE,CAAC,EAAEF,EAAEE,CAAC,CAAC,EAAYE,EAAE,YAAZ,QAAsBE,EAAE,KAAKkC,GAAE,CAACrC,CAAC,EAAEC,CAAC,CAAC,EAAEE,EAAE,KAAKmC,GAAE,CAACtC,CAAC,EAAEC,CAAC,CAAC,CAAC,CAAC,OAAOA,EAAE,SAASiD,IAAI/C,EAAE,KAAKD,CAAC,EAAE,KAAK,GAAG,YAAYC,EAAEF,CAAC,CAAC,CAAC,QAAQ,EAAEJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAEG,EAAE,CAAC,EAAED,EAAEsB,GAAE1B,EAAEC,EAAEE,CAAC,EAAEG,EAAEqB,GAAE,EAAE5B,EAAEI,EAAEC,CAAC,EAAE,GAAGD,EAAE,KAAK,GAAaA,EAAE,YAAZ,QAAsB,CAAC,IAAMH,EAAE2B,GAAE,EAAE5B,EAAEI,EAAEC,CAAC,EAAE,MAAMJ,EAAE,KAAK,WAAWK,EAAE,KAAKL,CAAC,CAAC,MAAMK,EAAE,KAAKmC,GAAE,CAAClC,EAAE,eAAe,EAAEH,CAAC,CAAC,EAAE,OAAOA,EAAE,SAASiD,IAAI/C,EAAE,KAAKC,EAAE,KAAK,EAAE,KAAK,GAAG,UAAUD,EAAEF,CAAC,CAAC,CAAC,OAAO,EAAEJ,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,QAAQ,EAAEH,EAAEC,EAAEA,EAAEC,CAAC,EAAE,OAAOC,EAAE,MAAM,SAASA,CAAC,CAAC,WAAW,EAAEH,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAE,OAAO,KAAK,GAAG,aAAa,CAACwB,GAAE,EAAE,GAAGvB,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,IAAI,EAAED,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAE,GAAGD,EAAE,CAAC,IAAME,EAAE,KAAK,GAAGF,CAAC,EAAEG,EAAE,CAAC,EAAEC,EAAEoB,GAAE,EAAE7B,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAE,GAAGC,CAAC,EAAE,GAAGD,GAAGC,EAAE,KAAK,GAAaA,EAAE,YAAZ,QAAsB,CAAC,IAAMD,EAAE,OAAO,OAAO,CAAC,EAAEC,CAAC,EAAED,EAAE,mBAAmB,GAAG,IAAMD,EAAEwB,GAAE,EAAE7B,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,GAAG,GAAGE,CAAC,EAAED,EAAE,KAAK,WAAWG,EAAE,KAAKH,CAAC,CAAC,MAAMG,EAAE,MAAK,SAAST,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAE,CAAC,IAAMD,EAAEN,EAAEQ,EAAEP,EAAMQ,EAAE,KAAK,IAAIP,EAAE,CAAC,EAAEQ,EAAE,KAAK,IAAIP,EAAE,CAAC,EAAEM,GAAGsB,EAAE,IAAItB,EAAEF,CAAC,EAAEG,GAAGqB,EAAE,IAAIrB,EAAEH,CAAC,EAAE,IAAII,EAAEP,EAAEQ,EAAEP,EAAE,KAAKM,EAAE,GAAGA,GAAG,EAAE,KAAK,GAAGC,GAAG,EAAE,KAAK,GAAGA,EAAED,EAAE,EAAE,KAAK,KAAKA,EAAE,EAAEC,EAAE,EAAE,KAAK,IAAI,IAAMC,GAAGD,EAAED,GAAGJ,EAAE,eAAeO,EAAE,CAAC,EAAE,QAAQd,EAAEW,EAAEX,GAAGY,EAAEZ,GAAGa,EAAEC,EAAE,KAAK,CAACR,EAAEG,EAAE,KAAK,IAAIT,CAAC,EAAEQ,EAAEE,EAAE,KAAK,IAAIV,CAAC,CAAC,CAAC,EAAE,OAAOc,EAAE,KAAK,CAACR,EAAEG,EAAE,KAAK,IAAIG,CAAC,EAAEJ,EAAEE,EAAE,KAAK,IAAIE,CAAC,CAAC,CAAC,EAAEE,EAAE,KAAK,CAACR,EAAEE,CAAC,CAAC,EAAEkC,GAAE,CAAC5B,CAAC,EAAEP,CAAC,CAAC,GAAE,EAAEN,EAAEC,EAAEC,EAAEC,EAAEC,EAAEG,CAAC,CAAC,EAAE,OAAOA,EAAE,SAAS8C,IAAI7C,EAAE,KAAKC,CAAC,EAAE,KAAK,GAAG,MAAMD,EAAED,CAAC,CAAC,CAAC,MAAM,EAAEP,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAEE,EAAE,CAAC,EAAEC,EAAEuB,GAAE,EAAEzB,CAAC,EAAE,GAAGA,EAAE,MAAMA,EAAE,OAAOoD,GAAG,GAAapD,EAAE,YAAZ,QAAsB,CAAC,IAAMD,EAAE0B,GAAE,EAAE,OAAO,OAAO,OAAO,OAAO,CAAC,EAAEzB,CAAC,EAAE,CAAC,mBAAmB,GAAG,UAAUA,EAAE,UAAUA,EAAE,UAAUA,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAEC,EAAE,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,aAAaF,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAMA,EAAE,CAAC,EAAEG,EAAE,EAAE,GAAGA,EAAE,OAAO,CAAC,IAAMJ,EAAY,OAAOI,EAAE,CAAC,EAAE,CAAC,GAAvB,SAAyB,CAACA,CAAC,EAAEA,EAAE,QAAU,KAAKJ,EAAE,EAAE,OAAO,EAAEC,EAAE,KAAK,GAAG,CAAC,EAAM,EAAE,SAAN,EAAaA,EAAE,KAAK,GAAGoD,GAAEP,GAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE5C,EAAE,WAAW,CAAC,CAAC,EAAED,EAAE,KAAK,GAAGoD,GAAEP,GAAE,CAAC,EAAE,IAAI,EAAE5C,EAAE,WAAW,CAAC,CAAC,CAAC,CAACD,EAAE,QAAQE,EAAE,KAAKuC,GAAE,CAACzC,CAAC,EAAEC,CAAC,CAAC,CAAC,CAAC,OAAOA,EAAE,SAASoD,IAAInD,EAAE,KAAKC,CAAC,EAAE,KAAK,GAAG,QAAQD,EAAED,CAAC,CAAC,CAAC,QAAQ,EAAED,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAEE,EAAE,CAAC,EAAEC,EAAEqB,GAAE,EAAE,GAAGvB,CAAC,EAAE,OAAOA,EAAE,OAAiBA,EAAE,YAAZ,QAAsBC,EAAE,KAAKsC,GAAE,CAAC,CAAC,EAAEvC,CAAC,CAAC,EAAEC,EAAE,KAAKuC,GAAE,CAAC,CAAC,EAAExC,CAAC,CAAC,GAAGA,EAAE,SAASoD,IAAInD,EAAE,KAAKC,CAAC,EAAE,KAAK,GAAG,UAAUD,EAAED,CAAC,CAAC,CAAC,KAAK,EAAED,EAAE,CAAC,IAAMC,EAAE,KAAK,GAAGD,CAAC,EAAEE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,GAAG,OAAOA,EAAED,CAAC,EAAE,GAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,GAAG,EAAE,QAAQ,UAAU,GAAG,EAAE,IAAME,EAAEF,EAAE,MAAsBA,EAAE,OAAlB,eAAwBA,EAAE,OAAOoD,GAAGjD,EAAEH,EAAE,SAASoD,GAAG/C,EAAE,CAAC,EAAEL,EAAE,gBAAgBA,EAAE,eAAe,GAAGI,GAAE,SAASN,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAEiB,GAAED,GAAED,GAAElB,CAAC,CAAC,CAAC,EAAEI,EAAE,CAAC,EAAMC,EAAE,CAAC,EAAEE,EAAE,CAAC,EAAE,CAAC,EAAED,EAAE,CAAC,EAAQE,EAAE,IAAI,CAACF,EAAE,QAAQ,GAAGD,EAAE,KAAK,GAAGgD,GAAE/C,EAAEL,CAAC,CAAC,EAAEK,EAAE,CAAC,CAAC,EAAEG,EAAE,IAAI,CAACD,EAAE,EAAEH,EAAE,SAASD,EAAE,KAAKC,CAAC,EAAEA,EAAE,CAAC,EAAE,EAAE,OAAS,CAAC,IAAIL,EAAE,KAAKC,CAAC,IAAIE,EAAE,OAAOH,EAAE,CAAC,IAAI,IAAIS,EAAE,EAAEF,EAAE,CAACN,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAEI,EAAE,KAAKE,CAAC,EAAE,MAAM,IAAI,IAAIC,EAAE,EAAEH,EAAE,KAAK,CAACJ,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,GAAG,CAACK,EAAE,OAAO,CAAC,IAAMN,EAAEK,EAAE,OAAOA,EAAEA,EAAE,OAAO,CAAC,EAAEE,EAAED,EAAE,KAAK,CAACN,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAACM,EAAE,KAAK,CAACL,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAEK,EAAE,KAAK,CAACL,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAEK,EAAE,KAAK,CAACL,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAIO,EAAE,EAAEH,EAAE,KAAK,CAACE,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGE,EAAE,EAAE,CAACP,EAAE,OAAOE,EAAE,IAAMM,EAAE,CAAC,EAAE,QAAUV,KAAKI,EAAE,CAAC,IAAMH,EAAEkD,GAAEnD,EAAEE,CAAC,EAAED,EAAE,QAAQS,EAAE,KAAKT,CAAC,CAAC,CAAC,OAAOS,CAAC,GAAE,EAAE,EAAEH,EAAE,EAAE,GAAGL,EAAE,gBAAgB,IAAI,EAAEA,EAAE,WAAW,CAAC,EAAEM,EAAE+B,GAAE,EAAErC,CAAC,EAAE,GAAGE,EAAE,GAAaF,EAAE,YAAZ,QAAsB,GAAOI,EAAE,SAAN,EAAa,CAAC,IAAML,EAAEsC,GAAE,EAAE,OAAO,OAAO,OAAO,OAAO,CAAC,EAAErC,CAAC,EAAE,CAAC,mBAAmB,GAAG,UAAUA,EAAE,UAAUA,EAAE,UAAUA,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAEC,EAAE,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,aAAaF,EAAE,GAAG,CAAC,CAAC,CAAC,MAAME,EAAE,KAAKsC,GAAEnC,EAAEJ,CAAC,CAAC,OAAOC,EAAE,KAAKuC,GAAEpC,EAAEJ,CAAC,CAAC,EAAE,OAAOG,IAAIE,EAAED,EAAE,SAASN,GAAG,CAACG,EAAE,KAAKsB,GAAEzB,EAAE,GAAGE,CAAC,CAAC,CAAC,EAAE,EAAEC,EAAE,KAAKK,CAAC,GAAG,KAAK,GAAG,OAAOL,EAAED,CAAC,CAAC,CAAC,UAAU,EAAED,EAAE,CAAC,IAAIC,EAAE,GAAG,QAAUC,KAAK,EAAE,IAAI,CAAC,IAAMH,EAAY,OAAOC,GAAjB,UAAoBA,GAAG,EAAEE,EAAE,KAAK,KAAKH,GAAG,CAACA,EAAE,QAAQC,CAAC,EAAE,EAAEE,EAAE,KAAK,OAAOA,EAAE,GAAG,CAAC,IAAI,OAAOD,GAAG,IAAIF,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,IAAI,MAAM,IAAI,WAAWE,GAAG,IAAIF,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,IAAI,MAAM,IAAI,SAASE,GAAG,IAAIF,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAOE,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAMD,EAAE,EAAE,MAAM,CAAC,EAAEC,EAAE,EAAE,SAAS,KAAK,eAAeC,EAAE,CAAC,EAAE,QAAUH,KAAKC,EAAE,CAAC,IAAIA,EAAE,KAAK,OAAOD,EAAE,KAAK,CAAC,IAAI,OAAOC,EAAE,CAAC,EAAE,KAAK,UAAUD,CAAC,EAAE,OAAOE,EAAE,OAAO,YAAYA,EAAE,YAAY,KAAKoD,EAAE,EAAE,MAAM,IAAI,WAAWrD,EAAE,CAAC,EAAE,KAAK,UAAUD,CAAC,EAAE,OAAOsD,GAAG,YAAY,EAAE,KAAKpD,EAAE,MAAMoD,EAAE,EAAE,MAAM,IAAI,aAAarD,EAAE,KAAK,WAAWD,EAAEE,CAAC,CAAC,CAACD,GAAGE,EAAE,KAAKF,CAAC,CAAC,CAAC,OAAOE,CAAC,CAAC,WAAW,EAAEF,EAAE,CAAC,IAAIC,EAAED,EAAE,WAAW,OAAOC,EAAE,IAAIA,EAAED,EAAE,YAAY,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,OAAOA,EAAE,MAAMqD,GAAG,YAAYpD,EAAE,KAAKoD,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,QAAQ,CAACtD,EAAEC,IAAQA,IAAJ,GAAgBD,EAAE,KAAX,OAAc,CAAC,CAAC,EAAOwD,GAAN,KAAQ,CAAC,YAAY,EAAEvD,EAAE,CAAC,KAAK,OAAO,EAAE,KAAK,IAAI,KAAK,OAAO,WAAW,IAAI,EAAE,KAAK,IAAI,IAAIsD,GAAGtD,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAMA,EAAE,EAAE,MAAM,CAAC,EAAEC,EAAE,EAAE,SAAS,KAAK,kBAAkB,EAAEC,EAAE,KAAK,IAAIC,EAAE,EAAE,QAAQ,wBAAwB,QAAUC,KAAKJ,EAAE,OAAOI,EAAE,KAAK,CAAC,IAAI,OAAOF,EAAE,KAAK,EAAEA,EAAE,YAAqBD,EAAE,SAAX,OAAkB,cAAcA,EAAE,OAAOC,EAAE,UAAUD,EAAE,YAAYA,EAAE,gBAAgBC,EAAE,YAAYD,EAAE,cAAc,EAAEA,EAAE,uBAAuBC,EAAE,eAAeD,EAAE,sBAAsB,KAAK,eAAeC,EAAEE,EAAED,CAAC,EAAED,EAAE,QAAQ,EAAE,MAAM,IAAI,WAAW,CAACA,EAAE,KAAK,EAAEA,EAAE,UAAUD,EAAE,MAAM,GAAG,IAAMD,EAAY,EAAE,QAAZ,SAA+B,EAAE,QAAd,WAA8B,EAAE,QAAX,OAAiB,UAAU,UAAU,KAAK,eAAeE,EAAEE,EAAED,EAAEH,CAAC,EAAEE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,aAAa,KAAK,WAAWA,EAAEE,EAAEH,CAAC,CAAC,CAAC,CAAC,WAAW,EAAED,EAAEC,EAAE,CAAC,IAAIC,EAAED,EAAE,WAAWC,EAAE,IAAIA,EAAED,EAAE,YAAY,GAAG,EAAE,KAAK,EAAEA,EAAE,cAAc,EAAE,YAAYA,EAAE,YAAY,EAAEA,EAAE,qBAAqB,EAAE,eAAeA,EAAE,oBAAoB,EAAE,YAAYA,EAAE,MAAM,GAAG,EAAE,UAAUC,EAAE,KAAK,eAAe,EAAEF,EAAEC,EAAE,uBAAuB,EAAE,EAAE,QAAQ,CAAC,CAAC,eAAe,EAAED,EAAEC,EAAEC,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,QAAUA,KAAKF,EAAE,IAAI,CAAC,IAAMA,EAAY,OAAOC,GAAjB,UAAoBA,GAAG,EAAEC,EAAE,KAAK,KAAKH,GAAG,CAACA,EAAE,QAAQE,CAAC,EAAE,EAAEC,EAAE,KAAK,OAAOA,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,OAAOF,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,WAAW,EAAE,cAAcA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,EAAE,OAAOA,EAAE,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAcA,EAAE,OAAf,WAAoB,EAAE,KAAKE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,GAAG,CAAC,mBAAmB,CAAC,OAAO,KAAK,IAAI,cAAc,CAAC,KAAK,EAAEF,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,KAAK,EAAEJ,EAAEC,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,UAAU,EAAEJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,UAAU,EAAEJ,EAAEC,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,QAAQ,EAAEJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,QAAQ,EAAEJ,EAAEC,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,OAAO,EAAEJ,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,OAAO,EAAEH,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,WAAW,EAAEH,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,WAAW,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,QAAQ,EAAED,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,QAAQ,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,IAAI,EAAED,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAE,GAAGD,EAAE,CAAC,IAAME,EAAE,KAAK,IAAI,IAAI,EAAEP,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKE,CAAC,EAAEA,CAAC,CAAC,MAAM,EAAEP,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,MAAM,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,KAAK,EAAED,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,KAAK,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,EAAEA,CAAC,CAAC,EAAOuD,GAAG,6BAAmCC,GAAN,KAAQ,CAAC,YAAY,EAAEzD,EAAE,CAAC,KAAK,IAAI,EAAE,KAAK,IAAI,IAAIsD,GAAGtD,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAMA,EAAE,EAAE,MAAM,CAAC,EAAEC,EAAE,EAAE,SAAS,KAAK,kBAAkB,EAAEC,EAAE,KAAK,IAAI,eAAe,OAAO,SAASC,EAAED,EAAE,gBAAgBsD,GAAG,GAAG,EAAEpD,EAAE,EAAE,QAAQ,wBAAwB,QAAUE,KAAKN,EAAE,CAAC,IAAIA,EAAE,KAAK,OAAOM,EAAE,KAAK,CAAC,IAAI,OAAON,EAAEE,EAAE,gBAAgBsD,GAAG,MAAM,EAAExD,EAAE,aAAa,IAAI,KAAK,UAAUM,EAAEF,CAAC,CAAC,EAAEJ,EAAE,aAAa,SAASC,EAAE,MAAM,EAAED,EAAE,aAAa,eAAeC,EAAE,YAAY,EAAE,EAAED,EAAE,aAAa,OAAO,MAAM,EAAEC,EAAE,gBAAgBD,EAAE,aAAa,mBAAmBC,EAAE,eAAe,KAAK,GAAG,EAAE,KAAK,CAAC,EAAEA,EAAE,sBAAsBD,EAAE,aAAa,oBAAoB,GAAGC,EAAE,oBAAoB,EAAE,EAAE,MAAM,IAAI,WAAWD,EAAEE,EAAE,gBAAgBsD,GAAG,MAAM,EAAExD,EAAE,aAAa,IAAI,KAAK,UAAUM,EAAEF,CAAC,CAAC,EAAEJ,EAAE,aAAa,SAAS,MAAM,EAAEA,EAAE,aAAa,eAAe,GAAG,EAAEA,EAAE,aAAa,OAAOC,EAAE,MAAM,EAAE,EAAY,EAAE,QAAZ,SAA+B,EAAE,QAAd,WAAqBD,EAAE,aAAa,YAAY,SAAS,EAAE,MAAM,IAAI,aAAaA,EAAE,KAAK,WAAWE,EAAEI,EAAEL,CAAC,CAAC,CAACD,GAAGG,EAAE,YAAYH,CAAC,CAAC,CAAC,OAAOG,CAAC,CAAC,WAAW,EAAEH,EAAEC,EAAE,CAAC,IAAIC,EAAED,EAAE,WAAWC,EAAE,IAAIA,EAAED,EAAE,YAAY,GAAG,IAAME,EAAE,EAAE,gBAAgBqD,GAAG,MAAM,EAAE,OAAOrD,EAAE,aAAa,IAAI,KAAK,UAAUH,EAAEC,EAAE,uBAAuB,CAAC,EAAEE,EAAE,aAAa,SAASF,EAAE,MAAM,EAAE,EAAEE,EAAE,aAAa,eAAeD,EAAE,EAAE,EAAEC,EAAE,aAAa,OAAO,MAAM,EAAEF,EAAE,cAAcE,EAAE,aAAa,mBAAmBF,EAAE,aAAa,KAAK,GAAG,EAAE,KAAK,CAAC,EAAEA,EAAE,oBAAoBE,EAAE,aAAa,oBAAoB,GAAGF,EAAE,kBAAkB,EAAE,EAAEE,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,GAAG,CAAC,mBAAmB,CAAC,OAAO,KAAK,IAAI,cAAc,CAAC,UAAU,EAAEH,EAAE,CAAC,OAAO,KAAK,IAAI,UAAU,EAAEA,CAAC,CAAC,CAAC,KAAK,EAAEA,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,KAAK,EAAEJ,EAAEC,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,UAAU,EAAEJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,UAAU,EAAEJ,EAAEC,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,QAAQ,EAAEJ,EAAEC,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,QAAQ,EAAEJ,EAAEC,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,OAAO,EAAEJ,EAAEC,EAAEC,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,OAAO,EAAEH,EAAEC,EAAEC,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,WAAW,EAAEH,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,WAAW,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,QAAQ,EAAED,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,QAAQ,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,IAAI,EAAED,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAE,GAAGD,EAAE,CAAC,IAAME,EAAE,KAAK,IAAI,IAAI,EAAEP,EAAEC,EAAEC,EAAEC,EAAEC,EAAEE,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKE,CAAC,CAAC,CAAC,MAAM,EAAEP,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,MAAM,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,KAAK,EAAED,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,KAAK,EAAED,CAAC,EAAE,OAAO,KAAK,KAAKC,CAAC,CAAC,CAAC,EAAKyD,EAAG,CAAC,OAAO,CAAC3D,EAAEC,IAAI,IAAIuD,GAAGxD,EAAEC,CAAC,EAAE,IAAI,CAACD,EAAEC,IAAI,IAAIyD,GAAG1D,EAAEC,CAAC,EAAE,UAAUD,GAAG,IAAIuD,GAAGvD,CAAC,EAAE,QAAQ,IAAIuD,GAAG,QAAQ,CAAC,ECsC3k2B,IAAIK,EAA8BC,EAAO,MAAOC,EAAQC,EAAMC,IAAa,CACzE,IAAIC,EACEC,EAAgBH,EAAK,eAAiBI,EAASC,EAAW,GAAG,UAAU,EACxEJ,EAGHC,EAAaD,EAFbC,EAAa,eAIf,IAAMI,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASG,CAAU,EAAE,KAAK,KAAMF,EAAK,OAASA,EAAK,EAAE,EACxFO,EAAUD,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,OAAO,EAAE,KAAK,QAASE,EAAoBR,EAAK,UAAU,CAAC,EAC1GS,EACAT,EAAK,QAAU,OACjBS,EAAQ,GAERA,EAAQ,OAAOT,EAAK,OAAU,SAAWA,EAAK,MAAQA,EAAK,MAAM,CAAC,EAEpE,IAAMU,EAAQ,MAAMC,GAAWJ,EAASK,GAAaC,GAAeJ,CAAK,EAAGJ,EAAW,CAAC,EAAG,CACzF,cAAAF,EACA,MAAOH,EAAK,OAASK,EAAW,EAAE,WAAW,cAE7C,WAAY,sBACZ,MAAOL,EAAK,WACZ,iBAAkB,CAAC,CAACA,EAAK,MAAQ,CAAC,CAACA,EAAK,GAC1C,CAAC,EACGc,EAAOJ,EAAM,QAAQ,EACnBK,GAAef,GAAM,SAAW,GAAK,EAC3C,GAAIG,EAAe,CACjB,IAAMa,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAOR,CAAK,EACjBS,EAASH,EAAI,qBAAqB,KAAK,EAC7C,GAAIG,EAAQ,CACV,IAAMC,EAAYX,EAAM,QAAQ,cAAe,EAAE,EAAE,KAAK,IAAM,GAC9D,MAAM,QAAQ,IACZ,CAAC,GAAGU,CAAM,EAAE,IACTE,GAAQ,IAAI,QAASC,GAAQ,CAC5B,SAASC,GAAa,CAGpB,GAFAF,EAAI,MAAM,QAAU,OACpBA,EAAI,MAAM,cAAgB,SACtBD,EAAW,CACb,IAAMI,EAAenB,EAAW,EAAE,SAAWA,EAAW,EAAE,SAAW,OAAO,iBAAiB,SAAS,IAAI,EAAE,SACtGoB,EAAkB,EAClB,CAACC,EAAqBC,GAAsB,QAAQ,EAAIC,GAAcJ,CAAY,EAClFK,EAAQH,EAAqBD,EAAkB,KACrDJ,EAAI,MAAM,SAAWQ,EACrBR,EAAI,MAAM,SAAWQ,CACvB,MACER,EAAI,MAAM,MAAQ,OAEpBC,EAAID,CAAG,CACT,CACAvB,EAAOyB,EAAY,YAAY,EAC/B,WAAW,IAAM,CACXF,EAAI,UACNE,EAAW,CAEf,CAAC,EACDF,EAAI,iBAAiB,QAASE,CAAU,EACxCF,EAAI,iBAAiB,OAAQE,CAAU,CACzC,CAAC,CACH,CACF,CACF,CACAT,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,CACA,OAAIX,EACFI,EAAQ,KAAK,YAAa,aAAe,CAACO,EAAK,MAAQ,EAAI,KAAO,CAACA,EAAK,OAAS,EAAI,GAAG,EAExFP,EAAQ,KAAK,YAAa,gBAAkB,CAACO,EAAK,OAAS,EAAI,GAAG,EAEhEd,EAAK,aACPO,EAAQ,KAAK,YAAa,aAAe,CAACO,EAAK,MAAQ,EAAI,KAAO,CAACA,EAAK,OAAS,EAAI,GAAG,EAE1FP,EAAQ,OAAO,OAAQ,cAAc,EAC9B,CAAE,SAAAD,EAAU,KAAAQ,EAAM,YAAAC,EAAa,MAAOR,CAAQ,CACvD,EAAG,aAAa,EACZuB,GAA8BhC,EAAO,MAAOC,EAAQU,EAAOsB,IAAY,CACzE,IAAM5B,EAAgB4B,EAAQ,eAAiB3B,EAASC,EAAW,GAAG,WAAW,UAAU,EACrFE,EAAUR,EAAO,OAAO,GAAG,EAAE,KAAK,QAAS,OAAO,EAAE,KAAK,QAASgC,EAAQ,YAAc,EAAE,EAC1FrB,EAAQ,MAAMC,GAAWJ,EAASK,GAAaC,GAAeJ,CAAK,EAAGJ,EAAW,CAAC,EAAG,CACzF,cAAAF,EACA,MAAO4B,EAAQ,OAAS1B,EAAW,GAAG,WAAW,cACjD,MAAO0B,EAAQ,WACf,iBAAkB,CAAC,CAACA,EAAQ,MAAQ,CAAC,CAACA,EAAQ,GAChD,CAAC,EACGjB,EAAOJ,EAAM,QAAQ,EACnBK,EAAcgB,EAAQ,QAAU,EACtC,GAAI3B,EAASC,EAAW,GAAG,WAAW,UAAU,EAAG,CACjD,IAAMW,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAOR,CAAK,EACvBI,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,CACA,OAAIX,EACFI,EAAQ,KAAK,YAAa,aAAe,CAACO,EAAK,MAAQ,EAAI,KAAO,CAACA,EAAK,OAAS,EAAI,GAAG,EAExFP,EAAQ,KAAK,YAAa,gBAAkB,CAACO,EAAK,OAAS,EAAI,GAAG,EAEhEiB,EAAQ,aACVxB,EAAQ,KAAK,YAAa,aAAe,CAACO,EAAK,MAAQ,EAAI,KAAO,CAACA,EAAK,OAAS,EAAI,GAAG,EAE1FP,EAAQ,OAAO,OAAQ,cAAc,EAC9B,CAAE,SAAUR,EAAQ,KAAAe,EAAM,YAAAC,EAAa,MAAOR,CAAQ,CAC/D,EAAG,aAAa,EACZyB,EAAmClC,EAAO,CAACE,EAAMiC,IAAY,CAC/D,IAAMnB,EAAOmB,EAAQ,KAAK,EAAE,QAAQ,EACpCjC,EAAK,MAAQc,EAAK,MAClBd,EAAK,OAASc,EAAK,MACrB,EAAG,kBAAkB,EACjBoB,EAAiCpC,EAAO,CAACE,EAAMmC,KAAWnC,EAAK,OAAS,YAAc,aAAe,QAAU,IAAMA,EAAK,WAAa,KAAOmC,GAAS,IAAK,gBAAgB,EAChL,SAASC,EAAqBC,EAAQ,CACpC,IAAMC,EAAeD,EAAO,IAAI,CAACE,EAAGC,IAAM,GAAGA,IAAM,EAAI,IAAM,GAAG,GAAGD,EAAE,CAAC,IAAIA,EAAE,CAAC,EAAE,EAC/E,OAAAD,EAAa,KAAK,GAAG,EACdA,EAAa,KAAK,GAAG,CAC9B,CACAxC,EAAOsC,EAAsB,sBAAsB,EACnD,SAASK,GAA2BC,EAAIC,EAAIC,EAAIC,EAAIC,EAAWC,EAAW,CACxE,IAAMV,EAAS,CAAC,EAEVW,EAASJ,EAAKF,EACdO,EAASJ,EAAKF,EACdO,EAAcF,EAASD,EACvBI,EAAY,EAAI,KAAK,GAAKD,EAC1BE,EAAOT,EAAKM,EAAS,EAC3B,QAAST,EAAI,EAAGA,GAAK,GAAOA,IAAK,CAC/B,IAAMa,EAAIb,EAAI,GACRc,EAAIZ,EAAKW,EAAIL,EACbO,EAAIH,EAAON,EAAY,KAAK,IAAIK,GAAaG,EAAIZ,EAAG,EAC1DL,EAAO,KAAK,CAAE,EAAAiB,EAAG,EAAAC,CAAE,CAAC,CACtB,CACA,OAAOlB,CACT,CACAvC,EAAO2C,GAA4B,4BAA4B,EAC/D,SAASe,GAAqBC,EAASC,EAASC,EAAQC,EAAWC,EAAYC,EAAU,CACvF,IAAMzB,EAAS,CAAC,EACV0B,EAAgBF,EAAa,KAAK,GAAK,IAGvCG,GAFcF,EAAW,KAAK,GAAK,IACRC,IACDH,EAAY,GAC5C,QAASpB,EAAI,EAAGA,EAAIoB,EAAWpB,IAAK,CAClC,IAAMyB,EAAQF,EAAgBvB,EAAIwB,EAC5BV,EAAIG,EAAUE,EAAS,KAAK,IAAIM,CAAK,EACrCV,EAAIG,EAAUC,EAAS,KAAK,IAAIM,CAAK,EAC3C5B,EAAO,KAAK,CAAE,EAAG,CAACiB,EAAG,EAAG,CAACC,CAAE,CAAC,CAC9B,CACA,OAAOlB,CACT,CACAvC,EAAO0D,GAAsB,sBAAsB,EAOnD,IAAIU,GAAgCpE,EAAO,CAACE,EAAMmE,IAAU,CAC1D,IAAIb,EAAItD,EAAK,EACTuD,EAAIvD,EAAK,EACToE,EAAKD,EAAM,EAAIb,EACfe,EAAKF,EAAM,EAAIZ,EACfe,EAAItE,EAAK,MAAQ,EACjBuE,EAAIvE,EAAK,OAAS,EAClBwE,EAAIC,EACR,OAAI,KAAK,IAAIJ,CAAE,EAAIC,EAAI,KAAK,IAAIF,CAAE,EAAIG,GAChCF,EAAK,IACPE,EAAI,CAACA,GAEPC,EAAKH,IAAO,EAAI,EAAIE,EAAIH,EAAKC,EAC7BI,EAAKF,IAEDH,EAAK,IACPE,EAAI,CAACA,GAEPE,EAAKF,EACLG,EAAKL,IAAO,EAAI,EAAIE,EAAID,EAAKD,GAExB,CAAE,EAAGd,EAAIkB,EAAI,EAAGjB,EAAIkB,CAAG,CAChC,EAAG,eAAe,EACdC,GAAyBR,GAI7B,SAASS,GAAWC,EAAKC,EAAS,CAC5BA,GACFD,EAAI,KAAK,QAASC,CAAO,CAE7B,CACA/E,EAAO6E,GAAY,YAAY,EAC/B,eAAeG,GAAa9E,EAAM,CAChC,IAAM+E,EAAK7D,EAAQ,SAAS,gBAAgB,6BAA8B,eAAe,CAAC,EACpFF,EAAM+D,EAAG,OAAO,WAAW,EAC3BC,EAAS3E,EAAW,EACtBI,EAAQT,EAAK,MACbA,EAAK,OAASiF,GAASjF,EAAK,KAAK,IACnCS,EAAQ,MAAMyE,GAAqBlF,EAAK,MAAM,QAAQmF,GAAe,eAAgB;AAAA,CAAI,EAAGH,CAAM,GAGpG,IAAMI,EAAY,iBADCpF,EAAK,OAAS,YAAc,aACE,MAAQA,EAAK,WAAa,UAAYA,EAAK,WAAa,IAAM,IAC/G,IAAMS,EAAQ,UACd,OAAAO,EAAI,KAAKJ,GAAawE,EAAWJ,CAAM,CAAC,EACxCL,GAAW3D,EAAKhB,EAAK,UAAU,EAC/BgB,EAAI,MAAM,UAAW,cAAc,EACnCA,EAAI,MAAM,gBAAiB,KAAK,EAChCA,EAAI,MAAM,cAAe,QAAQ,EACjCA,EAAI,KAAK,QAAS,8BAA8B,EACzC+D,EAAG,KAAK,CACjB,CACAjF,EAAOgF,GAAc,cAAc,EACnC,IAAIO,GAA8BvF,EAAO,MAAOwF,EAAaC,EAAOC,EAASC,IAAW,CACtF,IAAIC,EAAaJ,GAAe,GAIhC,GAHI,OAAOI,GAAe,WACxBA,EAAaA,EAAW,CAAC,GAEvBtF,EAASC,EAAW,EAAE,UAAU,UAAU,EAAG,CAC/CqF,EAAaA,EAAW,QAAQ,UAAW,QAAQ,EACnDC,EAAI,KAAK,aAAeD,CAAU,EAClC,IAAM1F,EAAO,CACX,OAAAyF,EACA,MAAO5E,GAAe6E,CAAU,EAAE,QAChC,uBACC,GAAM,aAAa,EAAE,QAAQ,IAAK,GAAG,CAAC,QACzC,EACA,WAAYH,GAAQA,EAAM,QAAQ,QAAS,QAAQ,CACrD,EAEA,OADiB,MAAMT,GAAa9E,CAAI,CAE1C,KAAO,CACL,IAAM4F,EAAW,SAAS,gBAAgB,6BAA8B,MAAM,EAC9EA,EAAS,aAAa,QAASL,EAAM,QAAQ,SAAU,OAAO,CAAC,EAC/D,IAAIM,EAAO,CAAC,EACR,OAAOH,GAAe,SACxBG,EAAOH,EAAW,MAAM,qBAAqB,EACpC,MAAM,QAAQA,CAAU,EACjCG,EAAOH,EAEPG,EAAO,CAAC,EAEV,QAAWC,KAAOD,EAAM,CACtB,IAAME,EAAQ,SAAS,gBAAgB,6BAA8B,OAAO,EAC5EA,EAAM,eAAe,uCAAwC,YAAa,UAAU,EACpFA,EAAM,aAAa,KAAM,KAAK,EAC9BA,EAAM,aAAa,IAAK,GAAG,EACvBP,EACFO,EAAM,aAAa,QAAS,WAAW,EAEvCA,EAAM,aAAa,QAAS,KAAK,EAEnCA,EAAM,YAAcD,EAAI,KAAK,EAC7BF,EAAS,YAAYG,CAAK,CAC5B,CACA,OAAOH,CACT,CACF,EAAG,aAAa,EACZI,GAAsBX,GAGtBY,GAAyCnG,EAAO,CAACwD,EAAGC,EAAG2C,EAAYC,EAAaxC,IAAW,CAC7F,IACAL,EAAIK,EACJJ,EAEA,IACAD,EAAI4C,EAAavC,EAEjB,IACAA,EACAA,EACA,EACA,EACA,EACAL,EAAI4C,EACJ3C,EAAII,EAEJ,IACAJ,EAAI4C,EAAcxC,EAElB,IACAA,EACAA,EACA,EACA,EACA,EACAL,EAAI4C,EAAavC,EACjBJ,EAAI4C,EAEJ,IACA7C,EAAIK,EAEJ,IACAA,EACAA,EACA,EACA,EACA,EACAL,EACAC,EAAI4C,EAAcxC,EAElB,IACAJ,EAAII,EAEJ,IACAA,EACAA,EACA,EACA,EACA,EACAL,EAAIK,EACJJ,EAEA,GAEF,EAAE,KAAK,GAAG,EAAG,wBAAwB,EAGjC6C,GAAuBtG,EAAO,MAAOC,EAAQC,IAAS,CACxD2F,EAAI,KAAK,8BAA+B3F,EAAK,GAAIA,CAAI,EACrD,IAAMqG,EAAahG,EAAW,EACxB,CAAE,eAAAiG,EAAgB,cAAAC,CAAc,EAAIF,EACpC,CAAE,WAAAG,EAAY,cAAAC,CAAc,EAAIH,EAChC,CAAE,YAAAI,EAAa,WAAAC,EAAY,aAAAC,EAAc,iBAAAC,CAAiB,EAAIC,EAAc9G,CAAI,EAChFM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAAS,WAAaC,EAAK,UAAU,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,YAAaA,EAAK,IAAI,EACzHG,EAAgBC,EAASiG,EAAW,UAAU,UAAU,EACxD9F,EAAUD,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,gBAAgB,EAC7DI,EAAQ,MAAMC,GAAWJ,EAASP,EAAK,MAAO,CAClD,MAAOA,EAAK,WACZ,cAAAG,EACA,OAAQ,EACV,CAAC,EACGW,EAAOJ,EAAM,QAAQ,EACzB,GAAIN,EAASiG,EAAW,UAAU,UAAU,EAAG,CAC7C,IAAMrF,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAQR,CAAK,EACxBI,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,CACA,IAAMe,EAAQ7B,EAAK,OAASc,EAAK,MAAQd,EAAK,QAAUc,EAAK,MAAQd,EAAK,QAAUA,EAAK,MACrFA,EAAK,OAASc,EAAK,MAAQd,EAAK,QAClCA,EAAK,MAAQ6B,EAAQ7B,EAAK,OAAS,EAAIA,EAAK,QAE5CA,EAAK,KAAO,CAACA,EAAK,QAEpB,IAAM+G,EAAS/G,EAAK,OACd,EAAIA,EAAK,EAAI6B,EAAQ,EACrB0B,EAAIvD,EAAK,EAAI+G,EAAS,EAC5BpB,EAAI,MAAM,QAAS3F,EAAM,KAAK,UAAUA,CAAI,CAAC,EAC7C,IAAIgH,EACJ,GAAIhH,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAM,IAAI5G,CAAQ,EACvByB,EAAUoF,EAAkBnH,EAAM,CACtC,UAAW,GACX,KAAMwG,EAEN,OAAQC,EACR,WAAY,EACZ,KAAMF,CACR,CAAC,EACKa,EAAYH,EAAG,KAAKhB,GAAuB,EAAG1C,EAAG1B,EAAOkF,EAAQ,CAAC,EAAGhF,CAAO,EACjFiF,EAAQ1G,EAAS,OAAO,KACtBqF,EAAI,MAAM,wBAAyByB,CAAS,EACrCA,GACN,cAAc,EACjBJ,EAAM,OAAO,mBAAmB,EAAE,KAAK,QAASJ,EAAa,KAAK,GAAG,CAAC,EACtEI,EAAM,OAAO,MAAM,EAAE,KAAK,QAASH,EAAiB,KAAK,GAAG,EAAE,QAAQ,OAAQ,QAAQ,CAAC,CACzF,MACEG,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EAC9C0G,EAAM,KAAK,QAASL,CAAU,EAAE,KAAK,KAAM3G,EAAK,EAAE,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,IAAK,CAAC,EAAE,KAAK,IAAKuD,CAAC,EAAE,KAAK,QAAS1B,CAAK,EAAE,KAAK,SAAUkF,CAAM,EAE9I,GAAM,CAAE,uBAAAM,CAAuB,EAAIC,GAAwBjB,CAAU,EAMrE,GALA9F,EAAQ,KACN,YAEA,aAAaP,EAAK,EAAIc,EAAK,MAAQ,CAAC,KAAKd,EAAK,EAAIA,EAAK,OAAS,EAAIqH,CAAsB,GAC5F,EACIX,EAAa,CACf,IAAMa,EAAOhH,EAAQ,OAAO,MAAM,EAC9BgH,GACFA,EAAK,KAAK,QAASb,CAAW,CAElC,CACA,IAAMc,EAAUR,EAAM,KAAK,EAAE,QAAQ,EACrC,OAAAhH,EAAK,QAAU,EACfA,EAAK,MAAQwH,EAAQ,MACrBxH,EAAK,OAASwH,EAAQ,OACtBxH,EAAK,QAAUc,EAAK,OAASd,EAAK,QAAU,EAC5CA,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOO,GAAuB1E,EAAMmE,CAAK,CAC3C,EACO,CAAE,QAAS7D,EAAU,UAAWQ,CAAK,CAC9C,EAAG,MAAM,EACL2G,GAA4B3H,EAAO,CAACC,EAAQC,IAAS,CACvD,IAAMM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAAS,cAAc,EAAE,KAAK,KAAMC,EAAK,EAAE,EAC9EgH,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EAC9CoH,EAAU,EAAI1H,EAAK,QACnBe,EAAc2G,EAAU,EAC9BV,EAAM,KAAK,KAAMhH,EAAK,EAAE,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,IAAKA,EAAK,EAAIA,EAAK,MAAQ,EAAIe,CAAW,EAAE,KAAK,IAAKf,EAAK,EAAIA,EAAK,OAAS,EAAIe,CAAW,EAAE,KAAK,QAASf,EAAK,MAAQ0H,CAAO,EAAE,KAAK,SAAU1H,EAAK,OAAS0H,CAAO,EAAE,KAAK,OAAQ,MAAM,EAC9O,IAAMF,EAAUR,EAAM,KAAK,EAAE,QAAQ,EACrC,OAAAhH,EAAK,MAAQwH,EAAQ,MACrBxH,EAAK,OAASwH,EAAQ,OACtBxH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOO,GAAuB1E,EAAMmE,CAAK,CAC3C,EACO,CAAE,QAAS7D,EAAU,UAAW,CAAE,MAAO,EAAG,OAAQ,CAAE,CAAE,CACjE,EAAG,WAAW,EACVqH,GAAmC7H,EAAO,MAAOC,EAAQC,IAAS,CACpE,IAAMqG,EAAahG,EAAW,EACxB,CAAE,eAAAiG,EAAgB,cAAAC,CAAc,EAAIF,EACpC,CAAE,cAAAuB,EAAe,oBAAAC,EAAqB,yBAAAC,EAA0B,WAAAC,CAAW,EAAIzB,EAC/EhG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASC,EAAK,UAAU,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,UAAWA,EAAK,EAAE,EAAE,KAAK,YAAaA,EAAK,IAAI,EACrIgI,EAAa1H,EAAS,OAAO,IAAK,cAAc,EAChDG,EAAQH,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EAC5D2H,EAAY3H,EAAS,OAAO,MAAM,EAChCI,EAAQD,EAAM,KAAK,EAAE,YAAY,MAAMuF,GAAoBhG,EAAK,MAAOA,EAAK,WAAY,OAAQ,EAAI,CAAC,EACvGc,EAAOJ,EAAM,QAAQ,EACzB,GAAIN,EAASiG,EAAW,UAAU,UAAU,EAAG,CAC7C,IAAMrF,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAQR,CAAK,EACxBI,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,CACA,IAAM4G,EAAU,EAAI1H,EAAK,QACnBe,EAAc2G,EAAU,EACxB7F,GAAS7B,EAAK,OAASc,EAAK,MAAQd,EAAK,QAAUc,EAAK,MAAQd,EAAK,QAAUA,EAAK,OAAS0H,EAC/F1H,EAAK,OAASc,EAAK,MAAQd,EAAK,QAClCA,EAAK,MAAQ6B,EAAQ7B,EAAK,OAAS,EAAIA,EAAK,QAE5CA,EAAK,KAAO,CAACA,EAAK,QAEpB,IAAM+G,EAAS/G,EAAK,OAAS0H,EACvBQ,EAAclI,EAAK,OAAS0H,EAAU5G,EAAK,OAAS,EACpDwC,EAAItD,EAAK,EAAI6B,EAAQ,EACrB0B,EAAIvD,EAAK,EAAI+G,EAAS,EAC5B/G,EAAK,MAAQ6B,EACb,IAAMsG,EAASnI,EAAK,EAAIA,EAAK,OAAS,EAAIe,EAAcD,EAAK,OAAS,EAClEkG,EACJ,GAAIhH,EAAK,OAAS,YAAa,CAC7B,IAAMoI,EAAQpI,EAAK,WAAW,SAAS,0BAA0B,EAC3DiH,EAAKC,EAAM,IAAI5G,CAAQ,EACvB+H,EAAiBrI,EAAK,IAAMA,EAAK,GAAKiH,EAAG,KAAKhB,GAAuB3C,EAAGC,EAAG1B,EAAOkF,EAAQ,EAAE,EAAG,CACnG,UAAW,GACX,KAAMe,EACN,UAAW,QACX,OAAQC,EACR,KAAMxB,CACR,CAAC,EAAIU,EAAG,UAAU3D,EAAGC,EAAG1B,EAAOkF,EAAQ,CAAE,KAAMR,CAAc,CAAC,EAC9DS,EAAQ1G,EAAS,OAAO,IAAM+H,EAAgB,cAAc,EAC5D,IAAMC,EAAiBrB,EAAG,UAAU3D,EAAG6E,EAAQtG,EAAOqG,EAAa,CACjE,KAAME,EAAQR,EAAgBC,EAC9B,UAAWO,EAAQ,UAAY,QAC/B,OAAQL,EACR,KAAMxB,CACR,CAAC,EACDS,EAAQ1G,EAAS,OAAO,IAAM+H,EAAgB,cAAc,EAC5DJ,EAAY3H,EAAS,OAAO,IAAMgI,CAAc,CAClD,MACEtB,EAAQgB,EAAW,OAAO,OAAQ,cAAc,EAEhDhB,EAAM,KAAK,QADY,OACW,EAAE,KAAK,IAAK1D,CAAC,EAAE,KAAK,IAAKC,CAAC,EAAE,KAAK,QAAS1B,CAAK,EAAE,KAAK,SAAUkF,CAAM,EAAE,KAAK,YAAa/G,EAAK,IAAI,EACrIiI,EAAU,KAAK,QAAS,OAAO,EAAE,KAAK,IAAK3E,CAAC,EAAE,KAAK,IAAK6E,CAAM,EAAE,KAAK,QAAStG,CAAK,EAAE,KAAK,SAAUqG,CAAW,EAEjHzH,EAAM,KACJ,YACA,aAAaT,EAAK,EAAIc,EAAK,MAAQ,CAAC,KAAKyC,EAAI,GAAKnD,EAASiG,EAAW,UAAU,UAAU,EAAI,EAAI,EAAE,GACtG,EACA,IAAMmB,EAAUR,EAAM,KAAK,EAAE,QAAQ,EACrC,OAAAhH,EAAK,OAASwH,EAAQ,OACtBxH,EAAK,QAAU,EACfA,EAAK,QAAUc,EAAK,OAASd,EAAK,QAAU,EAC5CA,EAAK,UAAYc,EACjBd,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOO,GAAuB1E,EAAMmE,CAAK,CAC3C,EACO,CAAE,QAAS7D,EAAU,UAAWQ,CAAK,CAC9C,EAAG,kBAAkB,EACjByH,GAAgCzI,EAAO,MAAOC,EAAQC,IAAS,CACjE2F,EAAI,KAAK,8BAA+B3F,EAAK,GAAIA,CAAI,EACrD,IAAMqG,EAAahG,EAAW,EACxB,CAAE,eAAAiG,EAAgB,cAAAC,CAAc,EAAIF,EACpC,CAAE,WAAAG,EAAY,cAAAC,CAAc,EAAIH,EAChC,CAAE,YAAAI,EAAa,WAAAC,EAAY,aAAAC,EAAc,iBAAAC,CAAiB,EAAIC,EAAc9G,CAAI,EAChFM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAAS,WAAaC,EAAK,UAAU,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,YAAaA,EAAK,IAAI,EACzHG,EAAgBC,EAASiG,EAAW,UAAU,UAAU,EACxD9F,EAAUD,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,gBAAgB,EAC7DI,EAAQ,MAAMC,GAAWJ,EAASP,EAAK,MAAO,CAClD,MAAOA,EAAK,WACZ,cAAAG,EACA,OAAQ,GACR,MAAOH,EAAK,KACd,CAAC,EACGc,EAAOJ,EAAM,QAAQ,EACzB,GAAIN,EAASiG,EAAW,UAAU,UAAU,EAAG,CAC7C,IAAMrF,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAQR,CAAK,EACxBI,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,CACA,IAAMe,EAAQ7B,EAAK,OAASc,EAAK,MAAQd,EAAK,QAAUc,EAAK,MAAQd,EAAK,QAAUA,EAAK,MACrFA,EAAK,OAASc,EAAK,MAAQd,EAAK,QAClCA,EAAK,MAAQ6B,EAAQ7B,EAAK,OAAS,EAAIA,EAAK,QAE5CA,EAAK,KAAO,CAACA,EAAK,QAEpB,IAAM+G,EAAS/G,EAAK,OACd,EAAIA,EAAK,EAAI6B,EAAQ,EACrB0B,EAAIvD,EAAK,EAAI+G,EAAS,EAC5BpB,EAAI,MAAM,QAAS3F,EAAM,KAAK,UAAUA,CAAI,CAAC,EAC7C,IAAIgH,EACJ,GAAIhH,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAM,IAAI5G,CAAQ,EACvByB,EAAUoF,EAAkBnH,EAAM,CACtC,UAAW,GACX,KAAMwG,EAEN,OAAQC,EACR,WAAY,EACZ,KAAMF,CACR,CAAC,EACKa,EAAYH,EAAG,KAAKhB,GAAuB,EAAG1C,EAAG1B,EAAOkF,EAAQ/G,EAAK,EAAE,EAAG+B,CAAO,EACvFiF,EAAQ1G,EAAS,OAAO,KACtBqF,EAAI,MAAM,wBAAyByB,CAAS,EACrCA,GACN,cAAc,EACjBJ,EAAM,OAAO,mBAAmB,EAAE,KAAK,QAASJ,EAAa,KAAK,GAAG,CAAC,EACtEI,EAAM,OAAO,MAAM,EAAE,KAAK,QAASH,EAAiB,KAAK,GAAG,EAAE,QAAQ,OAAQ,QAAQ,CAAC,CACzF,MACEG,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EAC9C0G,EAAM,KAAK,QAASL,CAAU,EAAE,KAAK,KAAM3G,EAAK,EAAE,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,IAAK,CAAC,EAAE,KAAK,IAAKuD,CAAC,EAAE,KAAK,QAAS1B,CAAK,EAAE,KAAK,SAAUkF,CAAM,EAE9I,GAAM,CAAE,uBAAAM,CAAuB,EAAIC,GAAwBjB,CAAU,EAMrE,GALA9F,EAAQ,KACN,YAEA,aAAaP,EAAK,EAAIc,EAAK,MAAQ,CAAC,KAAKd,EAAK,EAAIA,EAAK,OAAS,EAAIqH,CAAsB,GAC5F,EACIX,EAAa,CACf,IAAMa,EAAOhH,EAAQ,OAAO,MAAM,EAC9BgH,GACFA,EAAK,KAAK,QAASb,CAAW,CAElC,CACA,IAAMc,EAAUR,EAAM,KAAK,EAAE,QAAQ,EACrC,OAAAhH,EAAK,QAAU,EACfA,EAAK,MAAQwH,EAAQ,MACrBxH,EAAK,OAASwH,EAAQ,OACtBxH,EAAK,QAAUc,EAAK,OAASd,EAAK,QAAU,EAC5CA,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOO,GAAuB1E,EAAMmE,CAAK,CAC3C,EACO,CAAE,QAAS7D,EAAU,UAAWQ,CAAK,CAC9C,EAAG,eAAe,EACd0H,GAA0B1I,EAAO,CAACC,EAAQC,IAAS,CACrD,IAAMqG,EAAahG,EAAW,EACxB,CAAE,eAAAiG,EAAgB,cAAAC,CAAc,EAAIF,EACpC,CAAE,WAAA0B,CAAW,EAAIzB,EACjBhG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASC,EAAK,UAAU,EAAE,KAAK,KAAMA,EAAK,EAAE,EAAE,KAAK,YAAaA,EAAK,IAAI,EAC5GgI,EAAa1H,EAAS,OAAO,IAAK,cAAc,EAChDoH,EAAU,EAAI1H,EAAK,QACnB6B,EAAQ7B,EAAK,MAAQ0H,EAC3B1H,EAAK,KAAO,CAACA,EAAK,QAClB,IAAM+G,EAAS/G,EAAK,OAAS0H,EACvBpE,EAAItD,EAAK,EAAI6B,EAAQ,EACrB0B,EAAIvD,EAAK,EAAI+G,EAAS,EAC5B/G,EAAK,MAAQ6B,EACb,IAAImF,EACJ,GAAIhH,EAAK,OAAS,YAAa,CAE7B,IAAMqI,EADKnB,EAAM,IAAI5G,CAAQ,EACH,UAAUgD,EAAGC,EAAG1B,EAAOkF,EAAQ,CACvD,KAAM,YACN,UAAW,GACX,eAAgB,CAAC,CAAC,EAClB,OAAQgB,EACR,KAAMxB,CACR,CAAC,EACDS,EAAQ1G,EAAS,OAAO,IAAM+H,EAAgB,cAAc,CAC9D,MACErB,EAAQgB,EAAW,OAAO,OAAQ,cAAc,EAEhDhB,EAAM,KAAK,QADY,SACW,EAAE,KAAK,IAAK1D,CAAC,EAAE,KAAK,IAAKC,CAAC,EAAE,KAAK,QAAS1B,CAAK,EAAE,KAAK,SAAUkF,CAAM,EAAE,KAAK,YAAa/G,EAAK,IAAI,EAEvI,IAAMwH,EAAUR,EAAM,KAAK,EAAE,QAAQ,EACrC,OAAAhH,EAAK,OAASwH,EAAQ,OACtBxH,EAAK,QAAU,EACfA,EAAK,QAAU,EACfA,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOO,GAAuB1E,EAAMmE,CAAK,CAC3C,EACO,CAAE,QAAS7D,EAAU,UAAW,CAAC,CAAE,CAC5C,EAAG,SAAS,EACRmI,GAAarC,GACbsC,GAAS,CACX,KAAAtC,GACA,WAAAqC,GACA,iBAAAd,GACA,UAAAF,GACA,QAAAe,GACA,cAAAD,EACF,EACII,GAA+B,IAAI,IACnCC,GAAgC9I,EAAO,MAAO+I,EAAM7I,IAAS,CAC/D,IAAM8I,EAAQ9I,EAAK,OAAS,OACtB+I,EAAU,MAAML,GAAOI,CAAK,EAAED,EAAM7I,CAAI,EAC9C,OAAA2I,GAAa,IAAI3I,EAAK,GAAI+I,CAAO,EAC1BA,CACT,EAAG,eAAe,EACdC,GAAwBlJ,EAAO,IAAM,CACvC6I,GAA+B,IAAI,GACrC,EAAG,OAAO,EAGV,SAASM,GAAcjJ,EAAMmE,EAAO,CAClC,OAAOnE,EAAK,UAAUmE,CAAK,CAC7B,CACArE,EAAOmJ,GAAe,eAAe,EACrC,IAAIC,GAAyBD,GAG7B,SAASE,GAAiBnJ,EAAMoJ,EAAIC,EAAIlF,EAAO,CAC7C,IAAImF,EAAKtJ,EAAK,EACVuJ,EAAKvJ,EAAK,EACVwJ,EAAKF,EAAKnF,EAAM,EAChBsF,EAAKF,EAAKpF,EAAM,EAChBuF,EAAM,KAAK,KAAKN,EAAKA,EAAKK,EAAKA,EAAKJ,EAAKA,EAAKG,EAAKA,CAAE,EACrDpF,EAAK,KAAK,IAAIgF,EAAKC,EAAKG,EAAKE,CAAG,EAChCvF,EAAM,EAAImF,IACZlF,EAAK,CAACA,GAER,IAAIC,EAAK,KAAK,IAAI+E,EAAKC,EAAKI,EAAKC,CAAG,EACpC,OAAIvF,EAAM,EAAIoF,IACZlF,EAAK,CAACA,GAED,CAAE,EAAGiF,EAAKlF,EAAI,EAAGmF,EAAKlF,CAAG,CAClC,CACAvE,EAAOqJ,GAAkB,kBAAkB,EAC3C,IAAIQ,GAA4BR,GAGhC,SAASS,GAAgB5J,EAAMoJ,EAAIjF,EAAO,CACxC,OAAOwF,GAA0B3J,EAAMoJ,EAAIA,EAAIjF,CAAK,CACtD,CACArE,EAAO8J,GAAiB,iBAAiB,EACzC,IAAIC,GAA2BD,GAG/B,SAASE,GAAcC,EAAIC,EAAIC,EAAIC,EAAI,CACrC,CACE,IAAMC,EAAKH,EAAG,EAAID,EAAG,EACfK,EAAKL,EAAG,EAAIC,EAAG,EACfK,EAAKL,EAAG,EAAID,EAAG,EAAIA,EAAG,EAAIC,EAAG,EAC7BM,EAAKH,EAAKF,EAAG,EAAIG,EAAKH,EAAG,EAAII,EAC7BE,EAAKJ,EAAKD,EAAG,EAAIE,EAAKF,EAAG,EAAIG,EAC7BG,EAAU,KAChB,GAAIF,IAAO,GAAKC,IAAO,GAAKE,GAASH,EAAIC,CAAE,EACzC,OAEF,IAAMG,EAAKR,EAAG,EAAID,EAAG,EACfU,EAAKV,EAAG,EAAIC,EAAG,EACfU,EAAKV,EAAG,EAAID,EAAG,EAAIA,EAAG,EAAIC,EAAG,EAC7BW,EAAKH,EAAKX,EAAG,EAAIY,EAAKZ,EAAG,EAAIa,EAC7BE,EAAKJ,EAAKV,EAAG,EAAIW,EAAKX,EAAG,EAAIY,EACnC,GAAI,KAAK,IAAIC,CAAE,EAAIL,GAAW,KAAK,IAAIM,CAAE,EAAIN,GAAWC,GAASI,EAAIC,CAAE,EACrE,OAEF,IAAMC,EAAQZ,EAAKQ,EAAKD,EAAKN,EAC7B,GAAIW,IAAU,EACZ,OAEF,IAAMC,EAAS,KAAK,IAAID,EAAQ,CAAC,EAC7BE,EAAMb,EAAKQ,EAAKD,EAAKN,EACnB,EAAIY,EAAM,GAAKA,EAAMD,GAAUD,GAASE,EAAMD,GAAUD,EAC9DE,EAAMP,EAAKL,EAAKF,EAAKS,EACrB,IAAMrH,EAAI0H,EAAM,GAAKA,EAAMD,GAAUD,GAASE,EAAMD,GAAUD,EAC9D,MAAO,CAAE,EAAG,EAAAxH,CAAE,CAChB,CACF,CACAzD,EAAOgK,GAAe,eAAe,EACrC,SAASW,GAASI,EAAIC,EAAI,CACxB,OAAOD,EAAKC,EAAK,CACnB,CACAhL,EAAO2K,GAAU,UAAU,EAC3B,IAAIS,GAAyBpB,GAG7B,SAASqB,GAAiBnL,EAAMoL,EAAYjH,EAAO,CACjD,IAAIzB,EAAK1C,EAAK,EACV2C,EAAK3C,EAAK,EACVqL,EAAgB,CAAC,EACjBC,EAAO,OAAO,kBACdC,EAAO,OAAO,kBACd,OAAOH,EAAW,SAAY,WAChCA,EAAW,QAAQ,SAASI,EAAO,CACjCF,EAAO,KAAK,IAAIA,EAAME,EAAM,CAAC,EAC7BD,EAAO,KAAK,IAAIA,EAAMC,EAAM,CAAC,CAC/B,CAAC,GAEDF,EAAO,KAAK,IAAIA,EAAMF,EAAW,CAAC,EAClCG,EAAO,KAAK,IAAIA,EAAMH,EAAW,CAAC,GAEpC,IAAIK,EAAO/I,EAAK1C,EAAK,MAAQ,EAAIsL,EAC7BI,EAAM/I,EAAK3C,EAAK,OAAS,EAAIuL,EACjC,QAAS/I,EAAI,EAAGA,EAAI4I,EAAW,OAAQ5I,IAAK,CAC1C,IAAIuH,EAAKqB,EAAW5I,CAAC,EACjBwH,EAAKoB,EAAW5I,EAAI4I,EAAW,OAAS,EAAI5I,EAAI,EAAI,CAAC,EACrDmJ,EAAYT,GACdlL,EACAmE,EACA,CAAE,EAAGsH,EAAO1B,EAAG,EAAG,EAAG2B,EAAM3B,EAAG,CAAE,EAChC,CAAE,EAAG0B,EAAOzB,EAAG,EAAG,EAAG0B,EAAM1B,EAAG,CAAE,CAClC,EACI2B,GACFN,EAAc,KAAKM,CAAS,CAEhC,CACA,OAAKN,EAAc,QAGfA,EAAc,OAAS,GACzBA,EAAc,KAAK,SAAS9I,EAAGqJ,EAAG,CAChC,IAAIC,EAAMtJ,EAAE,EAAI4B,EAAM,EAClB2H,EAAMvJ,EAAE,EAAI4B,EAAM,EAClB4H,EAAQ,KAAK,KAAKF,EAAMA,EAAMC,EAAMA,CAAG,EACvCE,EAAMJ,EAAE,EAAIzH,EAAM,EAClB8H,EAAML,EAAE,EAAIzH,EAAM,EAClB+H,EAAQ,KAAK,KAAKF,EAAMA,EAAMC,EAAMA,CAAG,EAC3C,OAAOF,EAAQG,EAAQ,GAAKH,IAAUG,EAAQ,EAAI,CACpD,CAAC,EAEIb,EAAc,CAAC,GAbbrL,CAcX,CACAF,EAAOqL,GAAkB,kBAAkB,EAC3C,IAAIgB,GAA4BhB,GAG5BiB,EAAoB,CACtB,KAAMlD,GACN,OAAQW,GACR,QAASF,GACT,QAASwC,GACT,KAAMzH,EACR,EAIA,SAAS2H,GAAOtM,EAAQC,EAAM,CAC5B,GAAM,CAAE,YAAA0G,CAAY,EAAII,EAAc9G,CAAI,EAC1CA,EAAK,WAAa0G,EAClB,IAAM4F,EAAUpK,EAAelC,CAAI,EAC/BE,EAAaoM,EACZA,IACHpM,EAAa,UAEf,IAAMI,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASG,CAAU,EAAE,KAAK,KAAMF,EAAK,OAASA,EAAK,EAAE,EACxF2D,EAAS,EACT,CAAE,UAAA4I,CAAU,EAAIvM,EAChBiH,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAE,KAAM,QAAS,OAAQ,OAAQ,UAAW,OAAQ,CAAC,EACzFA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,GAEtB,IAAMqF,EAAYH,EAAG,OAAO,EAAG,EAAGtD,EAAS,EAAG5B,CAAO,EAC/CyK,EAAalM,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAClE,OAAAoF,EAAW,KAAK,QAAS,QAAQ,EAAE,KAAK,QAAShM,EAAoB+L,CAAS,CAAC,EAC/EvK,EAAiBhC,EAAMwM,CAAU,EACjCxM,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,mBAAoB3F,EAAM2D,EAAQQ,CAAK,EACzCiI,EAAkB,OAAOpM,EAAM2D,EAAQQ,CAAK,CACrD,EACO7D,CACT,CACAR,EAAOuM,GAAQ,QAAQ,EAIvB,SAASI,GAAkB/J,EAAIC,EAAIC,EAAIC,EAAIuG,EAAIC,EAAIqD,EAAW,CAE5D,IAAMC,GAAQjK,EAAKE,GAAM,EACnBQ,GAAQT,EAAKE,GAAM,EACnBoB,EAAQ,KAAK,MAAMpB,EAAKF,EAAIC,EAAKF,CAAE,EACnC0B,GAAMxB,EAAKF,GAAM,EACjB2B,GAAMxB,EAAKF,GAAM,EACjBiK,EAAexI,EAAKgF,EACpByD,EAAexI,EAAKgF,EACpByD,EAAW,KAAK,KAAKF,GAAgB,EAAIC,GAAgB,CAAC,EAChE,GAAIC,EAAW,EACb,MAAM,IAAI,MAAM,oEAAoE,EAEtF,IAAMC,EAAuB,KAAK,KAAK,EAAID,GAAY,CAAC,EAClDrJ,EAAUkJ,EAAOI,EAAuB1D,EAAK,KAAK,IAAIpF,CAAK,GAAKyI,EAAY,GAAK,GACjFhJ,EAAUN,EAAO2J,EAAuB3D,EAAK,KAAK,IAAInF,CAAK,GAAKyI,EAAY,GAAK,GACjF7I,EAAa,KAAK,OAAOlB,EAAKe,GAAW2F,GAAK3G,EAAKe,GAAW2F,CAAE,EAElE4D,EADa,KAAK,OAAOnK,EAAKa,GAAW2F,GAAKzG,EAAKa,GAAW2F,CAAE,EACxCvF,EACxB6I,GAAaM,EAAa,IAC5BA,GAAc,EAAI,KAAK,IAErB,CAACN,GAAaM,EAAa,IAC7BA,GAAc,EAAI,KAAK,IAEzB,IAAM3K,EAAS,CAAC,EAChB,QAASG,EAAI,EAAGA,EAAI,GAAWA,IAAK,CAClC,IAAMa,EAAIb,EAAK,GACTyK,EAASpJ,EAAaR,EAAI2J,EAC1B1J,EAAIG,EAAU2F,EAAK,KAAK,IAAI6D,CAAM,EAClC1J,EAAIG,EAAU2F,EAAK,KAAK,IAAI4D,CAAM,EACxC5K,EAAO,KAAK,CAAE,EAAAiB,EAAG,EAAAC,CAAE,CAAC,CACtB,CACA,OAAOlB,CACT,CACAvC,EAAO2M,GAAmB,mBAAmB,EAC7C,eAAeS,GAAWnN,EAAQC,EAAM,CACtC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAIxD,EAAK,MAAQd,EAAK,QAAU,GAChCuE,EAAIzD,EAAK,OAASd,EAAK,QACvBqJ,EAAK9E,EAAI,EACT6E,EAAKC,GAAM,IAAM9E,EAAI,IACrB,CAAE,UAAAgI,CAAU,EAAIvM,EAChBqC,EAAS,CACb,CAAE,EAAGiC,EAAI,EAAG,EAAG,CAACC,EAAI,CAAE,EACtB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,CAAE,EACvB,GAAGkI,GAAkB,CAACnI,EAAI,EAAG,CAACC,EAAI,EAAG,CAACD,EAAI,EAAGC,EAAI,EAAG6E,EAAIC,EAAI,EAAK,EACjE,CAAE,EAAG/E,EAAI,EAAG,EAAGC,EAAI,CAAE,EACrB,GAAGkI,GAAkBnI,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAG,CAACC,EAAI,EAAG6E,EAAIC,EAAI,EAAI,CAChE,EACMpC,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMoL,EAAiB/K,EAAqBC,CAAM,EAC5C+K,EAAsBnG,EAAG,KAAKkG,EAAgBpL,CAAO,EACrDsL,EAAkB/M,EAAS,OAAO,IAAM8M,EAAqB,cAAc,EACjF,OAAAC,EAAgB,KAAK,QAAS,uBAAuB,EACjDd,GAAavM,EAAK,OAAS,aAC7BqN,EAAgB,UAAU,MAAM,EAAE,KAAK,QAASd,CAAS,EAEvD5F,GAAc3G,EAAK,OAAS,aAC9BqN,EAAgB,UAAU,MAAM,EAAE,KAAK,QAAS1G,CAAU,EAE5D0G,EAAgB,KAAK,YAAa,aAAajE,EAAK,CAAC,MAAM,EAC3DpH,EAAiBhC,EAAMqN,CAAe,EACtCrN,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOoN,GAAY,YAAY,EAM/B,SAASI,GAAmBvN,EAAQuE,EAAGC,EAAGlC,EAAQ,CAChD,OAAOtC,EAAO,OAAO,UAAW,cAAc,EAAE,KAC9C,SACAsC,EAAO,IAAI,SAASkL,EAAG,CACrB,OAAOA,EAAE,EAAI,IAAMA,EAAE,CACvB,CAAC,EAAE,KAAK,GAAG,CACb,EAAE,KAAK,QAAS,iBAAiB,EAAE,KAAK,YAAa,aAAe,CAACjJ,EAAI,EAAI,IAAMC,EAAI,EAAI,GAAG,CAChG,CACAzE,EAAOwN,GAAoB,oBAAoB,EAG/C,eAAeE,GAAKzN,EAAQC,EAAM,CAChC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzE,EAAIc,EAAK,OAASd,EAAK,QACvB0H,EAAU,GACVpD,EAAIxD,EAAK,MAAQd,EAAK,QAAU0H,EAChC+D,EAAO,EACPgC,EAAQnJ,EACRoH,EAAM,CAAC,EACPgC,EAAS,EACTrL,EAAS,CACb,CAAE,EAAGoJ,EAAO/D,EAAS,EAAGgE,CAAI,EAC5B,CAAE,EAAG+B,EAAO,EAAG/B,CAAI,EACnB,CAAE,EAAG+B,EAAO,EAAGC,CAAO,EACtB,CAAE,EAAGjC,EAAM,EAAGiC,CAAO,EACrB,CAAE,EAAGjC,EAAM,EAAGC,EAAMhE,CAAQ,EAC5B,CAAE,EAAG+D,EAAO/D,EAAS,EAAGgE,CAAI,CAC9B,EACIiC,EACE,CAAE,UAAApB,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4N,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EAC3C4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC9C,EAAI,CAAC,KAAK,EAAI,CAAC,GAAG,EACzGiI,GACFoB,EAAQ,KAAK,QAASpB,CAAS,CAEnC,MACEoB,EAAUL,GAAmBhN,EAAUgE,EAAG,EAAGjC,CAAM,EAErD,OAAIsE,GACFgH,EAAQ,KAAK,QAAShH,CAAU,EAElC3E,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAO0N,GAAM,MAAM,EAInB,SAASK,GAAO9N,EAAQC,EAAM,CAC5B,GAAM,CAAE,WAAA2G,CAAW,EAAIG,EAAc9G,CAAI,EACzCA,EAAK,MAAQ,GACb,IAAMM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASmC,EAAelC,CAAI,CAAC,EAAE,KAAK,KAAMA,EAAK,OAASA,EAAK,EAAE,EAClG,CAAE,UAAAuM,CAAU,EAAIvM,EAChB8N,EAAI,KAAK,IAAI,GAAI9N,EAAK,OAAS,CAAC,EAChCqC,EAAS,CACb,CAAE,EAAG,EAAG,EAAGyL,EAAI,CAAE,EACjB,CAAE,EAAGA,EAAI,EAAG,EAAG,CAAE,EACjB,CAAE,EAAG,EAAG,EAAG,CAACA,EAAI,CAAE,EAClB,CAAE,EAAG,CAACA,EAAI,EAAG,EAAG,CAAE,CACpB,EACM7G,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMgM,EAAa3L,EAAqBC,CAAM,EACxC+E,EAAYH,EAAG,KAAK8G,EAAYhM,CAAO,EACvCiM,EAAc1N,EAAS,OAAO,IAAM8G,EAAW,cAAc,EACnE,OAAImF,GAAavM,EAAK,OAAS,aAC7BgO,EAAY,UAAU,MAAM,EAAE,KAAK,QAASzB,CAAS,EAEnD5F,GAAc3G,EAAK,OAAS,aAC9BgO,EAAY,UAAU,MAAM,EAAE,KAAK,QAASrH,CAAU,EAExD3G,EAAK,MAAQ,GACbA,EAAK,OAAS,GACdA,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAO+N,GAAQ,QAAQ,EAIvB,eAAeI,GAAOlO,EAAQC,EAAM+B,EAAS,CAC3C,GAAM,CAAE,YAAA2E,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,YAAAC,CAAY,EAAI,MAAMlB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACtF0H,EAAU3F,GAAS,SAAWhB,EAC9B4C,EAAS7C,EAAK,MAAQ,EAAI4G,EAC5B8E,EACE,CAAE,UAAAD,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAO,IAAI5G,CAAQ,EACxB4N,EAAW/G,EAAkBnH,EAAM,CAAC,CAAC,EACrCoH,EAAYH,EAAG,OAAO,EAAG,EAAGtD,EAAS,EAAGuK,CAAQ,EACtD1B,EAAalM,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAC5DoF,EAAW,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAAShM,EAAoB+L,CAAS,CAAC,CAChG,MACEC,EAAalM,EAAS,OAAO,SAAU,cAAc,EAAE,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASqG,CAAU,EAAE,KAAK,IAAKhD,CAAM,EAAE,KAAK,KAAM,CAAC,EAAE,KAAK,KAAM,CAAC,EAEtK,OAAA3B,EAAiBhC,EAAMwM,CAAU,EACjCxM,EAAK,cAAgB,SAASmO,EAAQhK,EAAO,CAC3C,IAAMiK,EAAUD,EAAO,MAAQ,EAC/B,OAAO/B,EAAkB,OAAO+B,EAAQC,EAASjK,CAAK,CACxD,EACAnE,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,mBAAoB3F,EAAM2D,EAAQQ,CAAK,EACzCiI,EAAkB,OAAOpM,EAAM2D,EAAQQ,CAAK,CACrD,EACO7D,CACT,CACAR,EAAOmO,GAAQ,QAAQ,EAIvB,SAASI,GAAWC,EAAG,CACrB,IAAMC,EAAU,KAAK,IAAI,KAAK,GAAK,CAAC,EAC9BC,EAAU,KAAK,IAAI,KAAK,GAAK,CAAC,EAC9BC,EAAaH,EAAI,EACjBI,EAAU,CAAE,EAAGD,EAAa,EAAIF,EAAS,EAAGE,EAAa,EAAID,CAAQ,EACrEG,EAAU,CAAE,EAAG,EAAEF,EAAa,GAAKF,EAAS,EAAGE,EAAa,EAAID,CAAQ,EACxEI,EAAU,CAAE,EAAG,EAAEH,EAAa,GAAKF,EAAS,EAAG,EAAEE,EAAa,GAAKD,CAAQ,EAC3EK,EAAU,CAAE,EAAGJ,EAAa,EAAIF,EAAS,EAAG,EAAEE,EAAa,GAAKD,CAAQ,EAC9E,MAAO,KAAKG,EAAQ,CAAC,IAAIA,EAAQ,CAAC,MAAME,EAAQ,CAAC,IAAIA,EAAQ,CAAC;AAAA,uBACzCH,EAAQ,CAAC,IAAIA,EAAQ,CAAC,MAAME,EAAQ,CAAC,IAAIA,EAAQ,CAAC,EACzE,CACA9O,EAAOuO,GAAY,YAAY,EAC/B,SAASS,GAAc/O,EAAQC,EAAM,CACnC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB1G,EAAK,MAAQ,GACb,IAAMM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASmC,EAAelC,CAAI,CAAC,EAAE,KAAK,KAAMA,EAAK,OAASA,EAAK,EAAE,EAClG2D,EAAS,KAAK,IAAI,GAAI3D,GAAM,OAAS,CAAC,EACtC,CAAE,UAAAuM,CAAU,EAAIvM,EAChBiH,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMgN,EAAa9H,EAAG,OAAO,EAAG,EAAGtD,EAAS,EAAG5B,CAAO,EAChDiN,EAAWX,GAAW1K,CAAM,EAC5BsL,EAAWhI,EAAG,KAAK+H,EAAUjN,CAAO,EACpCmN,EAAiB5O,EAAS,OAAO,IAAMyO,EAAY,cAAc,EACvE,OAAAG,EAAe,OAAO,IAAMD,CAAQ,EAChC1C,GAAavM,EAAK,OAAS,aAC7BkP,EAAe,UAAU,MAAM,EAAE,KAAK,QAAS3C,CAAS,EAEtD5F,GAAc3G,EAAK,OAAS,aAC9BkP,EAAe,UAAU,MAAM,EAAE,KAAK,QAASvI,CAAU,EAE3D3E,EAAiBhC,EAAMkP,CAAc,EACrClP,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,0BAA2B3F,EAAM,CAAE,OAAA2D,EAAQ,MAAAQ,CAAM,CAAC,EAC/CiI,EAAkB,OAAOpM,EAAM2D,EAAQQ,CAAK,CAE1D,EACO7D,CACT,CACAR,EAAOgP,GAAe,eAAe,EAIrC,SAASK,GAAsB1L,EAASC,EAASC,EAAQC,EAAY,IAAKC,EAAa,EAAGC,EAAW,IAAK,CACxG,IAAMzB,EAAS,CAAC,EACV0B,EAAgBF,EAAa,KAAK,GAAK,IAGvCG,GAFcF,EAAW,KAAK,GAAK,IACRC,IACDH,EAAY,GAC5C,QAASpB,EAAI,EAAGA,EAAIoB,EAAWpB,IAAK,CAClC,IAAMyB,EAAQF,EAAgBvB,EAAIwB,EAC5BV,EAAIG,EAAUE,EAAS,KAAK,IAAIM,CAAK,EACrCV,EAAIG,EAAUC,EAAS,KAAK,IAAIM,CAAK,EAC3C5B,EAAO,KAAK,CAAE,EAAG,CAACiB,EAAG,EAAG,CAACC,CAAE,CAAC,CAC9B,CACA,OAAOlB,CACT,CACAvC,EAAOqP,GAAuB,sBAAsB,EACpD,eAAeC,GAAerP,EAAQC,EAAM,CAC1C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAIxD,EAAK,OAASd,EAAK,SAAW,GAClCuE,EAAIzD,EAAK,QAAUd,EAAK,SAAW,GACnC2D,EAAS,KAAK,IAAI,EAAGY,EAAI,EAAG,EAC5B,CAAE,UAAAgI,CAAU,EAAIvM,EAChBqC,EAAS,CACb,GAAG8M,GAAsB7K,EAAI,EAAG,CAACC,EAAI,EAAGZ,EAAQ,GAAI,IAAK,CAAC,EAC1D,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAGA,CAAO,EAChC,GAAGwL,GAAsB7K,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,KAAM,IAAI,EAC5E,GAAGwL,GAAsB7K,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,IAAI,EAC1E,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAG,CAACY,EAAI,CAAE,EAChC,GAAG4K,GAAsB7K,EAAI,EAAGC,EAAI,EAAGZ,EAAQ,GAAI,EAAG,EAAE,CAC1D,EACM0L,EAAa,CACjB,CAAE,EAAG/K,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIZ,CAAO,EAC/B,CAAE,EAAG,CAACW,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIZ,CAAO,EAChC,GAAGwL,GAAsB7K,EAAI,EAAG,CAACC,EAAI,EAAGZ,EAAQ,GAAI,IAAK,CAAC,EAC1D,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAG,CAACA,CAAO,EACjC,GAAGwL,GAAsB7K,EAAI,EAAIA,EAAI,GAAK,CAACX,EAAQA,EAAQ,GAAI,KAAM,IAAI,EACzE,GAAGwL,GAAsB7K,EAAI,EAAIA,EAAI,GAAKX,EAAQA,EAAQ,GAAI,IAAK,IAAI,EACvE,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAGY,EAAI,CAAE,EAC/B,GAAG4K,GAAsB7K,EAAI,EAAGC,EAAI,EAAGZ,EAAQ,GAAI,EAAG,EAAE,EACxD,CAAE,EAAG,CAACW,EAAI,EAAG,EAAGC,EAAI,EAAIZ,CAAO,EAC/B,CAAE,EAAGW,EAAI,EAAG,EAAGC,EAAI,EAAIZ,CAAO,CAChC,EACMsD,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAE,KAAM,MAAO,CAAC,EACpDA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAGtB,IAAMuN,EADqBlN,EAAqBC,CAAM,EACT,QAAQ,IAAK,EAAE,EACtDkN,EAAqBtI,EAAG,KAAKqI,EAAmBvN,CAAO,EACvDyN,EAAWpN,EAAqBiN,CAAU,EAC1CI,EAAYxI,EAAG,KAAKuI,EAAU,CAAE,GAAGzN,CAAQ,CAAC,EAC5C2N,EAAsBpP,EAAS,OAAO,IAAK,cAAc,EAC/D,OAAAoP,EAAoB,OAAO,IAAMD,EAAW,cAAc,EAAE,KAAK,iBAAkB,CAAC,EACpFC,EAAoB,OAAO,IAAMH,EAAoB,cAAc,EACnEG,EAAoB,KAAK,QAAS,MAAM,EACpCnD,GAAavM,EAAK,OAAS,aAC7B0P,EAAoB,UAAU,MAAM,EAAE,KAAK,QAASnD,CAAS,EAE3D5F,GAAc3G,EAAK,OAAS,aAC9B0P,EAAoB,UAAU,MAAM,EAAE,KAAK,QAAS/I,CAAU,EAEhE+I,EAAoB,KAAK,YAAa,aAAa/L,CAAM,MAAM,EAC/DlD,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,EAAIX,GAAU7C,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC7H,EACAkB,EAAiBhC,EAAM0P,CAAmB,EAC1C1P,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqP,EAAYlL,CAAK,CAE/D,EACO7D,CACT,CACAR,EAAOsP,GAAgB,gBAAgB,EAIvC,SAASO,GAAsBlM,EAASC,EAASC,EAAQC,EAAY,IAAKC,EAAa,EAAGC,EAAW,IAAK,CACxG,IAAMzB,EAAS,CAAC,EACV0B,EAAgBF,EAAa,KAAK,GAAK,IAGvCG,GAFcF,EAAW,KAAK,GAAK,IACRC,IACDH,EAAY,GAC5C,QAASpB,EAAI,EAAGA,EAAIoB,EAAWpB,IAAK,CAClC,IAAMyB,EAAQF,EAAgBvB,EAAIwB,EAC5BV,EAAIG,EAAUE,EAAS,KAAK,IAAIM,CAAK,EACrCV,EAAIG,EAAUC,EAAS,KAAK,IAAIM,CAAK,EAC3C5B,EAAO,KAAK,CAAE,EAAAiB,EAAG,EAAAC,CAAE,CAAC,CACtB,CACA,OAAOlB,CACT,CACAvC,EAAO6P,GAAuB,sBAAsB,EACpD,eAAeC,GAAgB7P,EAAQC,EAAM,CAC3C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAIxD,EAAK,OAASd,EAAK,SAAW,GAClCuE,EAAIzD,EAAK,QAAUd,EAAK,SAAW,GACnC2D,EAAS,KAAK,IAAI,EAAGY,EAAI,EAAG,EAC5B,CAAE,UAAAgI,CAAU,EAAIvM,EAChBqC,EAAS,CACb,GAAGsN,GAAsBrL,EAAI,EAAG,CAACC,EAAI,EAAGZ,EAAQ,GAAI,IAAK,CAAC,EAC1D,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAG,CAACA,CAAO,EAChC,GAAGgM,GAAsBrL,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,KAAM,IAAI,EAC5E,GAAGgM,GAAsBrL,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,IAAI,EAC1E,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAGY,EAAI,CAAE,EAC9B,GAAGoL,GAAsBrL,EAAI,EAAGC,EAAI,EAAGZ,EAAQ,GAAI,EAAG,EAAE,CAC1D,EACM0L,EAAa,CACjB,CAAE,EAAG,CAAC/K,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIZ,CAAO,EAChC,CAAE,EAAGW,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIZ,CAAO,EAC/B,GAAGgM,GAAsBrL,EAAI,EAAG,CAACC,EAAI,EAAGZ,EAAQ,GAAI,IAAK,CAAC,EAC1D,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAG,CAACA,CAAO,EAChC,GAAGgM,GAAsBrL,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,KAAM,IAAI,EAC5E,GAAGgM,GAAsBrL,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,IAAI,EAC1E,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAGY,EAAI,CAAE,EAC9B,GAAGoL,GAAsBrL,EAAI,EAAGC,EAAI,EAAGZ,EAAQ,GAAI,EAAG,EAAE,EACxD,CAAE,EAAGW,EAAI,EAAG,EAAGC,EAAI,EAAIZ,CAAO,EAC9B,CAAE,EAAG,CAACW,EAAI,EAAG,EAAGC,EAAI,EAAIZ,CAAO,CACjC,EACMsD,EAAKC,EAAO,IAAI5G,CAAQ,EACxByB,EAAUoF,EAAkBnH,EAAM,CAAE,KAAM,MAAO,CAAC,EACpDA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAGtB,IAAMuN,EADsBlN,EAAqBC,CAAM,EACT,QAAQ,IAAK,EAAE,EACvDwN,EAAsB5I,EAAG,KAAKqI,EAAmBvN,CAAO,EACxDyN,EAAWpN,EAAqBiN,CAAU,EAC1CI,EAAYxI,EAAG,KAAKuI,EAAU,CAAE,GAAGzN,CAAQ,CAAC,EAC5C+N,EAAuBxP,EAAS,OAAO,IAAK,cAAc,EAChE,OAAAwP,EAAqB,OAAO,IAAML,EAAW,cAAc,EAAE,KAAK,iBAAkB,CAAC,EACrFK,EAAqB,OAAO,IAAMD,EAAqB,cAAc,EACrEC,EAAqB,KAAK,QAAS,MAAM,EACrCvD,GAAavM,EAAK,OAAS,aAC7B8P,EAAqB,UAAU,MAAM,EAAE,KAAK,QAASvD,CAAS,EAE5D5F,GAAc3G,EAAK,OAAS,aAC9B8P,EAAqB,UAAU,MAAM,EAAE,KAAK,QAASnJ,CAAU,EAEjEmJ,EAAqB,KAAK,YAAa,aAAa,CAACnM,CAAM,MAAM,EACjElD,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,GAAKtE,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC9I,EACAkB,EAAiBhC,EAAM8P,CAAoB,EAC3C9P,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqP,EAAYlL,CAAK,CAE/D,EACO7D,CACT,CACAR,EAAO8P,GAAiB,iBAAiB,EAIzC,SAASG,EAAsBtM,EAASC,EAASC,EAAQC,EAAY,IAAKC,EAAa,EAAGC,EAAW,IAAK,CACxG,IAAMzB,EAAS,CAAC,EACV0B,EAAgBF,EAAa,KAAK,GAAK,IAGvCG,GAFcF,EAAW,KAAK,GAAK,IACRC,IACDH,EAAY,GAC5C,QAASpB,EAAI,EAAGA,EAAIoB,EAAWpB,IAAK,CAClC,IAAMyB,EAAQF,EAAgBvB,EAAIwB,EAC5BV,EAAIG,EAAUE,EAAS,KAAK,IAAIM,CAAK,EACrCV,EAAIG,EAAUC,EAAS,KAAK,IAAIM,CAAK,EAC3C5B,EAAO,KAAK,CAAE,EAAG,CAACiB,EAAG,EAAG,CAACC,CAAE,CAAC,CAC9B,CACA,OAAOlB,CACT,CACAvC,EAAOiQ,EAAuB,sBAAsB,EACpD,eAAeC,GAAYjQ,EAAQC,EAAM,CACvC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAIxD,EAAK,OAASd,EAAK,SAAW,GAClCuE,EAAIzD,EAAK,QAAUd,EAAK,SAAW,GACnC2D,EAAS,KAAK,IAAI,EAAGY,EAAI,EAAG,EAC5B,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiQ,EAAuB,CAC3B,GAAGF,EAAsBzL,EAAI,EAAG,CAACC,EAAI,EAAGZ,EAAQ,GAAI,IAAK,CAAC,EAC1D,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAGA,CAAO,EAChC,GAAGoM,EAAsBzL,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,KAAM,IAAI,EAC5E,GAAGoM,EAAsBzL,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,IAAI,EAC1E,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAG,CAACY,EAAI,CAAE,EAChC,GAAGwL,EAAsBzL,EAAI,EAAGC,EAAI,EAAGZ,EAAQ,GAAI,EAAG,EAAE,CAC1D,EACMuM,EAAwB,CAC5B,GAAGH,EAAsB,CAACzL,EAAI,EAAIX,EAASA,EAAS,EAAG,CAACY,EAAI,EAAGZ,EAAQ,GAAI,IAAK,IAAI,EACpF,CAAE,EAAGW,EAAI,EAAIX,EAAS,EAAG,EAAGA,CAAO,EACnC,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,EAAG,EAAE,EACxE,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,CAAC,EACxE,CAAE,EAAGW,EAAI,EAAIX,EAAS,EAAG,EAAG,CAACA,CAAO,EACpC,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAASA,EAAS,EAAGY,EAAI,EAAGZ,EAAQ,GAAI,KAAM,IAAI,CACtF,EACM0L,EAAa,CACjB,CAAE,EAAG/K,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIZ,CAAO,EAC/B,CAAE,EAAG,CAACW,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIZ,CAAO,EAChC,GAAGoM,EAAsBzL,EAAI,EAAG,CAACC,EAAI,EAAGZ,EAAQ,GAAI,IAAK,CAAC,EAC1D,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAG,CAACA,CAAO,EACjC,GAAGoM,EAAsBzL,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,KAAM,IAAI,EAC5E,GAAGoM,EAAsBzL,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,IAAI,EAC1E,CAAE,EAAG,CAACW,EAAI,EAAIX,EAAQ,EAAGY,EAAI,CAAE,EAC/B,GAAGwL,EAAsBzL,EAAI,EAAGC,EAAI,EAAGZ,EAAQ,GAAI,EAAG,EAAE,EACxD,CAAE,EAAG,CAACW,EAAI,EAAG,EAAGC,EAAI,EAAIZ,CAAO,EAC/B,CAAE,EAAGW,EAAI,EAAIX,EAASA,EAAS,EAAG,EAAGY,EAAI,EAAIZ,CAAO,EACpD,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAASA,EAAS,EAAG,CAACY,EAAI,EAAGZ,EAAQ,GAAI,IAAK,IAAI,EACpF,CAAE,EAAGW,EAAI,EAAIX,EAAS,EAAG,EAAGA,CAAO,EACnC,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAAS,EAAG,CAACA,EAAQA,EAAQ,GAAI,EAAG,EAAE,EACxE,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAAS,EAAGA,EAAQA,EAAQ,GAAI,IAAK,CAAC,EACxE,CAAE,EAAGW,EAAI,EAAIX,EAAS,EAAG,EAAG,CAACA,CAAO,EACpC,GAAGoM,EAAsB,CAACzL,EAAI,EAAIX,EAASA,EAAS,EAAGY,EAAI,EAAGZ,EAAQ,GAAI,KAAM,IAAI,CACtF,EACMsD,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAE,KAAM,MAAO,CAAC,EACpDA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAGtB,IAAMoO,EADqB/N,EAAqB6N,CAAoB,EACnB,QAAQ,IAAK,EAAE,EAC1DG,EAAqBnJ,EAAG,KAAKkJ,EAAuBpO,CAAO,EAE3DsO,EADsBjO,EAAqB8N,CAAqB,EACnB,QAAQ,IAAK,EAAE,EAC5DI,EAAsBrJ,EAAG,KAAKoJ,EAAwBtO,CAAO,EAC7DyN,EAAWpN,EAAqBiN,CAAU,EAC1CI,EAAYxI,EAAG,KAAKuI,EAAU,CAAE,GAAGzN,CAAQ,CAAC,EAC5CwO,EAAmBjQ,EAAS,OAAO,IAAK,cAAc,EAC5D,OAAAiQ,EAAiB,OAAO,IAAMd,EAAW,cAAc,EAAE,KAAK,iBAAkB,CAAC,EACjFc,EAAiB,OAAO,IAAMH,EAAoB,cAAc,EAChEG,EAAiB,OAAO,IAAMD,EAAqB,cAAc,EACjEC,EAAiB,KAAK,QAAS,MAAM,EACjChE,GAAavM,EAAK,OAAS,aAC7BuQ,EAAiB,UAAU,MAAM,EAAE,KAAK,QAAShE,CAAS,EAExD5F,GAAc3G,EAAK,OAAS,aAC9BuQ,EAAiB,UAAU,MAAM,EAAE,KAAK,QAAS5J,CAAU,EAE7D4J,EAAiB,KAAK,YAAa,aAAa5M,EAASA,EAAS,CAAC,MAAM,EACzElD,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,GAAKtE,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC9I,EACAkB,EAAiBhC,EAAMuQ,CAAgB,EACvCvQ,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqP,EAAYlL,CAAK,CAE/D,EACO7D,CACT,CACAR,EAAOkQ,GAAa,aAAa,EAIjC,eAAeQ,GAAgBzQ,EAAQC,EAAM,CAC3C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEyQ,EAAW,GAAIC,EAAY,GAC3BpM,EAAI,KAAK,IAAImM,GAAW3P,EAAK,OAASd,EAAK,SAAW,GAAK,GAAK,KAAMA,GAAM,OAAS,CAAC,EACtFuE,EAAI,KAAK,IAAImM,EAAW5P,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EAChF2D,EAASY,EAAI,EACb,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMmE,EAAa5B,EAAG6B,EAAc5B,EAC9BoM,EAAKzK,EAAavC,EAClBiN,EAAKzK,EAAc,EACnB9D,EAAS,CACb,CAAE,EAAGsO,EAAI,EAAG,CAAE,EACd,CAAE,EAAGC,EAAI,EAAG,CAAE,EACd,CAAE,EAAG,EAAG,EAAGzK,EAAc,CAAE,EAC3B,CAAE,EAAGyK,EAAIzK,CAAe,EACxB,CAAE,EAAGwK,EAAIxK,CAAe,EACxB,GAAG3C,GAAqB,CAACmN,EAAI,CAACxK,EAAc,EAAGxC,EAAQ,GAAI,IAAK,EAAE,CACpE,EACMiK,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzDgH,EAAQ,KAAK,YAAa,aAAa,CAACrJ,EAAI,CAAC,KAAK,CAACC,EAAI,CAAC,GAAG,EAC3DvC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAO0Q,GAAiB,iBAAiB,EAIzC,IAAIM,GAAsChR,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IAClE,CACL,IAAI/F,CAAC,IAAIC,EAAI8F,CAAE,GACf,IAAID,CAAE,IAAIC,CAAE,UAAUxH,CAAK,KAC3B,IAAIuH,CAAE,IAAIC,CAAE,UAAU,CAACxH,CAAK,KAC5B,MAAMkF,CAAM,GACZ,IAAIqC,CAAE,IAAIC,CAAE,UAAUxH,CAAK,KAC3B,MAAM,CAACkF,CAAM,EACf,EAAE,KAAK,GAAG,EACT,qBAAqB,EACpBgK,GAA2CjR,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IACvE,CACL,IAAI/F,CAAC,IAAIC,EAAI8F,CAAE,GACf,IAAI/F,EAAIzB,CAAK,IAAI0B,EAAI8F,CAAE,GACvB,IAAID,CAAE,IAAIC,CAAE,UAAU,CAACxH,CAAK,KAC5B,MAAMkF,CAAM,GACZ,IAAIqC,CAAE,IAAIC,CAAE,UAAUxH,CAAK,KAC3B,MAAM,CAACkF,CAAM,EACf,EAAE,KAAK,GAAG,EACT,0BAA0B,EACzBiK,GAA2ClR,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IACvE,CAAC,IAAI/F,EAAIzB,EAAQ,CAAC,IAAI,CAACkF,EAAS,CAAC,GAAI,IAAIqC,CAAE,IAAIC,CAAE,UAAUxH,CAAK,IAAI,EAAE,KAAK,GAAG,EACpF,0BAA0B,EAC7B,eAAeoP,GAASlR,EAAQC,EAAM,CACpC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,MAAQd,EAAK,QAASA,EAAK,OAAS,CAAC,EACvDoJ,EAAK9E,EAAI,EACT+E,EAAKD,GAAM,IAAM9E,EAAI,IACrBC,EAAI,KAAK,IAAIzD,EAAK,OAASuI,EAAKrJ,EAAK,QAASA,EAAK,QAAU,CAAC,EAChEkR,EACE,CAAE,UAAA3E,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB6Q,EAAgBJ,GAAyB,EAAG,EAAGzM,EAAGC,EAAG6E,EAAIC,CAAE,EAC3D+H,EAAgBJ,GAAyB,EAAG3H,EAAI/E,EAAGC,EAAG6E,EAAIC,CAAE,EAC5DgI,EAAYpK,EAAG,KAAKkK,EAAehK,EAAkBnH,EAAM,CAAC,CAAC,CAAC,EAC9DsR,EAAYrK,EAAG,KAAKmK,EAAejK,EAAkBnH,EAAM,CAAE,KAAM,MAAO,CAAC,CAAC,EAClFkR,EAAY5Q,EAAS,OAAO,IAAMgR,EAAW,cAAc,EAC3DJ,EAAY5Q,EAAS,OAAO,IAAM+Q,EAAW,cAAc,EAC3DH,EAAU,KAAK,QAAS,uBAAuB,EAC3C3E,GACF2E,EAAU,KAAK,QAAS3E,CAAS,CAErC,KAAO,CACL,IAAMqB,EAAWkD,GAAoB,EAAG,EAAGxM,EAAGC,EAAG6E,EAAIC,CAAE,EACvD6H,EAAY5Q,EAAS,OAAO,OAAQ,cAAc,EAAE,KAAK,IAAKsN,CAAQ,EAAE,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASpN,EAAoB+L,CAAS,CAAC,EAAE,KAAK,QAAS5F,CAAU,CACvL,CACA,OAAAuK,EAAU,KAAK,iBAAkB7H,CAAE,EACnC6H,EAAU,KAAK,YAAa,aAAa,CAAC5M,EAAI,CAAC,KAAK,EAAEC,EAAI,EAAI8E,EAAG,GAAG,EACpErH,EAAiBhC,EAAMkR,CAAS,EAChCzQ,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,IAAMA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,IAAMd,EAAK,SAAW,GAAK,KAAOc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC9I,EACAd,EAAK,UAAY,SAASmE,EAAO,CAC/B,IAAMoN,EAAMnF,EAAkB,KAAKpM,EAAMmE,CAAK,EACxCb,EAAIiO,EAAI,GAAKvR,EAAK,GAAK,GAC7B,GAAIoJ,GAAM,IAAM,KAAK,IAAI9F,CAAC,GAAKtD,EAAK,OAAS,GAAK,GAAK,KAAK,IAAIsD,CAAC,IAAMtD,EAAK,OAAS,GAAK,GAAK,KAAK,IAAIuR,EAAI,GAAKvR,EAAK,GAAK,EAAE,GAAKA,EAAK,QAAU,GAAK,EAAIqJ,GAAK,CAC7J,IAAI9F,EAAI8F,EAAKA,GAAM,EAAI/F,EAAIA,GAAK8F,EAAKA,IACjC7F,EAAI,IACNA,EAAI,KAAK,KAAKA,CAAC,GAEjBA,EAAI8F,EAAK9F,EACLY,EAAM,GAAKnE,EAAK,GAAK,GAAK,IAC5BuD,EAAI,CAACA,GAEPgO,EAAI,GAAKhO,CACX,CACA,OAAOgO,CACT,EACOjR,CACT,CACAR,EAAOmR,GAAU,UAAU,EAI3B,eAAeO,GAAiBzR,EAAQC,EAAM,CAC5C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAIxD,EAAK,MAAQd,EAAK,QACtBuE,EAAIzD,EAAK,OAASd,EAAK,QACvByR,EAAalN,EAAI,GACjBjB,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EAAIkN,EAAa,EAC1B,CAAE,UAAAlF,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM2P,EAAM,CACV,CAAE,EAAApO,EAAG,EAAGC,EAAIkO,CAAW,EACvB,CAAE,EAAG,CAACnO,EAAG,EAAGC,EAAIkO,CAAW,EAC3B,CAAE,EAAG,CAACnO,EAAG,EAAG,CAACC,CAAE,EACf,CAAE,EAAAD,EAAG,EAAG,CAACC,CAAE,EACX,CAAE,EAAAD,EAAG,EAAAC,CAAE,EACP,CAAE,EAAG,CAACD,EAAG,EAAAC,CAAE,EACX,CAAE,EAAG,CAACD,EAAG,EAAGC,EAAIkO,CAAW,CAC7B,EACME,EAAO1K,EAAG,QACdyK,EAAI,IAAKnP,GAAM,CAACA,EAAE,EAAGA,EAAE,CAAC,CAAC,EACzBR,CACF,EACM4L,EAAUrN,EAAS,OAAO,IAAMqR,EAAM,cAAc,EAC1D,OAAAhE,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,UAAU,MAAM,EAAE,KAAK,QAASpB,CAAS,EAE/C5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,UAAU,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEpDlG,EAAM,KACJ,YACA,aAAa6C,GAAKtD,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAKyC,EAAIkO,GAAczR,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAClJ,EACAkB,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAEhD,EACO7D,CACT,CACAR,EAAO0R,GAAkB,kBAAkB,EAI3C,eAAeI,GAAa7R,EAAQC,EAAM,CACxC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,YAAAC,CAAY,EAAI,MAAMlB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAEtF6R,EAAc/Q,EAAK,MAAQ,EAAIC,EADzB,EAEN+Q,EAAchR,EAAK,MAAQ,EAAIC,EACjCgR,EACE,CAAE,UAAAxF,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB0R,EAAe7K,EAAkBnH,EAAM,CAAE,UAAW,GAAK,YAAa,GAAI,CAAC,EAC3EiS,EAAe9K,EAAkBnH,EAAM,CAAE,UAAW,GAAK,YAAa,GAAI,CAAC,EAC3EkS,EAAiBjL,EAAG,OAAO,EAAG,EAAG4K,EAAc,EAAGG,CAAY,EAC9DG,EAAiBlL,EAAG,OAAO,EAAG,EAAG6K,EAAc,EAAGG,CAAY,EACpEF,EAAczR,EAAS,OAAO,IAAK,cAAc,EACjDyR,EAAY,KAAK,QAASvR,EAAoBR,EAAK,UAAU,CAAC,EAAE,KAAK,QAASQ,EAAoB+L,CAAS,CAAC,EAC5GwF,EAAY,KAAK,GAAG,YAAYG,CAAc,EAC9CH,EAAY,KAAK,GAAG,YAAYI,CAAc,CAChD,KAAO,CACLJ,EAAczR,EAAS,OAAO,IAAK,cAAc,EACjD,IAAM8R,EAAcL,EAAY,OAAO,SAAU,cAAc,EACzDM,EAAcN,EAAY,OAAO,QAAQ,EAC/CA,EAAY,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASpL,CAAU,EAC3EyL,EAAY,KAAK,QAAS,cAAc,EAAE,KAAK,QAASzL,CAAU,EAAE,KAAK,IAAKkL,CAAW,EAAE,KAAK,KAAM,CAAC,EAAE,KAAK,KAAM,CAAC,EACrHQ,EAAY,KAAK,QAAS,cAAc,EAAE,KAAK,QAAS1L,CAAU,EAAE,KAAK,IAAKmL,CAAW,EAAE,KAAK,KAAM,CAAC,EAAE,KAAK,KAAM,CAAC,CACvH,CACA,OAAA9P,EAAiBhC,EAAM+R,CAAW,EAClC/R,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,yBAA0B3F,EAAM6R,EAAa1N,CAAK,EACpDiI,EAAkB,OAAOpM,EAAM6R,EAAa1N,CAAK,CAC1D,EACO7D,CACT,CACAR,EAAO8R,GAAc,cAAc,EAInC,SAASU,GAAavS,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,CAAe,CAAE,EAAG,CAClE,GAAM,CAAE,YAAAI,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,MAAQ,GACbA,EAAK,WAAa0G,EAClB,IAAMpG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASmC,EAAelC,CAAI,CAAC,EAAE,KAAK,KAAMA,EAAK,OAASA,EAAK,EAAE,EAClG2D,EAAS,EACT,CAAE,UAAA4I,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB,CAAE,WAAAyH,CAAW,EAAIzB,EACjBvE,EAAUoF,EAAkBnH,EAAM,CAAE,UAAW,OAAQ,CAAC,EAC1DA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,GAEtB,IAAMgN,EAAa9H,EAAG,OAAO,EAAG,EAAGtD,EAAS,EAAG5B,CAAO,EAChDwQ,EAAgBjS,EAAS,OAAO,IAAMyO,EAAY,cAAc,EACtE,OAAAwD,EAAc,UAAU,MAAM,EAAE,KAAK,QAAS,SAASxK,CAAU,cAAc,EAC3EwE,GAAaA,EAAU,OAAS,GAAKvM,EAAK,OAAS,aACrDuS,EAAc,UAAU,MAAM,EAAE,KAAK,QAAShG,CAAS,EAErD5F,GAAc3G,EAAK,OAAS,aAC9BuS,EAAc,UAAU,MAAM,EAAE,KAAK,QAAS5L,CAAU,EAE1D3E,EAAiBhC,EAAMuS,CAAa,EACpCvS,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,yBAA0B3F,EAAM,CAAE,OAAA2D,EAAQ,MAAAQ,CAAM,CAAC,EAC9CiI,EAAkB,OAAOpM,EAAM2D,EAAQQ,CAAK,CAE1D,EACO7D,CACT,CACAR,EAAOwS,GAAc,cAAc,EAInC,eAAeE,GAAgBzS,EAAQC,EAAM,CAC3C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAIxD,EAAK,OAASd,EAAK,SAAW,GAClCuE,EAAID,EAAIxD,EAAK,OACb8P,EAAKtM,EAAIxD,EAAK,OACduB,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAACkC,CAAE,EACd,CAAE,EAAGqM,EAAI,EAAG,CAACrM,CAAE,EACf,CAAE,EAAGqM,EAAK,EAAG,EAAG,CAAE,CACpB,EACM,CAAE,UAAArE,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM6L,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EACrC0Q,EAAmBnS,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC7C,EAAI,CAAC,KAAKA,EAAI,CAAC,GAAG,EAC5H,OAAIgI,GAAavM,EAAK,OAAS,aAC7ByS,EAAiB,eAAe,MAAM,EAAE,KAAK,QAASlG,CAAS,EAE7D5F,GAAc3G,EAAK,OAAS,aAC9ByS,EAAiB,eAAe,MAAM,EAAE,KAAK,QAAS9L,CAAU,EAElE3G,EAAK,MAAQsE,EACbtE,EAAK,OAASuE,EACdvC,EAAiBhC,EAAMyS,CAAgB,EACvChS,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAK,GAAKc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC9H,EACAd,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,qBAAsB3F,EAAMqC,EAAQ8B,CAAK,EAC3CiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAO0S,GAAiB,iBAAiB,EAIzC,SAASE,GAAS3S,EAAQC,EAAM,CAAE,IAAA2S,EAAK,OAAQ,CAAE,MAAOC,EAAQ,eAAAtM,CAAe,CAAE,EAAG,CAClF,GAAM,CAAE,WAAAK,CAAW,EAAIG,EAAc9G,CAAI,EACzCA,EAAK,MAAQ,GACb,IAAMM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASmC,EAAelC,CAAI,CAAC,EAAE,KAAK,KAAMA,EAAK,OAASA,EAAK,EAAE,EAClG,CAAE,UAAAuM,CAAU,EAAIvM,EAClB6B,EAAQ,KAAK,IAAI,GAAI7B,GAAM,OAAS,CAAC,EACrC+G,EAAS,KAAK,IAAI,GAAI/G,GAAM,QAAU,CAAC,EACvC2S,IAAQ,OACV9Q,EAAQ,KAAK,IAAI,GAAI7B,GAAM,OAAS,CAAC,EACrC+G,EAAS,KAAK,IAAI,GAAI/G,GAAM,QAAU,CAAC,GAEzC,IAAMsD,EAAI,GAAKzB,EAAQ,EACjB0B,EAAI,GAAKwD,EAAS,EAClBE,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CACtC,OAAQsG,EAAe,UACvB,KAAMA,EAAe,SACvB,CAAC,EACGtG,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMqF,EAAYH,EAAG,UAAU3D,EAAGC,EAAG1B,EAAOkF,EAAQhF,CAAO,EACrD+G,EAAQxI,EAAS,OAAO,IAAM8G,EAAW,cAAc,EACzDmF,GAAavM,EAAK,OAAS,aAC7B8I,EAAM,UAAU,MAAM,EAAE,KAAK,QAASyD,CAAS,EAE7C5F,GAAc3G,EAAK,OAAS,aAC9B8I,EAAM,UAAU,MAAM,EAAE,KAAK,QAASnC,CAAU,EAElD3E,EAAiBhC,EAAM8I,CAAK,EAC5B,IAAMpB,EAAUkL,GAAQ,SAAW,EACnC,OAAI5S,EAAK,OAASA,EAAK,SACrBA,EAAK,OAAS0H,EAAU,GAAK,EAC7B1H,EAAK,QAAU0H,EAAU,GAAK,GAEhC1H,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAO4S,GAAU,UAAU,EAI3B,eAAeG,GAAqB9S,EAAQC,EAAM,CAChD,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,IAAM+J,EAAW,GAAIC,EAAY,GAC3B,CAAE,SAAApQ,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAI,KAAK,IAAImM,EAAU3P,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EAC7EuE,EAAI,KAAK,IAAImM,EAAW5P,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EAChF2D,EAASY,EAAI,EACb,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAG,EAAG,CAACC,EAAI,CAAE,EACvB,CAAE,EAAGD,EAAI,EAAIX,EAAQ,EAAG,CAACY,EAAI,CAAE,EAC/B,GAAGf,GAAqB,CAACc,EAAI,EAAIX,EAAQ,EAAGA,EAAQ,GAAI,GAAI,GAAG,EAC/D,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAGY,EAAI,CAAE,EAC9B,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,CAAE,CACxB,EACMqJ,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzD3E,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,iBAAkB3F,EAAM,CAAE,OAAA2D,EAAQ,MAAAQ,CAAM,CAAC,EACtCiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAO+S,GAAsB,sBAAsB,EAInD,eAAeC,GAAQ/S,EAAQC,EAAM,CACnC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzE,EAAIc,EAAK,QAAUd,EAAK,SAAW,GACnCsE,EAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,IACvC,CAAE,UAAAuM,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAIgR,EAAYzO,EAAI,EACd0O,EAAID,EAAY,EACtBA,EAAYA,EAAYC,EACxB,IAAMC,EAAa,EAAI,EACjBC,EAAcD,EAAa,EAC3BE,EAAeJ,EAAYG,EAC3B7Q,EAAS,CACb,CAAE,EAAG,CAAC8Q,EAAc,EAAG,CAACF,CAAW,EACnC,CAAE,EAAG,EAAG,EAAG,CAACA,CAAW,EACvB,CAAE,EAAGE,EAAc,EAAG,CAACF,CAAW,EAClC,CAAE,EAAGF,EAAW,EAAG,CAAE,EACrB,CAAE,EAAGI,EAAc,EAAGF,CAAW,EACjC,CAAE,EAAG,EAAG,EAAGA,CAAW,EACtB,CAAE,EAAG,CAACE,EAAc,EAAGF,CAAW,EAClC,CAAE,EAAG,CAACF,EAAW,EAAG,CAAE,CACxB,EACMnF,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzD3G,EAAK,MAAQsE,EACbtE,EAAK,OAAS,EACdgC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAOgT,GAAS,SAAS,EAIzB,eAAeM,GAAUrT,EAAQC,EAAM,CACrC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,MAAQ,GACbA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,CAAS,EAAI,MAAMT,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACnEsE,EAAI,KAAK,IAAI,GAAItE,GAAM,OAAS,CAAC,EACjC,EAAI,KAAK,IAAI,GAAIA,GAAM,QAAU,CAAC,EAClC,CAAE,UAAAuM,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAGiC,EAAG,EAAG,CAAE,EACb,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAGA,EAAG,EAAG,CAAE,CACf,EACMsJ,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzDgH,EAAQ,KAAK,YAAa,aAAa,CAACrJ,EAAI,CAAC,KAAK,CAAC,EAAI,CAAC,GAAG,EAC3DtC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,iBAAkB3F,EAAM,CAAE,OAAAqC,CAAO,CAAC,EAC/B+J,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOsT,GAAW,WAAW,EAI7B,eAAeC,GAAKtT,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,EAAgB,UAAAgN,CAAU,CAAE,EAAG,CAC3E,GAAM,CAAE,YAAA5M,CAAY,EAAII,EAAc9G,CAAI,EAC1CA,EAAK,WAAa0G,EAClB,IAAM6M,EAAcvT,EAAK,aAAe,GAClCwT,EAAaxT,EAAK,YAAc,GAChCyT,EAAW,KAAK,IAAIF,EAAaC,CAAU,EAC3CE,EAAeJ,GAAW,cAChCtT,EAAK,MAAQ,KAAK,IAAIyT,EAAUC,GAAgB,CAAC,EACjD,GAAM,CAAE,SAAApT,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAM,oBAAoB,EAChF2T,EAAW3T,EAAK,MAAQ,IACxB+G,EAAS0M,EACT5R,EAAQ4R,EACR,CAAE,WAAA1L,CAAW,EAAIzB,EACjB,CAAE,UAAAsN,CAAU,EAAIC,GAAc7T,CAAI,EAClCsD,EAAI,CAACzB,EAAQ,EACb0B,EAAI,CAACwD,EAAS,EACd+M,EAAe9T,EAAK,MAAQ,EAAI,EAChCiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAE,OAAQ,OAAQ,KAAM,MAAO,CAAC,EACpEA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMgS,EAAW9M,EAAG,UAAU3D,EAAGC,EAAG1B,EAAOkF,EAAQhF,CAAO,EACpDiS,EAAa,KAAK,IAAInS,EAAOf,EAAK,KAAK,EACvCmT,EAAclN,EAASjG,EAAK,OAASgT,EACrCzC,EAAYpK,EAAG,UAAU,CAAC+M,EAAa,EAAG,CAACC,EAAc,EAAGD,EAAYC,EAAa,CACzF,GAAGlS,EACH,KAAM,cACN,OAAQ,MACV,CAAC,EACKmS,EAAY5T,EAAS,OAAO,IAAMyT,EAAU,cAAc,EAC1DI,EAAa7T,EAAS,OAAO,IAAM+Q,CAAS,EAClD,GAAIrR,EAAK,KAAM,CACb,IAAMoU,EAAW9T,EAAS,OAAO,GAAG,EACpC8T,EAAS,KACP,MAAM,MAAMC,GAAWrU,EAAK,KAAM,CAChC,OAAQyT,EACR,MAAOA,EACP,eAAgB,EAClB,CAAC,CAAC,MACJ,EACA,IAAMa,EAAWF,EAAS,KAAK,EAAE,QAAQ,EACnCG,EAAYD,EAAS,MACrBE,EAAaF,EAAS,OACtBG,EAAQH,EAAS,EACjBI,EAAQJ,EAAS,EACvBF,EAAS,KACP,YACA,aAAa,CAACG,EAAY,EAAIE,CAAK,IAAId,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,EAAQ,CAAC5T,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,CAAK,GAC9K,EACAN,EAAS,KAAK,QAAS,UAAUR,EAAU,IAAI,QAAQ,GAAK7L,CAAU,GAAG,CAC3E,CACA,OAAAtH,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI6S,EAAW,CAACM,EAAc,EAAIA,EAAc,EAAInT,EAAK,MAAM,GAC3H,EACAoT,EAAU,KACR,YACA,eAAkBP,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAI,CAAChT,EAAK,OAAS,EAAIgT,EAAe,CAAC,GACvG,EACA9R,EAAiBhC,EAAMmU,CAAU,EACjCnU,EAAK,UAAY,SAASmE,EAAO,CAE/B,GADAwB,EAAI,KAAK,uBAAwB3F,EAAMmE,CAAK,EACxC,CAACnE,EAAK,MACR,OAAOoM,EAAkB,KAAKpM,EAAMmE,CAAK,EAE3C,IAAMC,EAAKpE,EAAK,GAAK,EACfqE,EAAKrE,EAAK,GAAK,EACf2U,EAAa3U,EAAK,QAAU,EAC9BqC,EAAS,CAAC,EACd,OAAIsR,EACFtR,EAAS,CACP,CAAE,EAAG+B,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EAC9E,CAAE,EAAG1P,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EACzE,CAAE,EAAG1P,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EACzE,CAAE,EAAG1P,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,CAChF,EAEAzR,EAAS,CACP,CAAE,EAAG+B,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI5N,CAAO,EACrD,CAAE,EAAG3C,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI5N,CAAO,EAC1D,CAAE,EAAG3C,EAAKtD,EAAK,MAAQ,EAAI,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACrD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI5N,CAAO,EAC1D,CAAE,EAAG3C,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI5N,CAAO,CACvD,EAEUqF,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOuT,GAAM,MAAM,EAInB,eAAeuB,GAAW7U,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,EAAgB,UAAAgN,CAAU,CAAE,EAAG,CACjF,GAAM,CAAE,YAAA5M,CAAY,EAAII,EAAc9G,CAAI,EAC1CA,EAAK,WAAa0G,EAClB,IAAM6M,EAAcvT,EAAK,aAAe,GAClCwT,EAAaxT,EAAK,YAAc,GAChCyT,EAAW,KAAK,IAAIF,EAAaC,CAAU,EAC3CE,EAAeJ,GAAW,cAChCtT,EAAK,MAAQ,KAAK,IAAIyT,EAAUC,GAAgB,CAAC,EACjD,GAAM,CAAE,SAAApT,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAM,oBAAoB,EAChF0H,EAAU,GACVoM,EAAe9T,EAAK,MAAQ,EAAI,EAChC2T,EAAW3T,EAAK,MAAQ,IACxB,CAAE,WAAA+H,EAAY,QAAA8M,CAAQ,EAAIvO,EAC1B,CAAE,UAAAsN,CAAU,EAAIC,GAAc7T,CAAI,EAClCiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM+S,EAAOlB,EAAU,IAAI,MAAM,EACjC7R,EAAQ,OAAS+S,GAAQD,EACzB,IAAMT,EAAW9T,EAAS,OAAO,GAAG,EAChCN,EAAK,MACPoU,EAAS,KACP,MAAM,MAAMC,GAAWrU,EAAK,KAAM,CAChC,OAAQyT,EACR,MAAOA,EACP,eAAgB,EAClB,CAAC,CAAC,MACJ,EAEF,IAAMa,EAAWF,EAAS,KAAK,EAAE,QAAQ,EACnCG,EAAYD,EAAS,MACrBE,EAAaF,EAAS,OACtBG,EAAQH,EAAS,EACjBI,EAAQJ,EAAS,EACjBS,EAAW,KAAK,IAAIR,EAAWC,CAAU,EAAI,KAAK,MAAQ9M,EAAU,EACpEqM,EAAW9M,EAAG,OAAO,EAAG,EAAG8N,EAAUhT,CAAO,EAC5CiS,EAAa,KAAK,IAAIe,EAAUjU,EAAK,KAAK,EAC1CmT,EAAcc,EAAWjU,EAAK,OAASgT,EACvCzC,EAAYpK,EAAG,UAAU,CAAC+M,EAAa,EAAG,CAACC,EAAc,EAAGD,EAAYC,EAAa,CACzF,GAAGlS,EACH,KAAM,cACN,OAAQ,MACV,CAAC,EACKmS,EAAY5T,EAAS,OAAO,IAAMyT,EAAU,cAAc,EAC1DI,EAAa7T,EAAS,OAAO,IAAM+Q,CAAS,EAClD,OAAA+C,EAAS,KACP,YACA,aAAa,CAACG,EAAY,EAAIE,CAAK,IAAId,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,EAAQ,CAAC5T,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,CAAK,GAC9K,EACAN,EAAS,KAAK,QAAS,UAAUR,EAAU,IAAI,QAAQ,GAAK7L,CAAU,GAAG,EACzEtH,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI6S,EAAW,CAACM,EAAc,EAAIA,EAAc,EAAInT,EAAK,MAAM,GAC3H,EACAoT,EAAU,KACR,YACA,eAAkBP,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAI,CAAChT,EAAK,OAAS,EAAIgT,EAAe,CAAC,GACvG,EACA9R,EAAiBhC,EAAMmU,CAAU,EACjCnU,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,uBAAwB3F,EAAMmE,CAAK,EAChCiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAEhD,EACO7D,CACT,CACAR,EAAO8U,GAAY,YAAY,EAI/B,eAAeI,GAAYjV,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,EAAgB,UAAAgN,CAAU,CAAE,EAAG,CAClF,GAAM,CAAE,YAAA5M,CAAY,EAAII,EAAc9G,CAAI,EAC1CA,EAAK,WAAa0G,EAClB,IAAM6M,EAAcvT,EAAK,aAAe,GAClCwT,EAAaxT,EAAK,YAAc,GAChCyT,EAAW,KAAK,IAAIF,EAAaC,CAAU,EAC3CE,EAAeJ,GAAW,cAChCtT,EAAK,MAAQ,KAAK,IAAIyT,EAAUC,GAAgB,CAAC,EACjD,GAAM,CAAE,SAAApT,EAAU,KAAAQ,EAAM,YAAAC,EAAa,MAAAN,CAAM,EAAI,MAAMZ,EACnDE,EACAC,EACA,oBACF,EACM2T,EAAW3T,EAAK,MAAQ,IACxB+G,EAAS0M,EAAW1S,EAAc,EAClCc,EAAQ4R,EAAW1S,EAAc,EACjC,CAAE,WAAAgH,EAAY,QAAA8M,CAAQ,EAAIvO,EAC1B,CAAE,UAAAsN,CAAU,EAAIC,GAAc7T,CAAI,EAClCsD,EAAI,CAACzB,EAAQ,EACb0B,EAAI,CAACwD,EAAS,EACd+M,EAAe9T,EAAK,MAAQ,EAAI,EAChCiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM+S,EAAOlB,EAAU,IAAI,MAAM,EACjC7R,EAAQ,OAAS+S,GAAQD,EACzB,IAAMd,EAAW9M,EAAG,KAAKhB,GAAuB3C,EAAGC,EAAG1B,EAAOkF,EAAQ,CAAC,EAAGhF,CAAO,EAC1EiS,EAAa,KAAK,IAAInS,EAAOf,EAAK,KAAK,EACvCmT,EAAclN,EAASjG,EAAK,OAASgT,EACrCzC,EAAYpK,EAAG,UAAU,CAAC+M,EAAa,EAAG,CAACC,EAAc,EAAGD,EAAYC,EAAa,CACzF,GAAGlS,EACH,KAAM,cACN,OAAQ,MACV,CAAC,EACKmS,EAAY5T,EAAS,OAAO,IAAMyT,EAAU,cAAc,EAAE,KAAK,QAAS,aAAa,EACvFI,EAAa7T,EAAS,OAAO,IAAM+Q,CAAS,EAClD,GAAIrR,EAAK,KAAM,CACb,IAAMoU,EAAW9T,EAAS,OAAO,GAAG,EACpC8T,EAAS,KACP,MAAM,MAAMC,GAAWrU,EAAK,KAAM,CAChC,OAAQyT,EACR,MAAOA,EACP,eAAgB,EAClB,CAAC,CAAC,MACJ,EACA,IAAMa,EAAWF,EAAS,KAAK,EAAE,QAAQ,EACnCG,EAAYD,EAAS,MACrBE,EAAaF,EAAS,OACtBG,EAAQH,EAAS,EACjBI,GAAQJ,EAAS,EACvBF,EAAS,KACP,YACA,aAAa,CAACG,EAAY,EAAIE,CAAK,IAAId,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,GAAQ,CAAC5T,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,EAAK,GAC9K,EACAN,EAAS,KAAK,QAAS,UAAUR,EAAU,IAAI,QAAQ,GAAK7L,CAAU,GAAG,CAC3E,CACA,OAAAtH,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI6S,EAAW,CAACM,EAAc,EAAIA,EAAc,EAAInT,EAAK,MAAM,GAC3H,EACAoT,EAAU,KACR,YACA,eAAkBP,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAI,CAAChT,EAAK,OAAS,EAAIgT,EAAe,CAAC,GACvG,EACA9R,EAAiBhC,EAAMmU,CAAU,EACjCnU,EAAK,UAAY,SAASmE,EAAO,CAE/B,GADAwB,EAAI,KAAK,uBAAwB3F,EAAMmE,CAAK,EACxC,CAACnE,EAAK,MACR,OAAOoM,EAAkB,KAAKpM,EAAMmE,CAAK,EAE3C,IAAMC,EAAKpE,EAAK,GAAK,EACfqE,EAAKrE,EAAK,GAAK,EACf2U,EAAa3U,EAAK,QAAU,EAC9BqC,EAAS,CAAC,EACd,OAAIsR,EACFtR,EAAS,CACP,CAAE,EAAG+B,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EAC9E,CAAE,EAAG1P,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EACzE,CAAE,EAAG1P,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EACzE,CAAE,EAAG1P,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,CAChF,EAEAzR,EAAS,CACP,CAAE,EAAG+B,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI5N,CAAO,EACrD,CAAE,EAAG3C,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI5N,CAAO,EAC1D,CAAE,EAAG3C,EAAKtD,EAAK,MAAQ,EAAI,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACrD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI5N,CAAO,EAC1D,CAAE,EAAG3C,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI5N,CAAO,CACvD,EAEUqF,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOkV,GAAa,aAAa,EAIjC,eAAeC,GAAWlV,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,EAAgB,UAAAgN,CAAU,CAAE,EAAG,CACjF,GAAM,CAAE,YAAA5M,CAAY,EAAII,EAAc9G,CAAI,EAC1CA,EAAK,WAAa0G,EAClB,IAAM6M,EAAcvT,EAAK,aAAe,GAClCwT,EAAaxT,EAAK,YAAc,GAChCyT,EAAW,KAAK,IAAIF,EAAaC,CAAU,EAC3CE,EAAeJ,GAAW,cAChCtT,EAAK,MAAQ,KAAK,IAAIyT,EAAUC,GAAgB,CAAC,EACjD,GAAM,CAAE,SAAApT,EAAU,KAAAQ,EAAM,YAAAC,EAAa,MAAAN,CAAM,EAAI,MAAMZ,EACnDE,EACAC,EACA,oBACF,EACM2T,EAAW3T,EAAK,MAAQ,IACxB+G,EAAS0M,EAAW1S,EAAc,EAClCc,EAAQ4R,EAAW1S,EAAc,EACjC,CAAE,WAAAgH,EAAY,QAAA8M,CAAQ,EAAIvO,EAC1B,CAAE,UAAAsN,CAAU,EAAIC,GAAc7T,CAAI,EAClCsD,EAAI,CAACzB,EAAQ,EACb0B,EAAI,CAACwD,EAAS,EACd+M,EAAe9T,EAAK,MAAQ,EAAI,EAChCiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM+S,EAAOlB,EAAU,IAAI,MAAM,EACjC7R,EAAQ,OAAS+S,GAAQD,EACzB,IAAMd,EAAW9M,EAAG,KAAKhB,GAAuB3C,EAAGC,EAAG1B,EAAOkF,EAAQ,EAAG,EAAGhF,CAAO,EAC5EiS,EAAa,KAAK,IAAInS,EAAOf,EAAK,KAAK,EACvCmT,EAAclN,EAASjG,EAAK,OAASgT,EACrCzC,EAAYpK,EAAG,UAAU,CAAC+M,EAAa,EAAG,CAACC,EAAc,EAAGD,EAAYC,EAAa,CACzF,GAAGlS,EACH,KAAM,cACN,OAAQ,MACV,CAAC,EACKmS,EAAY5T,EAAS,OAAO,IAAMyT,EAAU,cAAc,EAC1DI,EAAa7T,EAAS,OAAO,IAAM+Q,CAAS,EAClD,GAAIrR,EAAK,KAAM,CACb,IAAMoU,EAAW9T,EAAS,OAAO,GAAG,EACpC8T,EAAS,KACP,MAAM,MAAMC,GAAWrU,EAAK,KAAM,CAChC,OAAQyT,EACR,MAAOA,EACP,eAAgB,EAClB,CAAC,CAAC,MACJ,EACA,IAAMa,EAAWF,EAAS,KAAK,EAAE,QAAQ,EACnCG,EAAYD,EAAS,MACrBE,EAAaF,EAAS,OACtBG,EAAQH,EAAS,EACjBI,GAAQJ,EAAS,EACvBF,EAAS,KACP,YACA,aAAa,CAACG,EAAY,EAAIE,CAAK,IAAId,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,GAAQ,CAAC5T,EAAK,OAAS,EAAIgT,EAAe,EAAIU,EAAa,EAAIE,EAAK,GAC9K,EACAN,EAAS,KAAK,QAAS,UAAUR,EAAU,IAAI,QAAQ,GAAK7L,CAAU,GAAG,CAC3E,CACA,OAAAtH,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI6S,EAAW,CAACM,EAAc,EAAIA,EAAc,EAAInT,EAAK,MAAM,GAC3H,EACAoT,EAAU,KACR,YACA,eAAkBP,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAI,CAAChT,EAAK,OAAS,EAAIgT,EAAe,CAAC,GACvG,EACA9R,EAAiBhC,EAAMmU,CAAU,EACjCnU,EAAK,UAAY,SAASmE,EAAO,CAE/B,GADAwB,EAAI,KAAK,uBAAwB3F,EAAMmE,CAAK,EACxC,CAACnE,EAAK,MACR,OAAOoM,EAAkB,KAAKpM,EAAMmE,CAAK,EAE3C,IAAMC,EAAKpE,EAAK,GAAK,EACfqE,EAAKrE,EAAK,GAAK,EACf2U,EAAa3U,EAAK,QAAU,EAC9BqC,EAAS,CAAC,EACd,OAAIsR,EACFtR,EAAS,CACP,CAAE,EAAG+B,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EAC9E,CAAE,EAAG1P,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EACzE,CAAE,EAAG1P,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EACzE,CAAE,EAAG1P,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,CAChF,EAEAzR,EAAS,CACP,CAAE,EAAG+B,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,CAAE,EAC5C,CAAE,EAAGvQ,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI5N,CAAO,EACrD,CAAE,EAAG3C,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI5N,CAAO,EAC1D,CAAE,EAAG3C,EAAKtD,EAAK,MAAQ,EAAI,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACrD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI5N,CAAO,EAC1D,CAAE,EAAG3C,EAAKvC,EAAQ,EAAG,EAAGwC,EAAKsQ,EAAa,EAAI5N,CAAO,CACvD,EAEUqF,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOmV,GAAY,YAAY,EAI/B,eAAeC,GAAYnV,EAAQC,EAAM,CAAE,OAAQ,CAAE,UAAAsT,CAAU,CAAE,EAAG,CAClE,IAAMjS,EAAM,IAAI,MAChBA,EAAI,IAAMrB,GAAM,KAAO,GACvB,MAAMqB,EAAI,OAAO,EACjB,IAAM8T,EAAoB,OAAO9T,EAAI,aAAa,SAAS,EAAE,QAAQ,KAAM,EAAE,CAAC,EACxE+T,EAAqB,OAAO/T,EAAI,cAAc,SAAS,EAAE,QAAQ,KAAM,EAAE,CAAC,EAChFrB,EAAK,iBAAmBmV,EAAoBC,EAC5C,GAAM,CAAE,YAAA1O,CAAY,EAAII,EAAc9G,CAAI,EAC1CA,EAAK,WAAa0G,EAClB,IAAMgN,EAAeJ,GAAW,cAChCtT,EAAK,aAAesT,GAAW,cAC/B,IAAM+B,EAAgB,KAAK,IACzBrV,EAAK,MAAQ0T,GAAgB,EAAI,EACjC1T,GAAM,YAAcmV,CACtB,EACMG,EAAatV,EAAK,aAAe,MAAOA,GAAM,YAAcA,EAAK,YAAcA,EAAK,iBAAmCqV,EACvHE,EAAcvV,EAAK,aAAe,KAAOsV,EAAatV,EAAK,iBAAmBA,GAAM,aAAeoV,EACzGpV,EAAK,MAAQ,KAAK,IAAIsV,EAAY5B,GAAgB,CAAC,EACnD,GAAM,CAAE,SAAApT,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAM,qBAAqB,EACjF2T,EAAW3T,EAAK,MAAQ,IACxBsD,EAAI,CAACgS,EAAa,EAClB/R,EAAI,CAACgS,EAAc,EACnBzB,EAAe9T,EAAK,MAAQ,EAAI,EAChCiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMyT,EAAYvO,EAAG,UAAU3D,EAAGC,EAAG+R,EAAYC,EAAaxT,CAAO,EAC/DiS,EAAa,KAAK,IAAIsB,EAAYxU,EAAK,KAAK,EAC5CmT,EAAcsB,EAAczU,EAAK,OAASgT,EAC1CzC,EAAYpK,EAAG,UAAU,CAAC+M,EAAa,EAAG,CAACC,EAAc,EAAGD,EAAYC,EAAa,CACzF,GAAGlS,EACH,KAAM,OACN,OAAQ,MACV,CAAC,EACKmS,EAAY5T,EAAS,OAAO,IAAMkV,EAAW,cAAc,EAC3DrB,EAAa7T,EAAS,OAAO,IAAM+Q,CAAS,EAClD,GAAIrR,EAAK,IAAK,CACZ,IAAMyV,EAAQnV,EAAS,OAAO,OAAO,EACrCmV,EAAM,KAAK,OAAQzV,EAAK,GAAG,EAC3ByV,EAAM,KAAK,QAASH,CAAU,EAC9BG,EAAM,KAAK,SAAUF,CAAW,EAChCE,EAAM,KAAK,sBAAuB,MAAM,EACxCA,EAAM,KACJ,YACA,aAAa,CAACH,EAAa,CAAC,IAAI3B,EAAWM,EAAc,EAAIsB,EAAc,CAACtB,EAAc,CAAC,GAC7F,CACF,CACA,OAAAxT,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI6S,EAAW,CAAC4B,EAAc,EAAIzU,EAAK,OAAS,EAAIgT,EAAe,EAAIyB,EAAc,EAAIzU,EAAK,OAAS,EAAIgT,EAAe,CAAC,GACvL,EACAI,EAAU,KACR,YACA,eAAkBP,EAAW7S,EAAK,OAAS,EAAIgT,EAAe,EAAI,CAAChT,EAAK,OAAS,EAAIgT,EAAe,CAAC,GACvG,EACA9R,EAAiBhC,EAAMmU,CAAU,EACjCnU,EAAK,UAAY,SAASmE,EAAO,CAE/B,GADAwB,EAAI,KAAK,uBAAwB3F,EAAMmE,CAAK,EACxC,CAACnE,EAAK,MACR,OAAOoM,EAAkB,KAAKpM,EAAMmE,CAAK,EAE3C,IAAMC,EAAKpE,EAAK,GAAK,EACfqE,EAAKrE,EAAK,GAAK,EACf2U,EAAa3U,EAAK,QAAU,EAC9BqC,EAAS,CAAC,EACd,OAAIsR,EACFtR,EAAS,CACP,CAAE,EAAG+B,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EAC9E,CAAE,EAAG1P,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EAC9E,CAAE,EAAG1P,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,EAC9E,CAAE,EAAG1P,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAI7T,EAAK,OAASgT,CAAa,CAChF,EAEAzR,EAAS,CACP,CAAE,EAAG+B,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,EAAIY,CAAY,EAC/D,CAAE,EAAGnR,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAIY,CAAY,EAC/D,CAAE,EAAGnR,EAAKtD,EAAK,MAAQ,EAAI,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACrD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,CAAE,EACjD,CAAE,EAAGvQ,EAAKtD,EAAK,MAAQ,EAAG,EAAGuD,EAAKsQ,EAAa,EAAIY,CAAY,EAC/D,CAAE,EAAGnR,EAAKkR,EAAa,EAAG,EAAGjR,EAAKsQ,EAAa,EAAIY,CAAY,CACjE,EAEUnJ,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOoV,GAAa,aAAa,EAIjC,eAAeQ,GAAc3V,EAAQC,EAAM,CACzC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEqC,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAGiC,EAAG,EAAG,CAAE,EACb,CAAE,EAAGA,EAAI,EAAIC,EAAI,EAAG,EAAG,CAACA,CAAE,EAC1B,CAAE,EAAG,GAAKA,EAAI,EAAG,EAAG,CAACA,CAAE,CACzB,EACIoJ,EACE,CAAE,UAAApB,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4N,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EAC3C4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC9C,EAAI,CAAC,KAAKC,EAAI,CAAC,GAAG,EACzGgI,GACFoB,EAAQ,KAAK,QAASpB,CAAS,CAEnC,MACEoB,EAAUL,GAAmBhN,EAAUgE,EAAGC,EAAGlC,CAAM,EAErD,OAAIsE,GACFgH,EAAQ,KAAK,QAAShH,CAAU,EAElC3G,EAAK,MAAQsE,EACbtE,EAAK,OAASuE,EACdvC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAO4V,GAAe,eAAe,EAIrC,eAAeC,GAAS5V,EAAQC,EAAM+B,EAAS,CAC7C,GAAM,CAAE,YAAA2E,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEkG,EAAa,KAAK,IAAIpF,EAAK,MAAQiB,EAAQ,cAAgB,EAAG/B,GAAM,OAAS,CAAC,EAC9EmG,EAAc,KAAK,IAAIrF,EAAK,OAASiB,EAAQ,cAAgB,EAAG/B,GAAM,QAAU,CAAC,EACjFsD,EAAI,CAAC4C,EAAa,EAClB3C,EAAI,CAAC4C,EAAc,EACrBa,EACA,CAAE,GAAAoC,EAAI,GAAAC,CAAG,EAAIrJ,EACX,CAAE,UAAAuM,CAAU,EAAIvM,EAKtB,GAJI+B,GAAS,IAAMA,EAAQ,KACzBqH,EAAKrH,EAAQ,GACbsH,EAAKtH,EAAQ,IAEX/B,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB4N,EAAW/G,EAAkBnH,EAAM,CAAC,CAAC,EACrCoH,EAAYgC,GAAMC,EAAKpC,EAAG,KAAKhB,GAAuB3C,EAAGC,EAAG2C,EAAYC,EAAaiD,GAAM,CAAC,EAAG8E,CAAQ,EAAIjH,EAAG,UAAU3D,EAAGC,EAAG2C,EAAYC,EAAa+H,CAAQ,EACrKlH,EAAQ1G,EAAS,OAAO,IAAM8G,EAAW,cAAc,EACvDJ,EAAM,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASxG,EAAoB+L,CAAS,CAAC,CAC3F,MACEvF,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EAC9C0G,EAAM,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASL,CAAU,EAAE,KAAK,KAAMnG,EAAoB4I,CAAE,CAAC,EAAE,KAAK,KAAM5I,EAAoB6I,CAAE,CAAC,EAAE,KAAK,IAAK/F,CAAC,EAAE,KAAK,IAAKC,CAAC,EAAE,KAAK,QAAS2C,CAAU,EAAE,KAAK,SAAUC,CAAW,EAE/N,OAAAnE,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,cAAgB,SAASmO,EAAQhK,EAAO,CAC3C,OAAOiI,EAAkB,KAAK+B,EAAQhK,CAAK,CAC7C,EACAnE,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAO6V,GAAU,UAAU,EAG3B,eAAeC,GAAU7V,EAAQC,EAAM,CACrC,GAAM,CAAE,SAAAM,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAM,OAAO,EACnEgH,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EAGpD,OAAA0G,EAAM,KAAK,QAFQ,EAEW,EAAE,KAAK,SADjB,EACsC,EAC1D1G,EAAS,KAAK,QAAS,iBAAiB,EACxCG,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,IAAMA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,IAAMA,EAAK,GAAKA,EAAK,KAAO,GAAG,GAClH,EACAkB,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAO8V,GAAW,WAAW,EAI7B,eAAeC,GAAU9V,EAAQC,EAAM,CACrC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAIA,GAAM,OAAS,CAAC,EAC/DuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAIA,GAAM,QAAU,CAAC,EACjEqC,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAGiC,EAAI,EAAIC,EAAI,EAAG,EAAG,CAAE,EACzB,CAAE,EAAGD,EAAG,EAAG,CAACC,CAAE,EACd,CAAE,EAAG,EAAE,EAAIA,GAAK,EAAG,EAAG,CAACA,CAAE,CAC3B,EACIoJ,EACE,CAAE,UAAApB,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4N,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EAC3C4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC9C,EAAI,CAAC,KAAKC,EAAI,CAAC,GAAG,EACzGgI,GACFoB,EAAQ,KAAK,QAASpB,CAAS,CAEnC,MACEoB,EAAUL,GAAmBhN,EAAUgE,EAAGC,EAAGlC,CAAM,EAErD,OAAIsE,GACFgH,EAAQ,KAAK,QAAShH,CAAU,EAElC3G,EAAK,MAAQsE,EACbtE,EAAK,OAASuE,EACdvC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAO+V,GAAW,WAAW,EAI7B,eAAeC,GAAW/V,EAAQC,EAAM,CACtC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAIA,GAAM,OAAS,CAAC,EAC/DuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAIA,GAAM,QAAU,CAAC,EACjEqC,EAAS,CACb,CAAE,EAAG,GAAKkC,EAAI,EAAG,EAAG,CAAE,EACtB,CAAE,EAAGD,EAAG,EAAG,CAAE,EACb,CAAE,EAAGA,EAAI,EAAIC,EAAI,EAAG,EAAG,CAACA,CAAE,EAC1B,CAAE,EAAG,EAAG,EAAG,CAACA,CAAE,CAChB,EACIoJ,EACE,CAAE,UAAApB,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4N,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EAC3C4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC9C,EAAI,CAAC,KAAKC,EAAI,CAAC,GAAG,EACzGgI,GACFoB,EAAQ,KAAK,QAASpB,CAAS,CAEnC,MACEoB,EAAUL,GAAmBhN,EAAUgE,EAAGC,EAAGlC,CAAM,EAErD,OAAIsE,GACFgH,EAAQ,KAAK,QAAShH,CAAU,EAElC3G,EAAK,MAAQsE,EACbtE,EAAK,OAASuE,EACdvC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAOgW,GAAY,YAAY,EAI/B,SAASC,GAAchW,EAAQC,EAAM,CACnC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,MAAQ,GACbA,EAAK,WAAa0G,EAClB,IAAMpG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASmC,EAAelC,CAAI,CAAC,EAAE,KAAK,KAAMA,EAAK,OAASA,EAAK,EAAE,EAClG,CAAE,UAAAuM,CAAU,EAAIvM,EAChB6B,EAAQ,KAAK,IAAI,GAAI7B,GAAM,OAAS,CAAC,EACrC+G,EAAS,KAAK,IAAI,GAAI/G,GAAM,QAAU,CAAC,EACvCgW,EAAM,EACN3T,EAAS,CACb,CAAE,EAAGR,EAAO,EAAG,CAAE,EACjB,CAAE,EAAG,EAAG,EAAGkF,EAASiP,EAAM,CAAE,EAC5B,CAAE,EAAGnU,EAAQ,EAAImU,EAAK,EAAGjP,EAASiP,EAAM,CAAE,EAC1C,CAAE,EAAG,EAAG,EAAG,EAAIjP,CAAO,EACtB,CAAE,EAAGlF,EAAO,EAAGkF,EAASiP,EAAM,CAAE,EAChC,CAAE,EAAG,EAAIA,EAAK,EAAGjP,EAASiP,EAAM,CAAE,CACpC,EACM/O,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMiN,EAAW5M,EAAqBC,CAAM,EACtC4M,EAAWhI,EAAG,KAAK+H,EAAUjN,CAAO,EACpCkU,EAAiB3V,EAAS,OAAO,IAAM2O,EAAU,cAAc,EACrE,OAAI1C,GAAavM,EAAK,OAAS,aAC7BiW,EAAe,UAAU,MAAM,EAAE,KAAK,QAAS1J,CAAS,EAEtD5F,GAAc3G,EAAK,OAAS,aAC9BiW,EAAe,UAAU,MAAM,EAAE,KAAK,QAAStP,CAAU,EAE3DsP,EAAe,KAAK,YAAa,cAAcpU,EAAQ,CAAC,IAAI,CAACkF,CAAM,GAAG,EACtE/E,EAAiBhC,EAAMiW,CAAc,EACrCjW,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,0BAA2B3F,EAAMmE,CAAK,EACnCiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOiW,GAAe,eAAe,EAIrC,IAAIG,GAAuCpW,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,EAAI8M,IACvE,CACL,IAAI7S,CAAC,IAAIC,EAAI8F,CAAE,GACf,IAAID,CAAE,IAAIC,CAAE,UAAUxH,CAAK,KAC3B,IAAIuH,CAAE,IAAIC,CAAE,UAAU,CAACxH,CAAK,KAC5B,MAAMkF,CAAM,GACZ,IAAIqC,CAAE,IAAIC,CAAE,UAAUxH,CAAK,KAC3B,MAAM,CAACkF,CAAM,GACb,IAAIzD,CAAC,IAAIC,EAAI8F,EAAK8M,CAAW,GAC7B,IAAI/M,CAAE,IAAIC,CAAE,UAAUxH,CAAK,IAC7B,EAAE,KAAK,GAAG,EACT,qBAAqB,EACpBuU,GAA4CtW,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,EAAI8M,IAC5E,CACL,IAAI7S,CAAC,IAAIC,EAAI8F,CAAE,GACf,IAAI/F,EAAIzB,CAAK,IAAI0B,EAAI8F,CAAE,GACvB,IAAID,CAAE,IAAIC,CAAE,UAAU,CAACxH,CAAK,KAC5B,MAAMkF,CAAM,GACZ,IAAIqC,CAAE,IAAIC,CAAE,UAAUxH,CAAK,KAC3B,MAAM,CAACkF,CAAM,GACb,IAAIzD,CAAC,IAAIC,EAAI8F,EAAK8M,CAAW,GAC7B,IAAI/M,CAAE,IAAIC,CAAE,UAAUxH,CAAK,IAC7B,EAAE,KAAK,GAAG,EACT,0BAA0B,EACzBwU,GAA4CvW,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IACxE,CAAC,IAAI/F,EAAIzB,EAAQ,CAAC,IAAI,CAACkF,EAAS,CAAC,GAAI,IAAIqC,CAAE,IAAIC,CAAE,UAAUxH,CAAK,IAAI,EAAE,KAAK,GAAG,EACpF,0BAA0B,EAC7B,eAAeyU,GAAcvW,EAAQC,EAAM,CACzC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAIA,EAAK,OAAS,CAAC,EAC9DoJ,EAAK9E,EAAI,EACT+E,EAAKD,GAAM,IAAM9E,EAAI,IACrBC,EAAI,KAAK,IAAIzD,EAAK,OAASuI,GAAMrJ,EAAK,SAAW,GAAIA,EAAK,QAAU,CAAC,EACrEmW,EAAc5R,EAAI,GACpB2M,EACE,CAAE,UAAA3E,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB6Q,EAAgBiF,GAA0B,EAAG,EAAG9R,EAAGC,EAAG6E,EAAIC,EAAI8M,CAAW,EACzE/E,EAAgBiF,GAA0B,EAAGhN,EAAI/E,EAAGC,EAAG6E,EAAIC,CAAE,EAC7DtH,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpCqR,EAAYpK,EAAG,KAAKkK,EAAepP,CAAO,EAC1CuP,EAAYrK,EAAG,KAAKmK,EAAerP,CAAO,EAC5BzB,EAAS,OAAO,IAAMgR,EAAW,cAAc,EACvD,KAAK,QAAS,MAAM,EAChCJ,EAAY5Q,EAAS,OAAO,IAAM+Q,EAAW,cAAc,EAC3DH,EAAU,KAAK,QAAS,uBAAuB,EAC3C3E,GACF2E,EAAU,KAAK,QAAS3E,CAAS,CAErC,KAAO,CACL,IAAMqB,EAAWsI,GAAqB,EAAG,EAAG5R,EAAGC,EAAG6E,EAAIC,EAAI8M,CAAW,EACrEjF,EAAY5Q,EAAS,OAAO,OAAQ,cAAc,EAAE,KAAK,IAAKsN,CAAQ,EAAE,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASpN,EAAoB+L,CAAS,CAAC,EAAE,KAAK,QAAS5F,CAAU,CACvL,CACA,OAAAuK,EAAU,KAAK,iBAAkB7H,CAAE,EACnC6H,EAAU,KAAK,YAAa,aAAa,CAAC5M,EAAI,CAAC,KAAK,EAAEC,EAAI,EAAI8E,EAAG,GAAG,EACpErH,EAAiBhC,EAAMkR,CAAS,EAChCzQ,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,IAAMA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,GAAKuI,GAAMvI,EAAK,GAAKA,EAAK,KAAO,GAAG,GACvH,EACAd,EAAK,UAAY,SAASmE,EAAO,CAC/B,IAAMoN,EAAMnF,EAAkB,KAAKpM,EAAMmE,CAAK,EACxCb,EAAIiO,EAAI,GAAKvR,EAAK,GAAK,GAC7B,GAAIoJ,GAAM,IAAM,KAAK,IAAI9F,CAAC,GAAKtD,EAAK,OAAS,GAAK,GAAK,KAAK,IAAIsD,CAAC,IAAMtD,EAAK,OAAS,GAAK,GAAK,KAAK,IAAIuR,EAAI,GAAKvR,EAAK,GAAK,EAAE,GAAKA,EAAK,QAAU,GAAK,EAAIqJ,GAAK,CAC7J,IAAI9F,EAAI8F,EAAKA,GAAM,EAAI/F,EAAIA,GAAK8F,EAAKA,IACjC7F,EAAI,IACNA,EAAI,KAAK,KAAKA,CAAC,GAEjBA,EAAI8F,EAAK9F,EACLY,EAAM,GAAKnE,EAAK,GAAK,GAAK,IAC5BuD,EAAI,CAACA,GAEPgO,EAAI,GAAKhO,CACX,CACA,OAAOgO,CACT,EACOjR,CACT,CACAR,EAAOwW,GAAe,eAAe,EAIrC,eAAeC,GAAmBxW,EAAQC,EAAM,CAC9C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEwW,EAAgBjS,EAAI,EACpBkS,EAASlS,EAAIiS,EACb,CAAE,UAAAjK,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAACmS,EAAS,CAAE,EAC1C,CAAE,EAAG,CAACnS,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAGmS,EAAS,CAAE,EACzC,GAAGhU,GACD,CAAC6B,EAAI,EAAIA,EAAI,EAAI,GACjBmS,EAAS,EACTnS,EAAI,EAAIA,EAAI,EAAI,GAChBmS,EAAS,EACTD,EACA,EACF,EACA,CAAE,EAAGlS,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAACmS,EAAS,CAAE,EACzC,CAAE,EAAG,CAACnS,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAACmS,EAAS,CAAE,EAC1C,CAAE,EAAG,CAACnS,EAAI,EAAG,EAAG,CAACmS,EAAS,CAAE,EAC5B,CAAE,EAAG,CAACnS,EAAI,EAAG,EAAGmS,EAAS,EAAI,GAAI,EACjC,CAAE,EAAG,CAACnS,EAAI,EAAG,EAAG,CAACmS,EAAS,CAAE,CAC9B,EACM9E,EAAO1K,EAAG,QACd5E,EAAO,IAAKE,GAAM,CAACA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAC5BR,CACF,EACM2U,EAAepW,EAAS,OAAO,IAAMqR,EAAM,cAAc,EAC/D,OAAA+E,EAAa,KAAK,QAAS,uBAAuB,EAC9CnK,GAAavM,EAAK,OAAS,aAC7B0W,EAAa,UAAU,MAAM,EAAE,KAAK,QAASnK,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B0W,EAAa,UAAU,MAAM,EAAE,KAAK,QAAS/P,CAAU,EAEzD+P,EAAa,KAAK,YAAa,eAAe,CAACF,EAAgB,CAAC,GAAG,EACnE/V,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,GAAKtE,EAAK,SAAW,GAAKsE,EAAI,EAAI,GAAM,GAAKxD,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAKwW,EAAgB,GAAK1V,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC5K,EACAkB,EAAiBhC,EAAM0W,CAAY,EACnC1W,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOyW,GAAoB,oBAAoB,EAI/C,eAAeI,GAAU5W,EAAQC,EAAM,CACrC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEyR,EAAa,EACbnO,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACT,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4W,EAAkB,CACtB,CAAE,EAAGtT,EAAImO,EAAY,EAAGlO,EAAIkO,CAAW,EACvC,CAAE,EAAGnO,EAAImO,EAAY,EAAGlO,EAAIgB,EAAIkN,CAAW,EAC3C,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIgB,EAAIkN,CAAW,EAC/C,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIgB,CAAE,EAClC,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,CAAE,EACrB,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,EAAIkN,CAAW,EAClC,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIgB,EAAIkN,CAAW,EAC/C,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIkO,CAAW,EAC3C,CAAE,EAAGnO,EAAImO,EAAY,EAAGlO,EAAIkO,CAAW,EACvC,CAAE,EAAGnO,EAAImO,EAAY,EAAAlO,CAAE,EACvB,CAAE,EAAAD,EAAG,EAAAC,CAAE,EACP,CAAE,EAAAD,EAAG,EAAGC,EAAIkO,CAAW,CACzB,EACMoF,EAAkB,CACtB,CAAE,EAAAvT,EAAG,EAAGC,EAAIkO,CAAW,EACvB,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIkO,CAAW,EAC3C,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIgB,CAAE,EAClC,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,CAAE,EACrB,CAAE,EAAGjB,EAAIgB,EAAG,EAAAf,CAAE,EACd,CAAE,EAAAD,EAAG,EAAAC,CAAE,CACT,EACIvD,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM+U,EAAY1U,EAAqBwU,CAAe,EAChDvF,EAAYpK,EAAG,KAAK6P,EAAW/U,CAAO,EACtCgV,EAAY3U,EAAqByU,CAAe,EAChDG,EAAY/P,EAAG,KAAK8P,EAAW,CAAE,GAAGhV,EAAS,KAAM,MAAO,CAAC,EAC3DkV,EAAa3W,EAAS,OAAO,IAAM0W,EAAW,cAAc,EAClE,OAAAC,EAAW,OAAO,IAAM5F,EAAW,cAAc,EACjD4F,EAAW,KAAK,QAAS,uBAAuB,EAC5C1K,GAAavM,EAAK,OAAS,aAC7BiX,EAAW,UAAU,MAAM,EAAE,KAAK,QAAS1K,CAAS,EAElD5F,GAAc3G,EAAK,OAAS,aAC9BiX,EAAW,UAAU,MAAM,EAAE,KAAK,QAAStQ,CAAU,EAEvDlG,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,GAAK2Q,GAAc3Q,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,GAAK2Q,GAAc3Q,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC5I,EACAkB,EAAiBhC,EAAMiX,CAAU,EACjCjX,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAM4W,EAAiBzS,CAAK,CAEpE,EACO7D,CACT,CACAR,EAAO6W,GAAW,WAAW,EAI7B,eAAeO,GAAwBnX,EAAQC,EAAM,CACnD,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEwW,EAAgBjS,EAAI,EACpBkS,EAASlS,EAAIiS,EACblT,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACkT,EAAS,EACdhF,EAAa,EACb,CAAE,UAAAlF,CAAU,EAAIvM,EAChBmX,EAAa1U,GACjBa,EAAImO,EACJlO,EAAIkT,EAAShF,EACbnO,EAAIgB,EAAImN,EACRlO,EAAIkT,EAAShF,EACb+E,EACA,EACF,EACMY,EAAgBD,IAAaA,EAAW,OAAS,CAAC,EAClDP,EAAkB,CACtB,CAAE,EAAGtT,EAAImO,EAAY,EAAGlO,EAAIkO,CAAW,EACvC,CAAE,EAAGnO,EAAImO,EAAY,EAAGlO,EAAIkT,EAAShF,CAAW,EAChD,GAAG0F,EACH,CAAE,EAAG7T,EAAIgB,EAAImN,EAAY,EAAG2F,EAAc,EAAI3F,CAAW,EACzD,CAAE,EAAGnO,EAAIgB,EAAG,EAAG8S,EAAc,EAAI3F,CAAW,EAC5C,CAAE,EAAGnO,EAAIgB,EAAG,EAAG8S,EAAc,EAAI,EAAI3F,CAAW,EAChD,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAG2F,EAAc,EAAI,EAAI3F,CAAW,EAC7D,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIkO,CAAW,EAC3C,CAAE,EAAGnO,EAAImO,EAAY,EAAGlO,EAAIkO,CAAW,EACvC,CAAE,EAAGnO,EAAImO,EAAY,EAAAlO,CAAE,EACvB,CAAE,EAAAD,EAAG,EAAAC,CAAE,EACP,CAAE,EAAAD,EAAG,EAAGC,EAAIkO,CAAW,CACzB,EACMoF,EAAkB,CACtB,CAAE,EAAAvT,EAAG,EAAGC,EAAIkO,CAAW,EACvB,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAGlO,EAAIkO,CAAW,EAC3C,CAAE,EAAGnO,EAAIgB,EAAImN,EAAY,EAAG2F,EAAc,EAAI3F,CAAW,EACzD,CAAE,EAAGnO,EAAIgB,EAAG,EAAG8S,EAAc,EAAI3F,CAAW,EAC5C,CAAE,EAAGnO,EAAIgB,EAAG,EAAAf,CAAE,EACd,CAAE,EAAAD,EAAG,EAAAC,CAAE,CACT,EACM0D,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM+U,EAAY1U,EAAqBwU,CAAe,EAChDvF,EAAYpK,EAAG,KAAK6P,EAAW/U,CAAO,EACtCgV,EAAY3U,EAAqByU,CAAe,EAChDG,EAAY/P,EAAG,KAAK8P,EAAWhV,CAAO,EACtC+G,EAAQxI,EAAS,OAAO,IAAM+Q,EAAW,cAAc,EAC7D,OAAAvI,EAAM,OAAO,IAAMkO,CAAS,EAC5BlO,EAAM,KAAK,QAAS,uBAAuB,EACvCyD,GAAavM,EAAK,OAAS,aAC7B8I,EAAM,UAAU,MAAM,EAAE,KAAK,QAASyD,CAAS,EAE7C5F,GAAc3G,EAAK,OAAS,aAC9B8I,EAAM,UAAU,MAAM,EAAE,KAAK,QAASnC,CAAU,EAElDmC,EAAM,KAAK,YAAa,eAAe,CAAC0N,EAAgB,CAAC,GAAG,EAC5D/V,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,GAAK2Q,GAAc3Q,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,GAAK2Q,EAAa+E,EAAgB,GAAK1V,EAAK,GAAKA,EAAK,KAAO,GAAG,GAChK,EACAkB,EAAiBhC,EAAM8I,CAAK,EAC5B9I,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAM4W,EAAiBzS,CAAK,CAEpE,EACO7D,CACT,CACAR,EAAOoX,GAAyB,yBAAyB,EAIzD,eAAeG,GAAKtX,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,CAAe,CAAE,EAAG,CAChE,GAAM,CAAE,YAAAI,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EACI1G,EAAK,eAAiBsX,GAAU,EAAE,WAAW,aAAe,KAEhFtX,EAAK,YAAc,IAErB,GAAM,CAAE,SAAAM,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFkG,EAAa,KAAK,IAAIpF,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EAC5EmG,EAAc,KAAK,IAAIrF,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EAC/EsD,EAAI,CAAC4C,EAAa,EAClB3C,EAAI,CAAC4C,EAAc,EACnB,CAAE,UAAAoG,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CACtC,KAAMsG,EAAe,aACrB,OAAQA,EAAe,eACzB,CAAC,EACGtG,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMwV,EAAgBtQ,EAAG,UAAU3D,EAAGC,EAAG2C,EAAYC,EAAapE,CAAO,EACnEiF,EAAQ1G,EAAS,OAAO,IAAMiX,EAAe,cAAc,EACjE,OAAAvQ,EAAM,KAAK,QAAS,uBAAuB,EACvCuF,GAAavM,EAAK,OAAS,aAC7BgH,EAAM,UAAU,MAAM,EAAE,KAAK,QAASuF,CAAS,EAE7C5F,GAAc3G,EAAK,OAAS,aAC9BgH,EAAM,UAAU,MAAM,EAAE,KAAK,QAASL,CAAU,EAElDlG,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,IAAMA,EAAK,GAAKA,EAAK,KAAO,GAAG,GAChH,EACAkB,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOuX,GAAM,MAAM,EAInB,IAAIG,GAAyC1X,EAAO,CAACwD,EAAGC,EAAGkU,IAClD,CACL,IAAInU,EAAImU,EAAO,CAAC,IAAIlU,CAAC,GACrB,IAAID,EAAImU,CAAI,IAAIlU,EAAIkU,EAAO,CAAC,GAC5B,IAAInU,EAAImU,EAAO,CAAC,IAAIlU,EAAIkU,CAAI,GAC5B,IAAInU,CAAC,IAAIC,EAAIkU,EAAO,CAAC,GACrB,GACF,EAAE,KAAK,GAAG,EACT,wBAAwB,EAC3B,eAAeC,GAAS3X,EAAQC,EAAM,CACpC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAIxD,EAAK,MAAQd,EAAK,QACtBuE,EAAIzD,EAAK,OAASd,EAAK,QACvB8N,EAAIxJ,EAAIC,EACRoT,EAAa,GACbtV,EAAS,CACb,CAAE,EAAGyL,EAAI,EAAG,EAAG,CAAE,EACjB,CAAE,EAAGA,EAAG,EAAG,CAACA,EAAI,CAAE,EAClB,CAAE,EAAGA,EAAI,EAAG,EAAG,CAACA,CAAE,EAClB,CAAE,EAAG,EAAG,EAAG,CAACA,EAAI,CAAE,CACpB,EACIH,EACE,CAAE,UAAApB,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4N,EAAW4J,GAAuB,EAAG,EAAG1J,CAAC,EACzC1G,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EAC3C4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC0G,EAAI,EAAI6J,CAAU,KAAK7J,EAAI,CAAC,GAAG,EACtHvB,GACFoB,EAAQ,KAAK,QAASpB,CAAS,CAEnC,MACEoB,EAAUL,GAAmBhN,EAAUwN,EAAGA,EAAGzL,CAAM,EACnDsL,EAAQ,KAAK,YAAa,aAAa,CAACG,EAAI,EAAI6J,CAAU,KAAK7J,EAAI,CAAC,GAAG,EAEzE,OAAInH,GACFgH,EAAQ,KAAK,QAAShH,CAAU,EAElC3E,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,cAAgB,SAASmO,EAAQhK,EAAO,CAC3C,IAAMyT,EAAKzJ,EAAO,MACZ0J,EAAU,CACd,CAAE,EAAGD,EAAK,EAAG,EAAG,CAAE,EAClB,CAAE,EAAGA,EAAI,EAAG,CAACA,EAAK,CAAE,EACpB,CAAE,EAAGA,EAAK,EAAG,EAAG,CAACA,CAAG,EACpB,CAAE,EAAG,EAAG,EAAG,CAACA,EAAK,CAAE,CACrB,EACMtW,EAAM8K,EAAkB,QAAQ+B,EAAQ0J,EAAS1T,CAAK,EAC5D,MAAO,CAAE,EAAG7C,EAAI,EAAI,GAAK,EAAGA,EAAI,EAAI,EAAI,CAC1C,EACAtB,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAO,KAAK,cAAcnE,EAAMmE,CAAK,CACvC,EACO7D,CACT,CACAR,EAAO4X,GAAU,UAAU,EAI3B,eAAeI,GAAoB/X,EAAQC,EAAM,CAC/C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAIA,GAAM,OAAS,CAAC,EAC/DuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAIA,GAAM,QAAU,CAAC,EACjEsD,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACTwT,EAAQxU,EAAI,EACZlB,EAAS,CACb,CAAE,EAAGiB,EAAIyU,EAAO,EAAAxU,CAAE,EAClB,CAAE,EAAAD,EAAG,EAAG,CAAE,EACV,CAAE,EAAGA,EAAIyU,EAAO,EAAG,CAACxU,CAAE,EACtB,CAAE,EAAG,CAACD,EAAG,EAAG,CAACC,CAAE,EACf,CAAE,EAAG,CAACD,EAAG,EAAAC,CAAE,CACb,EACM,CAAE,UAAAgJ,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM6L,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAC/D,OAAAuG,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,UAAU,MAAM,EAAE,KAAK,QAASpB,CAAS,EAE/C5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,UAAU,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEpDgH,EAAQ,KAAK,YAAa,aAAa,CAACoK,EAAQ,CAAC,KAAK,EACtDtX,EAAM,KACJ,YACA,aAAa,CAACsX,EAAQ,EAAIjX,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,IAAMA,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC5H,EACAkB,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAOgY,GAAqB,qBAAqB,EAKjD,eAAeE,GAAcjY,EAAQC,EAAM,CACzC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,IAAI4F,EACCtM,EAAK,WAGRsM,EAAU,QAAUtM,EAAK,WAFzBsM,EAAU,eAIZ,IAAMhM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASuM,CAAO,EAAE,KAAK,KAAMtM,EAAK,OAASA,EAAK,EAAE,EACrFiY,EAAI3X,EAAS,OAAO,GAAG,EACvBG,EAAQH,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,OAAO,EAAE,KAAK,QAASqG,CAAU,EAC5EuR,EAAclY,EAAK,YACnBmY,EAAQnY,EAAK,MACbU,EAAQD,EAAM,KAAK,EAAE,YAAY,MAAMuF,GAAoBmS,EAAOnY,EAAK,WAAY,GAAM,EAAI,CAAC,EAChGc,EAAO,CAAE,MAAO,EAAG,OAAQ,CAAE,EACjC,GAAIV,EAASC,EAAW,GAAG,WAAW,UAAU,EAAG,CACjD,IAAM+X,EAAO1X,EAAM,SAAS,CAAC,EACvB2X,EAAMnX,EAAQR,CAAK,EACzBI,EAAOsX,EAAK,sBAAsB,EAClCC,EAAI,KAAK,QAASvX,EAAK,KAAK,EAC5BuX,EAAI,KAAK,SAAUvX,EAAK,MAAM,CAChC,CACA6E,EAAI,KAAK,SAAUuS,CAAW,EAC9B,IAAMI,EAAWJ,GAAe,CAAC,EAC3BK,EAAW7X,EAAM,QAAQ,EACzB8X,EAAQ/X,EAAM,KAAK,EAAE,YACzB,MAAMuF,GACJsS,EAAS,KAAOA,EAAS,KAAK,OAAO,EAAIA,EACzCtY,EAAK,WACL,GACA,EACF,CACF,EACMgB,EAAMwX,EAAM,SAAS,CAAC,EACtBvX,EAAKC,EAAQsX,CAAK,EACxB1X,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,EAC7B,IAAMC,GAAef,EAAK,SAAW,GAAK,EAC1CkB,EAAQsX,CAAK,EAAE,KACb,YACA,eAAiB1X,EAAK,MAAQyX,EAAS,MAAQ,GAAKA,EAAS,MAAQzX,EAAK,OAAS,GAAK,MAAQyX,EAAS,OAASxX,EAAc,GAAK,GACvI,EACAG,EAAQR,CAAK,EAAE,KACb,YACA,eAAiBI,EAAK,MAAQyX,EAAS,MAAQ,EAAI,EAAEA,EAAS,MAAQzX,EAAK,OAAS,GAAK,MAC3F,EACAA,EAAOL,EAAM,KAAK,EAAE,QAAQ,EAC5BA,EAAM,KACJ,YACA,aAAe,CAACK,EAAK,MAAQ,EAAI,MAAQ,CAACA,EAAK,OAAS,EAAIC,EAAc,GAAK,GACjF,EACA,IAAMmF,EAAapF,EAAK,OAASd,EAAK,SAAW,GAC3CmG,EAAcrF,EAAK,QAAUd,EAAK,SAAW,GAC7CsD,EAAI,CAACxC,EAAK,MAAQ,EAAIC,EACtBwC,EAAI,CAACzC,EAAK,OAAS,EAAIC,EACzBiG,EACAsK,EACJ,GAAItR,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpCoH,EAAYH,EAAG,KACnBhB,GAAuB3C,EAAGC,EAAG2C,EAAYC,EAAanG,EAAK,IAAM,CAAC,EAClE+B,CACF,EACM0W,EAAYxR,EAAG,KACnB,CAACnG,EAAK,MAAQ,EAAIC,EAClB,CAACD,EAAK,OAAS,EAAIC,EAAcwX,EAAS,OAASxX,EACnDD,EAAK,MAAQ,EAAIC,EACjB,CAACD,EAAK,OAAS,EAAIC,EAAcwX,EAAS,OAASxX,EACnDgB,CACF,EACAuP,EAAYhR,EAAS,OAAO,KAC1BqF,EAAI,MAAM,wBAAyByB,CAAS,EACrCqR,GACN,cAAc,EACjBzR,EAAQ1G,EAAS,OAAO,KACtBqF,EAAI,MAAM,wBAAyByB,CAAS,EACrCA,GACN,cAAc,CACnB,MACEJ,EAAQiR,EAAE,OAAO,OAAQ,cAAc,EACvC3G,EAAY2G,EAAE,OAAO,MAAM,EAC3BjR,EAAM,KAAK,QAAS,mBAAmB,EAAE,KAAK,QAASL,CAAU,EAAE,KAAK,IAAK,CAAC7F,EAAK,MAAQ,EAAIC,CAAW,EAAE,KAAK,IAAK,CAACD,EAAK,OAAS,EAAIC,CAAW,EAAE,KAAK,QAASD,EAAK,OAASd,EAAK,SAAW,EAAE,EAAE,KAAK,SAAUc,EAAK,QAAUd,EAAK,SAAW,EAAE,EACtPsR,EAAU,KAAK,QAAS,SAAS,EAAE,KAAK,KAAM,CAACxQ,EAAK,MAAQ,EAAIC,CAAW,EAAE,KAAK,KAAMD,EAAK,MAAQ,EAAIC,CAAW,EAAE,KAAK,KAAM,CAACD,EAAK,OAAS,EAAIC,EAAcwX,EAAS,OAASxX,CAAW,EAAE,KAAK,KAAM,CAACD,EAAK,OAAS,EAAIC,EAAcwX,EAAS,OAASxX,CAAW,EAE5Q,OAAAiB,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOkY,GAAe,eAAe,EAIrC,SAASU,GAAmBhW,EAAIC,EAAIC,EAAIC,EAAIuG,EAAIC,EAAIqD,EAAW,CAE7D,IAAMC,GAAQjK,EAAKE,GAAM,EACnBQ,GAAQT,EAAKE,GAAM,EACnBoB,EAAQ,KAAK,MAAMpB,EAAKF,EAAIC,EAAKF,CAAE,EACnC0B,GAAMxB,EAAKF,GAAM,EACjB2B,GAAMxB,EAAKF,GAAM,EACjBiK,EAAexI,EAAKgF,EACpByD,EAAexI,EAAKgF,EACpByD,EAAW,KAAK,KAAKF,GAAgB,EAAIC,GAAgB,CAAC,EAChE,GAAIC,EAAW,EACb,MAAM,IAAI,MAAM,oEAAoE,EAEtF,IAAMC,EAAuB,KAAK,KAAK,EAAID,GAAY,CAAC,EAClDrJ,EAAUkJ,EAAOI,EAAuB1D,EAAK,KAAK,IAAIpF,CAAK,GAAKyI,EAAY,GAAK,GACjFhJ,EAAUN,EAAO2J,EAAuB3D,EAAK,KAAK,IAAInF,CAAK,GAAKyI,EAAY,GAAK,GACjF7I,EAAa,KAAK,OAAOlB,EAAKe,GAAW2F,GAAK3G,EAAKe,GAAW2F,CAAE,EAElE4D,EADa,KAAK,OAAOnK,EAAKa,GAAW2F,GAAKzG,EAAKa,GAAW2F,CAAE,EACxCvF,EACxB6I,GAAaM,EAAa,IAC5BA,GAAc,EAAI,KAAK,IAErB,CAACN,GAAaM,EAAa,IAC7BA,GAAc,EAAI,KAAK,IAEzB,IAAM3K,EAAS,CAAC,EAChB,QAASG,EAAI,EAAGA,EAAI,GAAWA,IAAK,CAClC,IAAMa,EAAIb,EAAK,GACTyK,EAASpJ,EAAaR,EAAI2J,EAC1B1J,EAAIG,EAAU2F,EAAK,KAAK,IAAI6D,CAAM,EAClC1J,EAAIG,EAAU2F,EAAK,KAAK,IAAI4D,CAAM,EACxC5K,EAAO,KAAK,CAAE,EAAAiB,EAAG,EAAAC,CAAE,CAAC,CACtB,CACA,OAAOlB,CACT,CACAvC,EAAO4Y,GAAoB,mBAAmB,EAC9C,eAAeC,GAAY5Y,EAAQC,EAAM,CACvC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzE4Y,EAAgB5Y,GAAM,SAAW,EACjC6Y,EAAgB7Y,GAAM,SAAW,EACjCsE,GAAKtE,GAAM,MAAQA,GAAM,MAAQc,EAAK,OAAS8X,EAAgB,EAC/DrU,GAAKvE,GAAM,OAASA,GAAM,OAASc,EAAK,QAAU+X,EAAgB,EAClElV,EAAS3D,EAAK,QAAU,EACxB8Y,EAAQ9Y,EAAK,OAAS,EACtB,CAAE,UAAAuM,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,SACP+B,EAAQ,OAAS/B,EAAK,QAEpBA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CAEb,CAAE,EAAG,CAACiC,EAAI,EAAIwU,EAAO,EAAG,CAACvU,EAAI,CAAE,EAE/B,CAAE,EAAGD,EAAI,EAAIwU,EAAO,EAAG,CAACvU,EAAI,CAAE,EAE9B,GAAGmU,GAAmBpU,EAAI,EAAIwU,EAAO,CAACvU,EAAI,EAAGD,EAAI,EAAG,CAACC,EAAI,EAAIuU,EAAOnV,EAAQA,EAAQ,EAAI,EAGxF,CAAE,EAAGW,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIuU,CAAM,EAE9B,CAAE,EAAGxU,EAAI,EAAG,EAAGC,EAAI,EAAIuU,CAAM,EAE7B,GAAGJ,GAAmBpU,EAAI,EAAGC,EAAI,EAAIuU,EAAOxU,EAAI,EAAIwU,EAAOvU,EAAI,EAAGZ,EAAQA,EAAQ,EAAI,EAGtF,CAAE,EAAGW,EAAI,EAAIwU,EAAO,EAAGvU,EAAI,CAAE,EAE7B,CAAE,EAAG,CAACD,EAAI,EAAIwU,EAAO,EAAGvU,EAAI,CAAE,EAE9B,GAAGmU,GAAmB,CAACpU,EAAI,EAAIwU,EAAOvU,EAAI,EAAG,CAACD,EAAI,EAAGC,EAAI,EAAIuU,EAAOnV,EAAQA,EAAQ,EAAI,EAGxF,CAAE,EAAG,CAACW,EAAI,EAAG,EAAGC,EAAI,EAAIuU,CAAM,EAE9B,CAAE,EAAG,CAACxU,EAAI,EAAG,EAAG,CAACC,EAAI,EAAIuU,CAAM,EAE/B,GAAGJ,GAAmB,CAACpU,EAAI,EAAG,CAACC,EAAI,EAAIuU,EAAO,CAACxU,EAAI,EAAIwU,EAAO,CAACvU,EAAI,EAAGZ,EAAQA,EAAQ,EAAI,CAE5F,EACMiK,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,kCAAkC,EACpDpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzD3E,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAO6Y,GAAa,aAAa,EAIjC,eAAeI,GAAchZ,EAAQC,EAAM,CACzC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFe,EAAcf,GAAM,SAAW,EAC/BsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEsD,EAAI,CAACxC,EAAK,MAAQ,EAAIC,EACtBwC,EAAI,CAACzC,EAAK,OAAS,EAAIC,EACvB,CAAE,UAAAwL,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAAiB,EAAG,EAAAC,CAAE,EACP,CAAE,EAAGD,EAAIgB,EAAI,EAAG,EAAAf,CAAE,EAClB,CAAE,EAAGD,EAAIgB,EAAI,EAAG,EAAGf,EAAIgB,CAAE,EACzB,CAAE,EAAGjB,EAAI,EAAG,EAAGC,EAAIgB,CAAE,EACrB,CAAE,EAAGjB,EAAI,EAAG,EAAAC,CAAE,EACd,CAAE,EAAAD,EAAG,EAAAC,CAAE,EACP,CAAE,EAAAD,EAAG,EAAGC,EAAIgB,CAAE,CAChB,EACM6C,EAAYH,EAAG,QACnB5E,EAAO,IAAKE,GAAM,CAACA,EAAE,EAAGA,EAAE,CAAC,CAAC,EAC5BR,CACF,EACMiF,EAAQ1G,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAC7D,OAAAJ,EAAM,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASxG,EAAoB+L,CAAS,CAAC,EACrF5F,GAAc3G,EAAK,OAAS,aAC9BgH,EAAM,UAAU,MAAM,EAAE,KAAK,QAASL,CAAU,EAE9C4F,GAAavM,EAAK,OAAS,aAC7BgH,EAAM,UAAU,MAAM,EAAE,KAAK,QAASL,CAAU,EAElDlG,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,EAAI,GAAKtE,EAAK,SAAW,IAAMc,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,IAAMc,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC1I,EACAkB,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOiZ,GAAe,eAAe,EAIrC,eAAeC,GAAWjZ,EAAQC,EAAM,CACtC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEsD,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACT,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAAiB,EAAG,EAAAC,CAAE,EACP,CAAE,EAAAD,EAAG,EAAGC,EAAIgB,CAAE,EACd,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,CAAE,EACrB,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,EAAI,CAAE,CAC3B,EACMqJ,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzDgH,EAAQ,KAAK,YAAa,gBAAgBpJ,EAAI,CAAC,GAAG,EAClD9D,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,GAAKtE,EAAK,SAAW,IAAMc,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,CAACyD,EAAI,GAAKvE,EAAK,SAAW,IAAMc,EAAK,GAAKA,EAAK,KAAO,GAAG,GACvI,EACAkB,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOkZ,GAAY,YAAY,EAG/B,eAAeC,GAAYlZ,EAAQC,EAAM,CACvC,IAAM+B,EAAU,CACd,GAAI,EACJ,GAAI,EACJ,QAAS,GACT,cAAe/B,EAAK,gBAAkBA,GAAM,SAAW,GAAK,EAC5D,eAAgBA,GAAM,SAAW,GAAK,CACxC,EACA,OAAO2V,GAAS5V,EAAQC,EAAM+B,CAAO,CACvC,CACAjC,EAAOmZ,GAAa,YAAY,EAIhC,eAAeC,GAAQnZ,EAAQC,EAAM,CACnC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzE,EAAIc,EAAK,OAASd,EAAK,QACvBsE,EAAIxD,EAAK,MAAQ,EAAI,EAAId,EAAK,QAC9B2D,EAAS,EAAI,EACb,CAAE,UAAA4I,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAIX,EAAQ,EAAG,CAAC,EAAI,CAAE,EAChC,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAG,CAAC,EAAI,CAAE,EAC/B,GAAGH,GAAqB,CAACc,EAAI,EAAIX,EAAQ,EAAGA,EAAQ,GAAI,GAAI,GAAG,EAC/D,CAAE,EAAGW,EAAI,EAAIX,EAAQ,EAAG,EAAI,CAAE,EAC9B,GAAGH,GAAqBc,EAAI,EAAIX,EAAQ,EAAGA,EAAQ,GAAI,IAAK,GAAG,CACjE,EACMiK,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,kCAAkC,EACpDpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzD3E,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOoZ,GAAS,SAAS,EAGzB,eAAeC,GAAMpZ,EAAQC,EAAM,CAMjC,OAAO2V,GAAS5V,EAAQC,EALR,CACd,GAAI,EACJ,GAAI,EACJ,QAAS,gBACX,CACqC,CACvC,CACAF,EAAOqZ,GAAO,OAAO,EAIrB,SAASC,GAASrZ,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,CAAe,CAAE,EAAG,CAC9D,GAAM,CAAE,YAAAI,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,UAAA6F,CAAU,EAAIvM,EAChB,CAAE,UAAAqZ,EAAW,YAAAC,EAAa,WAAAvR,CAAW,EAAIzB,EACzChG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAAS,cAAc,EAAE,KAAK,KAAMC,EAAK,OAASA,EAAK,EAAE,EAC5FiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMqF,EAAYH,EAAG,OAAO,EAAG,EAAG,GAAI,CACpC,GAAGlF,EACH,OAAQsX,EACR,YAAa,CACf,CAAC,EACKE,EAAYD,GAAevR,EAC3BO,EAAiBrB,EAAG,OAAO,EAAG,EAAG,EAAG,CACxC,GAAGlF,EACH,KAAMwX,EACN,OAAQA,EACR,YAAa,EACb,UAAW,OACb,CAAC,EACKC,EAAUlZ,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAC/D,OAAAoS,EAAQ,OAAO,IAAMlR,CAAc,EAC/BiE,GACFiN,EAAQ,UAAU,MAAM,EAAE,KAAK,QAASjN,CAAS,EAE/C5F,GACF6S,EAAQ,UAAU,MAAM,EAAE,KAAK,QAAS7S,CAAU,EAEpD3E,EAAiBhC,EAAMwZ,CAAO,EAC9BxZ,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,OAAOpM,EAAM,EAAGmE,CAAK,CAChD,EACO7D,CACT,CACAR,EAAOsZ,GAAU,UAAU,EAI3B,SAASK,GAAW1Z,EAAQC,EAAM,CAAE,OAAQ,CAAE,eAAAsG,CAAe,CAAE,EAAG,CAChE,GAAM,CAAE,UAAA+S,CAAU,EAAI/S,EAChBhG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAAS,cAAc,EAAE,KAAK,KAAMC,EAAK,OAASA,EAAK,EAAE,EAC9FwZ,EACJ,GAAIxZ,EAAK,OAAS,YAAa,CAE7B,IAAMoH,EADKF,EAAQ,IAAI5G,CAAQ,EACV,OAAO,EAAG,EAAG,GAAIoZ,GAAeL,CAAS,CAAC,EAC/DG,EAAUlZ,EAAS,OAAO,IAAM8G,CAAS,EACzCoS,EAAQ,KAAK,QAAS,aAAa,EAAE,KAAK,IAAK,CAAC,EAAE,KAAK,QAAS,EAAE,EAAE,KAAK,SAAU,EAAE,CACvF,MACEA,EAAUlZ,EAAS,OAAO,SAAU,cAAc,EAClDkZ,EAAQ,KAAK,QAAS,aAAa,EAAE,KAAK,IAAK,CAAC,EAAE,KAAK,QAAS,EAAE,EAAE,KAAK,SAAU,EAAE,EAEvF,OAAAxX,EAAiBhC,EAAMwZ,CAAO,EAC9BxZ,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,OAAOpM,EAAM,EAAGmE,CAAK,CAChD,EACO7D,CACT,CACAR,EAAO2Z,GAAY,YAAY,EAI/B,eAAeE,GAAW5Z,EAAQC,EAAM,CACtC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEe,GAAef,GAAM,SAAW,GAAK,EACrCsE,EAAIxD,EAAK,MAAQd,EAAK,QACtBuE,EAAIzD,EAAK,OAASd,EAAK,QACvBsD,EAAI,CAACxC,EAAK,MAAQ,EAAIC,EACtBwC,EAAI,CAACzC,EAAK,OAAS,EAAIC,EACvBsB,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAGiC,EAAG,EAAG,CAAE,EACb,CAAE,EAAGA,EAAG,EAAG,CAACC,CAAE,EACd,CAAE,EAAG,EAAG,EAAG,CAACA,CAAE,EACd,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAG,GAAI,EAAG,CAAE,EACd,CAAE,EAAGD,EAAI,EAAG,EAAG,CAAE,EACjB,CAAE,EAAGA,EAAI,EAAG,EAAG,CAACC,CAAE,EAClB,CAAE,EAAG,GAAI,EAAG,CAACA,CAAE,EACf,CAAE,EAAG,GAAI,EAAG,CAAE,CAChB,EACA,GAAIvE,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpCoH,EAAYH,EAAG,UAAU3D,EAAI,EAAGC,EAAGe,EAAI,GAAIC,EAAGxC,CAAO,EACrD6X,EAAK3S,EAAG,KAAK3D,EAAGC,EAAGD,EAAGC,EAAIgB,EAAGxC,CAAO,EACpC8X,EAAK5S,EAAG,KAAK3D,EAAIgB,EAAGf,EAAGD,EAAIgB,EAAGf,EAAIgB,EAAGxC,CAAO,EAClDzB,EAAS,OAAO,IAAMsZ,EAAI,cAAc,EACxCtZ,EAAS,OAAO,IAAMuZ,EAAI,cAAc,EACxC,IAAM7S,EAAQ1G,EAAS,OAAO,IAAM8G,EAAW,cAAc,EACvD,CAAE,UAAAmF,CAAU,EAAIvM,EACtBgH,EAAM,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASxG,EAAoB+L,CAAS,CAAC,EACzFvK,EAAiBhC,EAAMgH,CAAK,CAC9B,KAAO,CACL,IAAM8S,EAAKxM,GAAmBhN,EAAUgE,EAAGC,EAAGlC,CAAM,EAChDsE,GACFmT,EAAG,KAAK,QAASnT,CAAU,EAE7B3E,EAAiBhC,EAAM8Z,CAAE,CAC3B,CACA,OAAA9Z,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAO6Z,GAAY,YAAY,EAI/B,eAAeI,GAAWha,EAAQC,EAAM,CACtC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEsD,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACTyV,EAAW,GAAMzV,EACjB0V,EAAY,GAAM1V,EAClB,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpCqP,EAAa,CACjB,CAAE,EAAG/L,EAAI0W,EAAW,EAAG,EAAAzW,CAAE,EACzB,CAAE,EAAGD,EAAIgB,EAAI0V,EAAW,EAAG,EAAAzW,CAAE,EAC7B,CAAE,EAAGD,EAAIgB,EAAI0V,EAAW,EAAG,EAAGzW,EAAIgB,CAAE,EACpC,CAAE,EAAGjB,EAAI0W,EAAW,EAAG,EAAGzW,EAAIgB,CAAE,CAClC,EACM2V,EAAY,CAChB,CAAE,EAAG5W,EAAIgB,EAAI0V,EAAW,EAAG,EAAGzW,EAAIgB,CAAE,EACpC,CAAE,EAAGjB,EAAIgB,EAAI0V,EAAW,EAAG,EAAGzW,EAAIgB,CAAE,EACpC,CAAE,EAAGjB,EAAIgB,EAAI0V,EAAW,EAAG,EAAGzW,EAAIgB,EAAI0V,CAAU,CAClD,EACIja,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMyN,EAAWpN,EAAqBiN,CAAU,EAC1C8K,EAAWlT,EAAG,KAAKuI,EAAUzN,CAAO,EACpCqY,EAAUhY,EAAqB8X,CAAS,EACxCG,EAAUpT,EAAG,KAAKmT,EAAS,CAAE,GAAGrY,EAAS,UAAW,OAAQ,CAAC,EAC7DuY,EAAcha,EAAS,OAAO,IAAM+Z,EAAS,cAAc,EACjE,OAAAC,EAAY,OAAO,IAAMH,EAAU,cAAc,EACjDG,EAAY,KAAK,QAAS,uBAAuB,EAC7C/N,GAAavM,EAAK,OAAS,aAC7Bsa,EAAY,UAAU,MAAM,EAAE,KAAK,QAAS/N,CAAS,EAEnD5F,GAAc3G,EAAK,OAAS,aAC9Bsa,EAAY,UAAU,MAAM,EAAE,KAAK,QAAS3T,CAAU,EAExD3E,EAAiBhC,EAAMsa,CAAW,EAClCta,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqP,EAAYlL,CAAK,CAE/D,EACO7D,CACT,CACAR,EAAOia,GAAY,YAAY,EAI/B,eAAeQ,GAAyBxa,EAAQC,EAAM,CACpD,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEwW,EAAgBjS,EAAI,EACpByV,EAAW,GAAM1V,EACjB2V,EAAY,GAAM1V,EAClBkS,EAASlS,EAAIiS,EACb,CAAE,UAAAjK,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAGmS,EAAS,CAAE,EACzC,GAAGhU,GACD,CAAC6B,EAAI,EAAIA,EAAI,EAAI,GACjBmS,EAAS,EACTnS,EAAI,EAAIA,EAAI,EAAI,GAChBmS,EAAS,EACTD,EACA,EACF,EACA,CAAE,EAAGlS,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAACmS,EAAS,CAAE,EACzC,CAAE,EAAG,CAACnS,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAACmS,EAAS,CAAE,CAC5C,EACMnT,EAAI,CAACgB,EAAI,EAAIA,EAAI,EAAI,GACrBf,EAAI,CAACkT,EAAS,EAAIwD,EAAY,GAC9BC,EAAY,CAChB,CAAE,EAAG5W,EAAIgB,EAAI0V,EAAU,GAAIzW,EAAIgB,GAAK,GAAI,EACxC,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,EAAI0V,CAAU,EACjC,CAAE,EAAG3W,EAAIgB,EAAG,GAAIf,EAAIgB,GAAK,EAAI,EAC7B,GAAG9B,GACDa,EAAIgB,GACHf,EAAIgB,GAAK,IACVjB,EAAIgB,EAAI0V,GACPzW,EAAIgB,GAAK,IACV,CAACA,EAAI,IACL,EACF,CACF,EACMiW,EAAmBpY,EAAqBC,CAAM,EAC9CoY,EAAmBxT,EAAG,KAAKuT,EAAkBzY,CAAO,EACpD2Y,EAAyBtY,EAAqB8X,CAAS,EACvDS,EAAyB1T,EAAG,KAAKyT,EAAwB,CAC7D,GAAG3Y,EACH,UAAW,OACb,CAAC,EACK2U,EAAepW,EAAS,OAAO,IAAMqa,EAAwB,cAAc,EACjF,OAAAjE,EAAa,OAAO,IAAM+D,EAAkB,cAAc,EAC1D/D,EAAa,KAAK,QAAS,uBAAuB,EAC9CnK,GAAavM,EAAK,OAAS,aAC7B0W,EAAa,UAAU,MAAM,EAAE,KAAK,QAASnK,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B0W,EAAa,UAAU,MAAM,EAAE,KAAK,QAAS/P,CAAU,EAEzD+P,EAAa,KAAK,YAAa,eAAe,CAACF,EAAgB,CAAC,GAAG,EACnE/V,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,GAAKtE,EAAK,SAAW,IAAMc,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAKwW,EAAgB,GAAK1V,EAAK,GAAKA,EAAK,KAAO,GAAG,GAC1J,EACAkB,EAAiBhC,EAAM0W,CAAY,EACnC1W,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOya,GAA0B,0BAA0B,EAG3D,eAAeK,GAAK7a,EAAQC,EAAM,CAChC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEkG,EAAa,KAAK,IAAIpF,EAAK,MAAQd,EAAK,QAASA,GAAM,OAAS,CAAC,EACjEmG,EAAc,KAAK,IAAIrF,EAAK,OAASd,EAAK,QAASA,GAAM,QAAU,CAAC,EACpEsD,EAAI,CAAC4C,EAAa,EAClB3C,EAAI,CAAC4C,EAAc,EACnBa,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EACpD,OAAA0G,EAAM,KAAK,QAAS,MAAM,EAAE,KAAK,QAASL,CAAU,EAAE,KAAK,KAAM,CAAC,EAAE,KAAK,KAAM,CAAC,EAAE,KAAK,IAAKrD,CAAC,EAAE,KAAK,IAAKC,CAAC,EAAE,KAAK,QAAS2C,CAAU,EAAE,KAAK,SAAUC,CAAW,EAChKnE,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAO8a,GAAM,MAAM,EAInB,IAAIC,GAAuC/a,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IACnE,IAAI/F,CAAC,IAAIC,CAAC;AAAA,OACZ6F,CAAE,IAAIC,CAAE,YAAe,CAACtC,CAAM;AAAA,OAC9BlF,CAAK;AAAA,OACLuH,CAAE,IAAIC,CAAE,YAAetC,CAAM;AAAA,OAC7BlF,CAAK,IAAI,CAACkF,CAAM;AAAA,OAChBqC,CAAE,IAAIC,CAAE,YAAetC,CAAM;AAAA,OAC7B,CAAClF,CAAK,KACV,qBAAqB,EACpBiZ,GAA4Chb,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IACxE,CACL,IAAI/F,CAAC,IAAIC,CAAC,GACV,IAAID,EAAIzB,CAAK,IAAI0B,CAAC,GAClB,IAAI6F,CAAE,IAAIC,CAAE,YAAe,CAACtC,CAAM,GAClC,IAAI,CAAClF,CAAK,KACV,IAAIuH,CAAE,IAAIC,CAAE,YAAetC,CAAM,GACjC,IAAIlF,CAAK,IACX,EAAE,KAAK,GAAG,EACT,0BAA0B,EACzBkZ,GAA4Cjb,EAAO,CAACwD,EAAGC,EAAG1B,EAAOkF,EAAQqC,EAAIC,IACxE,CAAC,IAAI/F,EAAIzB,EAAQ,CAAC,IAAI,CAACkF,EAAS,CAAC,GAAI,IAAIqC,CAAE,IAAIC,CAAE,YAAYtC,CAAM,EAAE,EAAE,KAAK,GAAG,EACrF,0BAA0B,EAC7B,eAAeiU,GAAejb,EAAQC,EAAM,CAC1C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,EAAO,YAAAM,CAAY,EAAI,MAAMlB,EACnDE,EACAC,EACAkC,EAAelC,CAAI,CACrB,EACM8T,EAAe9T,EAAK,OAAS,MAAQe,EAAc,EAAIA,EACvDwD,EAAIzD,EAAK,OAASgT,EAClBzK,EAAK9E,EAAI,EACT6E,EAAKC,GAAM,IAAM9E,EAAI,IACrBD,EAAIxD,EAAK,MAAQsI,EAAK0K,EACtB,CAAE,UAAAvH,CAAU,EAAIvM,EAClBkR,EACJ,GAAIlR,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB6Q,EAAgB2J,GAA0B,EAAG,EAAGxW,EAAGC,EAAG6E,EAAIC,CAAE,EAC5D+H,EAAgB2J,GAA0B,EAAG,EAAGzW,EAAGC,EAAG6E,EAAIC,CAAE,EAC5DgI,EAAYpK,EAAG,KAAKkK,EAAehK,EAAkBnH,EAAM,CAAC,CAAC,CAAC,EAC9DsR,EAAYrK,EAAG,KAAKmK,EAAejK,EAAkBnH,EAAM,CAAE,KAAM,MAAO,CAAC,CAAC,EAClFkR,EAAY5Q,EAAS,OAAO,IAAMgR,EAAW,cAAc,EAC3DJ,EAAY5Q,EAAS,OAAO,IAAM+Q,EAAW,cAAc,EAC3DH,EAAU,KAAK,QAAS,uBAAuB,EAC3C3E,GACF2E,EAAU,KAAK,QAAS3E,CAAS,CAErC,KAAO,CACL,IAAMqB,EAAWiN,GAAqB,EAAG,EAAGvW,EAAGC,EAAG6E,EAAIC,CAAE,EACxD6H,EAAY5Q,EAAS,OAAO,OAAQ,cAAc,EAAE,KAAK,IAAKsN,CAAQ,EAAE,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASpN,EAAoB+L,CAAS,CAAC,EAAE,KAAK,QAAS5F,CAAU,EACrLuK,EAAU,KAAK,QAAS,uBAAuB,EAC3C3E,GACF2E,EAAU,UAAU,MAAM,EAAE,KAAK,QAAS3E,CAAS,EAEjD5F,GACFuK,EAAU,UAAU,MAAM,EAAE,KAAK,QAASvK,CAAU,CAExD,CACA,OAAAuK,EAAU,KAAK,iBAAkB9H,CAAE,EACnC8H,EAAU,KAAK,YAAa,aAAa,CAAC5M,EAAI,CAAC,KAAKC,EAAI,CAAC,IAAI,EAC7D9D,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,GAAKsI,GAAMtI,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,IAAMA,EAAK,GAAKA,EAAK,KAAO,GAAG,GACvH,EACAkB,EAAiBhC,EAAMkR,CAAS,EAChClR,EAAK,UAAY,SAASmE,EAAO,CAC/B,IAAMoN,EAAMnF,EAAkB,KAAKpM,EAAMmE,CAAK,EACxCZ,EAAIgO,EAAI,GAAKvR,EAAK,GAAK,GAC7B,GAAIqJ,GAAM,IAAM,KAAK,IAAI9F,CAAC,GAAKvD,EAAK,QAAU,GAAK,GAAK,KAAK,IAAIuD,CAAC,IAAMvD,EAAK,QAAU,GAAK,GAAK,KAAK,IAAIuR,EAAI,GAAKvR,EAAK,GAAK,EAAE,GAAKA,EAAK,OAAS,GAAK,EAAIoJ,GAAK,CAC9J,IAAI,EAAIA,EAAKA,GAAM,EAAI7F,EAAIA,GAAK8F,EAAKA,IACjC,GAAK,IACP,EAAI,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,GAE3B,EAAID,EAAK,EACLjF,EAAM,GAAKnE,EAAK,GAAK,GAAK,IAC5B,EAAI,CAAC,GAEPuR,EAAI,GAAK,CACX,CACA,OAAOA,CACT,EACOjR,CACT,CACAR,EAAOkb,GAAgB,gBAAgB,EAIvC,eAAeC,GAAUlb,EAAQC,EAAM,CACrC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEsE,EAAIxD,EAAK,MAAQd,EAAK,QACtBuE,EAAIzD,EAAK,OAASd,EAAK,QACvBqC,EAAS,CACb,CAAE,EAAG,GAAKkC,EAAI,EAAG,EAAG,CAAE,EACtB,CAAE,EAAGD,EAAI,EAAIC,EAAI,EAAG,EAAG,CAAE,EACzB,CAAE,EAAGD,EAAG,EAAG,CAACC,CAAE,EACd,CAAE,EAAG,EAAG,EAAG,CAACA,CAAE,CAChB,EACIoJ,EACE,CAAE,UAAApB,CAAU,EAAIvM,EACtB,GAAIA,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4N,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EAC3C4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC9C,EAAI,CAAC,KAAKC,EAAI,CAAC,GAAG,EACzGgI,GACFoB,EAAQ,KAAK,QAASpB,CAAS,CAEnC,MACEoB,EAAUL,GAAmBhN,EAAUgE,EAAGC,EAAGlC,CAAM,EAErD,OAAIsE,GACFgH,EAAQ,KAAK,QAAShH,CAAU,EAElC3G,EAAK,MAAQsE,EACbtE,EAAK,OAASuE,EACdvC,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAOmb,GAAW,WAAW,EAI7B,eAAeC,GAAoBnb,EAAQC,EAAM,CAC/C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEyQ,EAAW,GAAIC,EAAY,GAC3BpM,EAAI,KAAK,IAAImM,EAAU3P,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EAC7EuE,EAAI,KAAK,IAAImM,EAAW5P,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EAChF,CAAE,UAAAuM,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAI,GAAK,EAAG,CAACC,EAAI,CAAE,EAC7B,CAAE,EAAGD,EAAI,EAAI,GAAK,EAAG,CAACC,EAAI,CAAE,EAC5B,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAI,EAC5B,CAAE,EAAGD,EAAI,EAAG,EAAGC,EAAI,CAAE,EACrB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,CAAE,EACtB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAI,CAC/B,EACMqJ,EAAWxL,EAAqBC,CAAM,EACtCwO,EAAY5J,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAMuQ,EAAW,cAAc,EAC/D,OAAAlD,EAAQ,KAAK,QAAS,uBAAuB,EACzCpB,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzD3E,EAAiBhC,EAAM2N,CAAO,EAC9B3N,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOob,GAAqB,qBAAqB,EAIjD,eAAeC,GAASpb,EAAQC,EAAM,CACpC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFG,EAAgBC,EAASC,EAAW,EAAE,WAAW,UAAU,EAC3DiE,EAAIxD,EAAK,OAASd,EAAK,SAAW,GAClCuE,EAAID,EAAIxD,EAAK,OACb8P,EAAKtM,EAAIxD,EAAK,OACduB,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAAE,EACb,CAAE,EAAGuO,EAAI,EAAG,CAAE,EACd,CAAE,EAAGA,EAAK,EAAG,EAAG,CAACrM,CAAE,CACrB,EACM,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAM6L,EAAWxL,EAAqBC,CAAM,EACtC+E,EAAYH,EAAG,KAAK2G,EAAU7L,CAAO,EACrC4L,EAAUrN,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAAE,KAAK,YAAa,aAAa,CAAC7C,EAAI,CAAC,KAAKA,EAAI,CAAC,GAAG,EACnH,OAAIgI,GAAavM,EAAK,OAAS,aAC7B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAASpB,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B2N,EAAQ,eAAe,MAAM,EAAE,KAAK,QAAShH,CAAU,EAEzD3G,EAAK,MAAQsE,EACbtE,EAAK,OAASuE,EACdvC,EAAiBhC,EAAM2N,CAAO,EAC9BlN,EAAM,KACJ,YACA,aAAa,CAACK,EAAK,MAAQ,GAAKA,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAKyD,EAAI,GAAKzD,EAAK,QAAUd,EAAK,SAAW,IAAMG,EAAgB,EAAI,IAAMW,EAAK,GAAKA,EAAK,KAAO,IAAI,GACnK,EACAd,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,qBAAsB3F,EAAMqC,EAAQ8B,CAAK,EAC3CiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CACtD,EACO7D,CACT,CACAR,EAAOqb,GAAU,UAAU,EAI3B,eAAeC,GAAmBrb,EAAQC,EAAM,CAC9C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEwW,EAAgBjS,EAAI,EACpBkS,EAASlS,EAAIiS,EACb,CAAE,UAAAjK,CAAU,EAAIvM,EAEhBqb,EADW,GACW/W,EACtBgX,EAASD,EAAW,EAAIA,EAAW,EAAI,EACvCpU,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAIgX,EAAQ,EAAG7E,EAAS,CAAE,EACpC,GAAGhU,GACD,CAAC6B,EAAI,EAAIgX,EACT7E,EAAS,EACTnS,EAAI,EAAIgX,EACR7E,EAAS,EACTD,EACA,EACF,EACA,CAAE,EAAGlS,EAAI,EAAIgX,EAAQ,EAAG,CAAC7E,EAAS,CAAE,EACpC,CAAE,EAAG,CAACnS,EAAI,EAAIgX,EAAQ,EAAG,CAAC7E,EAAS,CAAE,CACvC,EACM+D,EAAmBpY,EAAqBC,CAAM,EAC9CoY,EAAmBxT,EAAG,KAAKuT,EAAkBzY,CAAO,EACpD2U,EAAepW,EAAS,OAAO,IAAMma,EAAkB,cAAc,EAC3E,OAAA/D,EAAa,KAAK,QAAS,uBAAuB,EAC9CnK,GAAavM,EAAK,OAAS,aAC7B0W,EAAa,UAAU,MAAM,EAAE,KAAK,QAASnK,CAAS,EAEpD5F,GAAc3G,EAAK,OAAS,aAC9B0W,EAAa,UAAU,MAAM,EAAE,KAAK,QAAS/P,CAAU,EAEzD+P,EAAa,KAAK,YAAa,eAAe,CAACF,EAAgB,CAAC,GAAG,EACnE/V,EAAM,KACJ,YACA,aAAa,CAAC6D,EAAI,GAAKtE,EAAK,SAAW,IAAMc,EAAK,GAAKA,EAAK,MAAQ,GAAG,IAAI,CAACyD,EAAI,GAAKvE,EAAK,SAAW,GAAKwW,GAAiB1V,EAAK,GAAKA,EAAK,KAAO,GAAG,GACtJ,EACAkB,EAAiBhC,EAAM0W,CAAY,EACnC1W,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOsb,GAAoB,oBAAoB,EAI/C,eAAeG,GAAcxb,EAAQC,EAAM,CACzC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,CAAK,EAAI,MAAMjB,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EACzEyQ,EAAW,IACXC,EAAY,GACZ8K,EAAY,KAAK,IAAI1a,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EAC3Eyb,EAAa,KAAK,IAAI3a,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EAC9E0b,EAAcF,EAAYC,EAC5BnX,EAAIkX,EACJjX,EAAIkX,EACJnX,EAAIC,EAAImX,EACVnX,EAAID,EAAIoX,EAERpX,EAAIC,EAAImX,EAEVpX,EAAI,KAAK,IAAIA,EAAGmM,CAAQ,EACxBlM,EAAI,KAAK,IAAIA,EAAGmM,CAAS,EACzB,IAAM8F,EAAgB,KAAK,IAAIjS,EAAI,GAAKA,EAAI,CAAC,EACvCkS,EAASlS,EAAIiS,EAAgB,EAC7B,CAAE,UAAAjK,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMM,EAAS,CACb,CAAE,EAAG,CAACiC,EAAI,EAAG,EAAGmS,EAAS,CAAE,EAC3B,GAAGhU,GAA2B,CAAC6B,EAAI,EAAGmS,EAAS,EAAGnS,EAAI,EAAGmS,EAAS,EAAGD,EAAe,CAAC,EACrF,CAAE,EAAGlS,EAAI,EAAG,EAAG,CAACmS,EAAS,CAAE,EAC3B,GAAGhU,GAA2B6B,EAAI,EAAG,CAACmS,EAAS,EAAG,CAACnS,EAAI,EAAG,CAACmS,EAAS,EAAGD,EAAe,EAAE,CAC1F,EACMmF,EAAevZ,EAAqBC,CAAM,EAC1CuZ,EAAe3U,EAAG,KAAK0U,EAAc5Z,CAAO,EAC5C8Z,EAAWvb,EAAS,OAAO,IAAMsb,EAAc,cAAc,EACnE,OAAAC,EAAS,KAAK,QAAS,uBAAuB,EAC1CtP,GAAavM,EAAK,OAAS,aAC7B6b,EAAS,UAAU,MAAM,EAAE,KAAK,QAAStP,CAAS,EAEhD5F,GAAc3G,EAAK,OAAS,aAC9B6b,EAAS,UAAU,MAAM,EAAE,KAAK,QAASlV,CAAU,EAErD3E,EAAiBhC,EAAM6b,CAAQ,EAC/B7b,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAMqC,EAAQ8B,CAAK,CAE3D,EACO7D,CACT,CACAR,EAAOyb,GAAe,eAAe,EAIrC,eAAeO,GAAW/b,EAAQC,EAAM,CACtC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,MAAAL,CAAM,EAAI,MAAMZ,EAAYE,EAAQC,EAAMkC,EAAelC,CAAI,CAAC,EAChFsE,EAAI,KAAK,IAAIxD,EAAK,OAASd,EAAK,SAAW,GAAK,EAAGA,GAAM,OAAS,CAAC,EACnEuE,EAAI,KAAK,IAAIzD,EAAK,QAAUd,EAAK,SAAW,GAAK,EAAGA,GAAM,QAAU,CAAC,EACrEyR,EAAa,EACbnO,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACT,CAAE,UAAAgI,CAAU,EAAIvM,EAChBiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpC4W,EAAkB,CACtB,CAAE,EAAGtT,EAAImO,EAAY,EAAGlO,EAAIkO,CAAW,EACvC,CAAE,EAAGnO,EAAImO,EAAY,EAAGlO,EAAIgB,CAAE,EAC9B,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIgB,CAAE,EACrB,CAAE,EAAGjB,EAAIgB,EAAG,EAAGf,EAAIkO,CAAW,CAChC,EACMsK,EAAO,IAAIzY,EAAImO,CAAU,IAAIlO,EAAIkO,CAAU,KAAKnO,EAAIgB,CAAC,IAAIf,EAAIkO,CAAU,KAAKnO,EAAIgB,CAAC,IAAIf,EAAIgB,CAAC,KAAKjB,EAAImO,CAAU,IAAIlO,EAAIgB,CAAC,KAAKjB,EAAImO,CAAU,IAAIlO,EAAIkO,CAAU;AAAA,mBAChJnO,EAAImO,CAAU,IAAIlO,CAAC,KAAKD,EAAIgB,CAAC,IAAIf,CAAC;AAAA,mBAClCD,CAAC,IAAIC,EAAIkO,CAAU,KAAKnO,CAAC,IAAIC,EAAIgB,CAAC,GAC/CvE,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMia,EAAK/U,EAAG,KAAK8U,EAAMha,CAAO,EAC1Bka,EAAc3b,EAAS,OAAO,IAAM0b,EAAI,cAAc,EAC5D,OAAAC,EAAY,KAAK,YAAa,aAAaxK,EAAa,CAAC,KAAKA,EAAa,CAAC,GAAG,EAC/EwK,EAAY,KAAK,QAAS,uBAAuB,EAC7C1P,GAAavM,EAAK,OAAS,aAC7Bic,EAAY,UAAU,MAAM,EAAE,KAAK,QAAS1P,CAAS,EAEnD5F,GAAc3G,EAAK,OAAS,aAC9Bic,EAAY,UAAU,MAAM,EAAE,KAAK,QAAStV,CAAU,EAExDlG,EAAM,KACJ,YACA,aAAa,EAAEK,EAAK,MAAQ,GAAK2Q,EAAa,GAAK3Q,EAAK,GAAKA,EAAK,MAAQ,GAAG,KAAK,EAAEA,EAAK,OAAS,GAAK2Q,EAAa,GAAK3Q,EAAK,GAAKA,EAAK,KAAO,GAAG,GACpJ,EACAkB,EAAiBhC,EAAMic,CAAW,EAClCjc,EAAK,UAAY,SAASmE,EAAO,CAE/B,OADYiI,EAAkB,QAAQpM,EAAM4W,EAAiBzS,CAAK,CAEpE,EACO7D,CACT,CACAR,EAAOgc,GAAY,YAAY,EAK/B,eAAeI,GAAMnc,EAAQC,EAAM,CACjC,IAAMmc,EAAanc,EAInB,GAHImc,EAAW,QACbnc,EAAK,MAAQmc,EAAW,OAEtBnc,EAAK,OAAS,YAAa,CAC7B,GAAM,CAAE,eAAgBoc,CAAgB,EAAI9E,GAAU,EAChD,CAAE,WAAA+E,CAAW,EAAID,EACjBE,GAAiB,CACrB,GAAGtc,EACH,GAAIA,EAAK,GAAK,cACd,KAAM,UACN,UAAW,CAAC,eAAgB,SAASqc,CAAU,EAAE,CACnD,EACA,MAAMH,GAAMnc,EAAQuc,EAAc,CACpC,CACA,IAAMtX,EAASsS,GAAU,EACzBtX,EAAK,cAAgBgF,EAAO,WAC5B,IAAIuX,EAAUvX,EAAO,IAAI,gBAAkB,GACvCwX,EAAexX,EAAO,IAAI,eAAiB,EACzC,CAAE,UAAAuH,CAAU,EAAIvM,EAChB,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtD,GAAImc,EAAW,WAAW,SAAW,GAAKnc,EAAK,MAAO,CACpD,IAAMkO,EAAW,CACf,GAAI,EACJ,GAAI,EACJ,cAAeqO,EACf,cAAeA,EAAU,IACzB,QAAS,EACX,EACIE,GAAmBzc,EAAK,MAAOgF,CAAM,EAAIkJ,EAAS,cAAgB,EAAIlJ,EAAO,GAAG,iBAClFhF,EAAK,MAAQgF,EAAO,GAAG,gBAEzB,IAAM0X,EAAY,MAAM/G,GAAS5V,EAAQC,EAAMkO,CAAQ,EACvD,GAAI,CAAC9N,EAAS4E,EAAO,UAAU,EAAG,CAChC,IAAM2X,GAAcD,EAAU,OAAO,MAAM,EACrC5b,GAAO6b,GAAY,KAAK,GAAG,QAAQ,EACzCA,GAAY,KAAK,YAAa,aAAa,CAAC7b,GAAK,MAAQ,CAAC,MAAM,CAClE,CACA,OAAO4b,CACT,CACK1X,EAAO,aACVuX,GAAW,KACXC,GAAgB,MAElB,IAAItc,EAAagC,EAAelC,CAAI,EAC/BE,IACHA,EAAa,gBAEf,IAAMI,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASG,CAAU,EAAE,KAAK,KAAMF,EAAK,OAASA,EAAK,EAAE,EACxF4c,EAAW,MAAMC,GAAQvc,EAAUN,EAAK,OAAS,GAAIgF,EAAQ,EAAG,EAAG,CAAC,MAAM,EAAG0B,CAAW,EAC9FkW,EAAS,QAAUJ,EACnB,IAAIM,EAAU,EACRC,EAAW,CAAC,EACZlX,EAAO,CAAC,EACVmX,EAAe,EACfC,EAAe,EACfC,EAAe,EACfC,EAAkB,EAClBC,EAAc,GACdC,EAAiB,GACrB,QAAWC,KAAanB,EAAW,WAAY,CAC7C,IAAMoB,EAAW,MAAMV,GACrBvc,EACAgd,EAAU,KACVtY,EACA,EACA8X,EACA,CAAC,gBAAgB,EACjBpW,CACF,EACAsW,EAAe,KAAK,IAAIA,EAAcO,EAAS,MAAQhB,CAAO,EAC9D,IAAMiB,GAAY,MAAMX,GACtBvc,EACAgd,EAAU,KACVtY,EACA,EACA8X,EACA,CAAC,gBAAgB,EACjBpW,CACF,EACAuW,EAAe,KAAK,IAAIA,EAAcO,GAAU,MAAQjB,CAAO,EAC/D,IAAMkB,GAAW,MAAMZ,GACrBvc,EACAgd,EAAU,KAAK,KAAK,EACpBtY,EACA,EACA8X,EACA,CAAC,gBAAgB,EACjBpW,CACF,EACAwW,EAAe,KAAK,IAAIA,EAAcO,GAAS,MAAQlB,CAAO,EAC9D,IAAMmB,GAAc,MAAMb,GACxBvc,EACAgd,EAAU,QACVtY,EACA,EACA8X,EACA,CAAC,mBAAmB,EACpBpW,CACF,EACAyW,EAAkB,KAAK,IAAIA,EAAiBO,GAAY,MAAQnB,CAAO,EACvE,IAAMoB,GAAY,KAAK,IAAIJ,EAAS,OAAQC,GAAU,OAAQC,GAAS,OAAQC,GAAY,MAAM,EAAIlB,EACrG3W,EAAK,KAAK,CAAE,QAAAiX,EAAS,UAAAa,EAAU,CAAC,EAChCb,GAAWa,EACb,CACA,IAAIC,EAAqB,EACrBV,GAAgBX,IAClBa,EAAc,GACdF,EAAe,EACfU,KAEET,GAAmBZ,IACrBc,EAAiB,GACjBF,EAAkB,EAClBS,KAEF,IAAMC,EAAYvd,EAAS,KAAK,EAAE,QAAQ,EAC1C,GAAIsc,EAAS,MAAQL,EAAU,GAAKS,EAAeC,EAAeC,EAAeC,GAAmB,EAAG,CACrG,IAAMW,EAAalB,EAAS,MAAQL,EAAU,GAAKS,EAAeC,EAAeC,EAAeC,GAChGH,GAAgBc,EAAaF,EAC7BX,GAAgBa,EAAaF,EACzBV,EAAe,IACjBA,GAAgBY,EAAaF,GAE3BT,EAAkB,IACpBA,GAAmBW,EAAaF,EAEpC,CACA,IAAMG,EAAWf,EAAeC,EAAeC,EAAeC,EACxDlW,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAIic,EAAuB,EACvBnY,EAAK,OAAS,IAChBmY,EAAuBnY,EAAK,OAAO,CAACoY,EAAKnY,IAAQmY,GAAOnY,GAAK,WAAa,GAAI,CAAC,GAEjF,IAAMxB,EAAI,KAAK,IAAIuZ,EAAU,MAAQtB,EAAU,EAAGvc,GAAM,OAAS,EAAG+d,CAAQ,EACtExZ,EAAI,KAAK,KAAKyZ,GAAwB,GAAKpB,EAAS,OAAQ5c,GAAM,QAAU,CAAC,EAC7EsD,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACfjE,EAAS,UAAU,qBAAqB,EAAE,KAAK,CAAC4d,EAAG1b,EAAG2b,KAAU,CAC9D,IAAMzd,GAAQQ,EAAQid,GAAM3b,CAAC,CAAC,EACxB4b,GAAY1d,GAAM,KAAK,WAAW,EACpC2d,GAAa,EACbC,GAAa,EACjB,GAAIF,GAAW,CAEb,IAAMG,GADQ,OAAO,8BAA8B,EAC3B,KAAKH,EAAS,EAClCG,KACFF,GAAa,WAAWE,GAAU,CAAC,CAAC,EACpCD,GAAa,WAAWC,GAAU,CAAC,CAAC,EAChC7d,GAAM,KAAK,OAAO,EAAE,SAAS,gBAAgB,EAC/C2d,IAAcrB,EACLtc,GAAM,KAAK,OAAO,EAAE,SAAS,gBAAgB,EACtD2d,IAAcrB,EAAeC,EACpBvc,GAAM,KAAK,OAAO,EAAE,SAAS,mBAAmB,IACzD2d,IAAcrB,EAAeC,EAAeC,GAGlD,CACAxc,GAAM,KACJ,YACA,aAAa4C,EAAIiZ,EAAU,EAAI8B,EAAU,KAAKC,GAAa/a,EAAIqZ,EAAS,OAASJ,EAAe,CAAC,GACnG,CACF,CAAC,EACDlc,EAAS,OAAO,OAAO,EAAE,KAAK,YAAa,aAAe,CAACsc,EAAS,MAAQ,EAAI,MAAQrZ,EAAIiZ,EAAe,GAAK,GAAG,EACnH,IAAMgC,EAAYvX,EAAG,UAAU3D,EAAGC,EAAGe,EAAGC,EAAGxC,CAAO,EAC5CiF,EAAQ1G,EAAS,OAAO,IAAMke,EAAW,cAAc,EAAE,KAAK,QAASjS,EAAU,KAAK,EAAE,CAAC,EACzF,CAAE,eAAAjG,CAAe,EAAIgR,GAAU,EAC/B,CAAE,QAAAmH,EAAS,OAAAC,EAAQ,WAAA3W,EAAW,EAAIzB,EACxCyW,EAAS,KAAK,CAAC,EACf,OAAW,CAACva,EAAGsD,CAAG,IAAKD,EAAK,QAAQ,EAAG,CAErC,IAAM8Y,IADkBnc,EAAI,GACK,IAAM,GAAKsD,EAAI,UAAY,EACtD8Y,GAAa3X,EAAG,UAAU3D,EAAGsZ,EAAS,OAASrZ,EAAIuC,GAAK,QAASxB,EAAGwB,GAAK,UAAW,CACxF,GAAG/D,EACH,KAAM4c,GAASF,EAAUC,EACzB,OAAQ3W,EACV,CAAC,EACDzH,EAAS,OAAO,IAAMse,GAAY,SAAS,EAAE,KAAK,QAASrS,EAAU,KAAK,EAAE,CAAC,EAAE,KAAK,QAAS,YAAYoS,GAAS,OAAS,KAAK,EAAE,CACpI,CACA,IAAIlG,GAAYxR,EAAG,KAAK3D,EAAGsZ,EAAS,OAASrZ,EAAGe,EAAIhB,EAAGsZ,EAAS,OAASrZ,EAAGxB,CAAO,EACnFzB,EAAS,OAAO,IAAMmY,EAAS,EAAE,KAAK,QAAS,SAAS,EACxDA,GAAYxR,EAAG,KAAK+V,EAAe1Z,EAAGsZ,EAAS,OAASrZ,EAAGyZ,EAAe1Z,EAAGiB,EAAIhB,EAAGxB,CAAO,EAC3FzB,EAAS,OAAO,IAAMmY,EAAS,EAAE,KAAK,QAAS,SAAS,EACpD2E,IACF3E,GAAYxR,EAAG,KACb+V,EAAeC,EAAe3Z,EAC9BsZ,EAAS,OAASrZ,EAClByZ,EAAeC,EAAe3Z,EAC9BiB,EAAIhB,EACJxB,CACF,EACAzB,EAAS,OAAO,IAAMmY,EAAS,EAAE,KAAK,QAAS,SAAS,GAEtD4E,IACF5E,GAAYxR,EAAG,KACb+V,EAAeC,EAAeC,EAAe5Z,EAC7CsZ,EAAS,OAASrZ,EAClByZ,EAAeC,EAAeC,EAAe5Z,EAC7CiB,EAAIhB,EACJxB,CACF,EACAzB,EAAS,OAAO,IAAMmY,EAAS,EAAE,KAAK,QAAS,SAAS,GAE1D,QAAWoG,KAAY9B,EACrBtE,GAAYxR,EAAG,KACb3D,EACAsZ,EAAS,OAASrZ,EAAIsb,EACtBva,EAAIhB,EACJsZ,EAAS,OAASrZ,EAAIsb,EACtB9c,CACF,EACAzB,EAAS,OAAO,IAAMmY,EAAS,EAAE,KAAK,QAAS,SAAS,EAG1D,GADAzW,EAAiBhC,EAAMgH,CAAK,EACxBL,GAAc3G,EAAK,OAAS,YAAa,CAE3C,IAAM8e,EADWnY,EAAW,MAAM,GAAG,GACN,OAAQoY,IAC9BA,GAAE,SAAS,QAAQ,CAC3B,GAAG,IAAKjR,IAAM,GAAGA,EAAC,EAAE,EAAE,KAAK,IAAI,EAChCxN,EAAS,UAAU,MAAM,EAAE,KAAK,QAASwe,GAAgB,EAAE,EAC3Dxe,EAAS,UAAU,qBAAqB,EAAE,KAAK,QAASqG,CAAU,CACpE,CACA,OAAA3G,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOoc,GAAO,OAAO,EACrB,eAAeW,GAAQvc,EAAU0e,EAAWha,EAAQqZ,EAAa,EAAGC,EAAa,EAAGhS,EAAU,CAAC,EAAG/G,EAAQ,GAAI,CAC5G,IAAM9E,EAAQH,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,SAASgM,EAAQ,KAAK,GAAG,CAAC,EAAE,EAAE,KAAK,YAAa,aAAa+R,CAAU,KAAKC,CAAU,GAAG,EAAE,KAAK,QAAS/Y,CAAK,EAC3JyZ,IAAcC,GAAkBD,CAAS,IAC3CA,EAAYC,GAAkBD,CAAS,EACvCA,EAAYA,EAAU,WAAW,IAAK,MAAM,EAAE,WAAW,IAAK,MAAM,GAEtE,IAAMte,EAAQD,EAAM,KAAK,EAAE,YACzB,MAAME,GACJF,EACAue,EACA,CACE,MAAOvC,GAAmBuC,EAAWha,CAAM,EAAI,IAC/C,MAAAO,EACA,cAAeP,EAAO,UACxB,EACAA,CACF,CACF,EACA,GAAIga,EAAU,SAAS,MAAM,GAAKA,EAAU,SAAS,MAAM,EAAG,CAC5D,IAAIE,EAAQxe,EAAM,SAAS,CAAC,EAE5B,IADAwe,EAAM,YAAcA,EAAM,YAAY,WAAW,OAAQ,GAAG,EAAE,WAAW,OAAQ,GAAG,EAC7EA,EAAM,WAAW,CAAC,GACvBA,EAAQA,EAAM,WAAW,CAAC,EAC1BA,EAAM,YAAcA,EAAM,YAAY,WAAW,OAAQ,GAAG,EAAE,WAAW,OAAQ,GAAG,CAExF,CACA,IAAIpe,EAAOJ,EAAM,QAAQ,EACzB,GAAIN,EAAS4E,EAAO,UAAU,EAAG,CAC/B,IAAMhE,EAAMN,EAAM,SAAS,CAAC,EAC5BM,EAAI,MAAM,UAAY,QACtB,IAAMC,EAAKC,EAAQR,CAAK,EACxBI,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,CACA,OAAOA,CACT,CACAhB,EAAO+c,GAAS,SAAS,EAQzB,eAAesC,GAAWpf,EAAQC,EAAMgF,EAAQ7E,EAAeif,EAAMpa,EAAO,MAAM,SAAW,GAAI,CAC/F,IAAMwX,EAAgBrc,EAAoB,EAAJ,EAChCG,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASmC,EAAelC,CAAI,CAAC,EAAE,KAAK,KAAMA,EAAK,OAASA,EAAK,EAAE,EACpGqf,EAAkB,KAClBC,EAAa,KACbC,EAAe,KACfC,EAAe,KACfC,EAAwB,EACxBC,EAAmB,EACnBC,EAAqB,EAEzB,GADAN,EAAkB/e,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,uBAAuB,EACxEN,EAAK,YAAY,OAAS,EAAG,CAC/B,IAAM4f,EAAa5f,EAAK,YAAY,CAAC,EACrC,MAAM6f,GAASR,EAAiB,CAAE,KAAM,OAAOO,CAAU,MAAO,EAAG,CAAC,EAEpEH,EAD4BJ,EAAgB,KAAK,EAAE,QAAQ,EACf,MAC9C,CACAC,EAAahf,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,kBAAkB,EAClE,MAAMuf,GAASP,EAAYtf,EAAM,EAAG,CAAC,qBAAqB,CAAC,EAC3D,IAAM8f,EAAiBR,EAAW,KAAK,EAAE,QAAQ,EACjDI,EAAmBI,EAAe,OAClCP,EAAejf,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,oBAAoB,EACtE,IAAIwc,EAAU,EACd,QAAWiD,KAAU/f,EAAK,QAAS,CACjC,IAAM+G,EAAS,MAAM8Y,GAASN,EAAcQ,EAAQjD,EAAS,CAACiD,EAAO,gBAAgB,CAAC,CAAC,EACvFjD,GAAW/V,EAASyV,CACtB,CACAmD,EAAqBJ,EAAa,KAAK,EAAE,QAAQ,EAAE,OAC/CI,GAAsB,IACxBA,EAAqBP,EAAM,GAE7BI,EAAelf,EAAS,OAAO,GAAG,EAAE,KAAK,QAAS,oBAAoB,EACtE,IAAI0f,EAAiB,EACrB,QAAWC,KAAUjgB,EAAK,QAAS,CACjC,IAAM+G,EAAS,MAAM8Y,GAASL,EAAcS,EAAQD,EAAgB,CAACC,EAAO,gBAAgB,CAAC,CAAC,EAC9FD,GAAkBjZ,EAASyV,CAC7B,CACA,IAAI1b,EAAOR,EAAS,KAAK,EAAE,QAAQ,EACnC,GAAI+e,IAAoB,KAAM,CAC5B,IAAMa,EAAsBb,EAAgB,KAAK,EAAE,QAAQ,EAC3DA,EAAgB,KAAK,YAAa,aAAa,CAACa,EAAoB,MAAQ,CAAC,GAAG,CAClF,CACA,OAAAZ,EAAW,KAAK,YAAa,aAAa,CAACQ,EAAe,MAAQ,CAAC,KAAKL,CAAqB,GAAG,EAChG3e,EAAOR,EAAS,KAAK,EAAE,QAAQ,EAC/Bif,EAAa,KACX,YACA,gBAAmBE,EAAwBC,EAAmBN,EAAM,CAAC,GACvE,EACAte,EAAOR,EAAS,KAAK,EAAE,QAAQ,EAC/Bkf,EAAa,KACX,YACA,gBAAmBC,EAAwBC,GAAoBC,EAAqBA,EAAqBP,EAAM,EAAIA,EAAM,EAAE,GAC7H,EACAte,EAAOR,EAAS,KAAK,EAAE,QAAQ,EACxB,CAAE,SAAAA,EAAU,KAAAQ,CAAK,CAC1B,CACAhB,EAAOqf,GAAY,YAAY,EAC/B,eAAeU,GAASM,EAAangB,EAAM8c,EAASsD,EAAS,CAAC,EAAG,CAC/D,IAAMC,EAASF,EAAY,OAAO,GAAG,EAAE,KAAK,QAAS,OAAO,EAAE,KAAK,QAASC,EAAO,KAAK,IAAI,CAAC,EACvFpb,EAASsS,GAAU,EACrBnX,EAAgB,kBAAmBH,EAAOA,EAAK,cAAgBI,EAAS4E,EAAO,UAAU,GAAK,GAC9Fsb,EAAc,GACd,SAAUtgB,EACZsgB,EAActgB,EAAK,KAEnBsgB,EAActgB,EAAK,MAEjB,CAACG,GAAiBmgB,EAAY,WAAW,IAAI,IAC/CA,EAAcA,EAAY,UAAU,CAAC,GAEnCrb,GAASqb,CAAW,IACtBngB,EAAgB,IAElB,IAAMO,EAAQ,MAAMC,GAClB0f,EACAE,GAAc1f,GAAeyf,CAAW,CAAC,EACzC,CACE,MAAO7D,GAAmB6D,EAAatb,CAAM,EAAI,GAEjD,QAAS,sBACT,cAAA7E,CACF,EACA6E,CACF,EACIlE,EACA0f,EAAgB,EACpB,GAAKrgB,EAiBE,CACL,IAAMa,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAQR,CAAK,EACxB8f,EAAgBxf,EAAI,UAAU,MAAM,MAAM,EAAE,OACxCA,EAAI,UAAU,SAAS,SAAS,IAClCwf,GAAiBxf,EAAI,UAAU,MAAM,QAAQ,EAAE,OAAS,GAE1D,IAAMG,EAASH,EAAI,qBAAqB,KAAK,EAC7C,GAAIG,EAAQ,CACV,IAAMC,EAAYkf,EAAY,QAAQ,cAAe,EAAE,EAAE,KAAK,IAAM,GACpE,MAAM,QAAQ,IACZ,CAAC,GAAGnf,CAAM,EAAE,IACTE,GAAQ,IAAI,QAASC,GAAQ,CAC5B,SAASC,GAAa,CAGpB,GAFAF,EAAI,MAAM,QAAU,OACpBA,EAAI,MAAM,cAAgB,SACtBD,EAAW,CACb,IAAMI,EAAewD,EAAO,UAAU,SAAS,GAAK,OAAO,iBAAiB,SAAS,IAAI,EAAE,SAErFnD,EAAQ,SAASL,EAAc,EAAE,EADf,EACqC,KAC7DH,EAAI,MAAM,SAAWQ,EACrBR,EAAI,MAAM,SAAWQ,CACvB,MACER,EAAI,MAAM,MAAQ,OAEpBC,EAAID,CAAG,CACT,CACAvB,EAAOyB,EAAY,YAAY,EAC/B,WAAW,IAAM,CACXF,EAAI,UACNE,EAAW,CAEf,CAAC,EACDF,EAAI,iBAAiB,QAASE,CAAU,EACxCF,EAAI,iBAAiB,OAAQE,CAAU,CACzC,CAAC,CACH,CACF,CACF,CACAT,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,KA3DoB,CACdsf,EAAO,SAAS,qBAAqB,GACvClf,EAAQR,CAAK,EAAE,UAAU,OAAO,EAAE,KAAK,cAAe,EAAE,EAE1D8f,EAAgB9f,EAAM,SAAS,OAC/B,IAAM+f,EAAY/f,EAAM,SAAS,CAAC,GAC9BA,EAAM,cAAgB,IAAMA,EAAM,YAAY,SAAS,KAAK,KAC9D+f,EAAU,YAAcH,EAAY,CAAC,EAAIA,EAAY,UAAU,CAAC,EAAE,WAAW,OAAQ,GAAG,EAAE,WAAW,OAAQ,GAAG,EAAE,KAAK,EACjGA,EAAY,CAAC,IAAM,MAEvCG,EAAU,YAAcA,EAAU,YAAY,CAAC,EAAI,IAAMA,EAAU,YAAY,UAAU,CAAC,IAG1FA,EAAU,cAAgB,cAC5BA,EAAU,YAAc,IAE1B3f,EAAOJ,EAAM,QAAQ,CACvB,CA2CA,OAAA2f,EAAO,KAAK,YAAa,gBAAkB,CAACvf,EAAK,QAAU,EAAI0f,GAAiB1D,GAAW,GAAG,EACvFhc,EAAK,MACd,CACAhB,EAAO+f,GAAU,SAAS,EAG1B,eAAea,GAAS3gB,EAAQC,EAAM,CACpC,IAAMgF,EAAS3E,EAAW,EACpBkc,EAAUvX,EAAO,MAAM,SAAW,GAClCoa,EAAM7C,EACNpc,EAAgBH,EAAK,eAAiBI,EAAS4E,EAAO,UAAU,GAAK,GACrE2b,EAAY3gB,EAClB2gB,EAAU,YAAcA,EAAU,aAAe,CAAC,EAClDA,EAAU,QAAUA,EAAU,SAAW,CAAC,EAC1CA,EAAU,QAAUA,EAAU,SAAW,CAAC,EAC1C,GAAM,CAAE,SAAArgB,EAAU,KAAAQ,CAAK,EAAI,MAAMqe,GAAWpf,EAAQC,EAAMgF,EAAQ7E,EAAeif,CAAG,EAC9E,CAAE,YAAA1Y,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB1G,EAAK,UAAY2gB,EAAU,QAAU,GACrC,IAAMP,EAASO,EAAU,QAAQ,KAAK,GAAG,GAAKha,GAAc,GACvD3G,EAAK,YACRA,EAAK,UAAYogB,EAAO,WAAW,aAAc,EAAE,EAAE,MAAM,GAAG,GAEhE,IAAMQ,EAAiBD,EAAU,QAAQ,SAAW,GAAKA,EAAU,QAAQ,SAAW,GAAK,CAAC3b,EAAO,OAAO,oBACpGiC,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMuC,EAAIxD,EAAK,MACXyD,EAAIzD,EAAK,OACT6f,EAAU,QAAQ,SAAW,GAAKA,EAAU,QAAQ,SAAW,EACjEpc,GAAK6a,EACIuB,EAAU,QAAQ,OAAS,GAAKA,EAAU,QAAQ,SAAW,IACtEpc,GAAK6a,EAAM,GAEb,IAAM9b,EAAI,CAACgB,EAAI,EACTf,EAAI,CAACgB,EAAI,EACTia,EAAYvX,EAAG,UACnB3D,EAAIiZ,EACJhZ,EAAIgZ,GAAWqE,EAAiBrE,EAAUoE,EAAU,QAAQ,SAAW,GAAKA,EAAU,QAAQ,SAAW,EAAI,CAACpE,EAAU,EAAI,GAC5HjY,EAAI,EAAIiY,EACRhY,EAAI,EAAIgY,GAAWqE,EAAiBrE,EAAU,EAAIoE,EAAU,QAAQ,SAAW,GAAKA,EAAU,QAAQ,SAAW,EAAI,CAACpE,EAAU,GAChIxa,CACF,EACMiF,EAAQ1G,EAAS,OAAO,IAAMke,EAAW,cAAc,EAC7DxX,EAAM,KAAK,QAAS,uBAAuB,EAC3C,IAAM6Z,EAAW7Z,EAAM,KAAK,EAAE,QAAQ,EACtC1G,EAAS,UAAU,OAAO,EAAE,KAAK,CAAC4d,EAAG1b,EAAG2b,IAAU,CAChD,IAAMzd,EAAQQ,EAAQid,EAAM3b,CAAC,CAAC,EACxB4b,EAAY1d,EAAM,KAAK,WAAW,EACpC4d,EAAa,EACjB,GAAIF,EAAW,CAEb,IAAMG,EADQ,OAAO,8BAA8B,EAC3B,KAAKH,CAAS,EAClCG,IACFD,EAAa,WAAWC,EAAU,CAAC,CAAC,EAExC,CACA,IAAIuC,EAAgBxC,EAAa/a,EAAIgZ,GAAWqE,EAAiBrE,EAAUoE,EAAU,QAAQ,SAAW,GAAKA,EAAU,QAAQ,SAAW,EAAI,CAACpE,EAAU,EAAI,GACxJpc,IACH2gB,GAAiB,GAEnB,IAAIC,EAAgBzd,GAChB5C,EAAM,KAAK,OAAO,EAAE,SAAS,aAAa,GAAKA,EAAM,KAAK,OAAO,EAAE,SAAS,kBAAkB,KAChGqgB,EAAgB,CAACrgB,EAAM,KAAK,GAAG,QAAQ,EAAE,MAAQ,GAAK,EACtDJ,EAAS,UAAU,MAAM,EAAE,KAAK,SAAS0gB,EAAIC,EAAIC,EAAQ,CACnD,OAAO,iBAAiBA,EAAOD,CAAE,CAAC,EAAE,aAAe,WACrDF,EAAgB,EAEpB,CAAC,GAEHrgB,EAAM,KAAK,YAAa,aAAaqgB,CAAa,KAAKD,CAAa,GAAG,CACzE,CAAC,EACD,IAAMrB,EAAwBnf,EAAS,OAAO,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAUsgB,EAAiBrE,EAAU,EAAI,IAAM,EAC7HmD,EAAmBpf,EAAS,OAAO,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAUsgB,EAAiBrE,EAAU,EAAI,IAAM,EACnHoD,EAAqBrf,EAAS,OAAO,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAUsgB,EAAiBrE,EAAU,EAAI,IAAM,EAC7H,GAAIoE,EAAU,QAAQ,OAAS,GAAKA,EAAU,QAAQ,OAAS,GAAKC,EAAgB,CAClF,IAAMnI,EAAYxR,EAAG,KACnB4Z,EAAS,EACTpB,EAAwBC,EAAmBnc,EAAIgZ,EAC/CsE,EAAS,EAAIA,EAAS,MACtBpB,EAAwBC,EAAmBnc,EAAIgZ,EAC/Cxa,CACF,EACazB,EAAS,OAAO,IAAMmY,CAAS,EACvC,KAAK,QAAS,SAAS,EAAE,KAAK,QAAS2H,CAAM,CACpD,CACA,GAAIQ,GAAkBD,EAAU,QAAQ,OAAS,GAAKA,EAAU,QAAQ,OAAS,EAAG,CAClF,IAAMlI,EAAYxR,EAAG,KACnB4Z,EAAS,EACTpB,EAAwBC,EAAmBC,EAAqBpc,EAAI6b,EAAM,EAAI7C,EAC9EsE,EAAS,EAAIA,EAAS,MACtBpB,EAAwBC,EAAmBC,EAAqBpc,EAAIgZ,EAAU6C,EAAM,EACpFrd,CACF,EACazB,EAAS,OAAO,IAAMmY,CAAS,EACvC,KAAK,QAAS,SAAS,EAAE,KAAK,QAAS2H,CAAM,CACpD,CAWA,GAVIO,EAAU,OAAS,aACrBrgB,EAAS,UAAU,MAAM,EAAE,KAAK,QAAS8f,CAAM,EAEjDpZ,EAAM,OAAO,eAAe,EAAE,KAAK,QAASoZ,CAAM,EAClD9f,EAAS,UAAU,UAAU,EAAE,OAAO,MAAM,EAAE,KAAK,QAAS8f,CAAM,EAC9DpgB,EAAK,WACPM,EAAS,UAAU,MAAM,EAAE,KAAK,QAASN,EAAK,UAAU,EAExDM,EAAS,UAAU,MAAM,EAAE,KAAK,QAAS8f,CAAM,EAE7C,CAACjgB,EAAe,CAClB,IAAMghB,EAAa,OAAO,qBAAqB,EACzCC,EAAQD,EAAW,KAAKf,CAAM,EACpC,GAAIgB,EAAO,CACT,IAAMC,EAAaD,EAAM,CAAC,EAAE,QAAQ,QAAS,MAAM,EACnD9gB,EAAS,UAAU,OAAO,EAAE,KAAK,QAAS+gB,CAAU,CACtD,SAAW3a,EAAa,CACtB,IAAM4a,EAASH,EAAW,KAAKza,CAAW,EAC1C,GAAI4a,EAAQ,CACV,IAAMD,EAAaC,EAAO,CAAC,EAAE,QAAQ,QAAS,MAAM,EACpDhhB,EAAS,UAAU,OAAO,EAAE,KAAK,QAAS+gB,CAAU,CACtD,CACF,CACF,CACA,OAAArf,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAO4gB,GAAU,UAAU,EAK3B,eAAea,GAAexhB,EAAQC,EAAM,CAC1C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,IAAM8a,EAAkBxhB,EAClByhB,EAAczhB,EACd0H,EAAU,GACVsO,EAAM,GACN0L,EAAoB,iBAAkB1hB,EACtCsM,EAAUpK,EAAelC,CAAI,EAC7BM,EAAWP,EAAO,OAAO,GAAG,EAAE,KAAK,QAASuM,CAAO,EAAE,KAAK,KAAMtM,EAAK,OAASA,EAAK,EAAE,EACvF2hB,EACAD,EACFC,EAAa,MAAMC,GACjBthB,EACA,WAAWkhB,EAAgB,IAAI,WAC/B,EACAxhB,EAAK,UACP,EAEA2hB,EAAa,MAAMC,GAASthB,EAAU,0BAA2B,EAAGN,EAAK,UAAU,EAErF,IAAI6hB,EAAqBF,EACnBG,EAAa,MAAMF,GACvBthB,EACAkhB,EAAgB,KAChBK,EACA7hB,EAAK,WAAa,sBACpB,EAEA,GADA6hB,GAAsBC,EAAa9L,EAC/B0L,EAAmB,CACrB,IAAMK,EAAW,MAAMH,GACrBthB,EACA,GAAGkhB,EAAgB,cAAgB,OAAOA,EAAgB,aAAa,GAAK,EAAE,GAC9EK,EACA7hB,EAAK,UACP,EACA6hB,GAAsBE,EACtB,IAAMC,EAAa,MAAMJ,GACvBthB,EACA,GAAGkhB,EAAgB,KAAO,SAASA,EAAgB,IAAI,GAAK,EAAE,GAC9DK,EACA7hB,EAAK,UACP,EACA6hB,GAAsBG,EACtB,IAAMC,EAAa,MAAML,GACvBthB,EACA,GAAGkhB,EAAgB,KAAO,SAASA,EAAgB,IAAI,GAAK,EAAE,GAC9DK,EACA7hB,EAAK,UACP,EACA6hB,GAAsBI,EACtB,MAAML,GACJthB,EACA,GAAGkhB,EAAgB,aAAe,iBAAiBA,EAAgB,YAAY,GAAK,EAAE,GACtFK,EACA7hB,EAAK,UACP,CACF,KAAO,CACL,IAAMkiB,EAAc,MAAMN,GACxBthB,EACA,GAAGmhB,EAAY,KAAO,SAASA,EAAY,IAAI,GAAK,EAAE,GACtDI,EACA7hB,EAAK,UACP,EACA6hB,GAAsBK,EACtB,MAAMN,GACJthB,EACA,GAAGmhB,EAAY,OAAS,YAAYA,EAAY,MAAM,GAAK,EAAE,GAC7DI,EACA7hB,EAAK,UACP,CACF,CACA,IAAMkG,GAAc5F,EAAS,KAAK,GAAG,QAAQ,EAAE,OAAS,KAAOoH,EACzDvB,GAAe7F,EAAS,KAAK,GAAG,QAAQ,EAAE,QAAU,KAAOoH,EAC3DpE,EAAI,CAAC4C,EAAa,EAClB3C,EAAI,CAAC4C,EAAc,EACnBc,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACtCA,EAAK,OAAS,cAChB+B,EAAQ,UAAY,EACpBA,EAAQ,UAAY,SAEtB,IAAMyc,EAAYvX,EAAG,UAAU3D,EAAGC,EAAG2C,EAAYC,EAAapE,CAAO,EAC/DiF,EAAQ1G,EAAS,OAAO,IAAMke,EAAW,cAAc,EAsB7D,GArBAxX,EAAM,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASL,CAAU,EACrErG,EAAS,UAAU,QAAQ,EAAE,KAAK,CAAC4d,EAAG1b,EAAG2b,IAAU,CACjD,IAAMzd,EAAQQ,EAAQid,EAAM3b,CAAC,CAAC,EACxB4b,EAAY1d,EAAM,KAAK,WAAW,EACpC2d,EAAa,EACbC,EAAa,EACjB,GAAIF,EAAW,CAEb,IAAMG,EADQ,OAAO,8BAA8B,EAC3B,KAAKH,CAAS,EAClCG,IACFF,EAAa,WAAWE,EAAU,CAAC,CAAC,EACpCD,EAAa,WAAWC,EAAU,CAAC,CAAC,EAExC,CACA,IAAMuC,EAAgBxC,EAAanY,EAAc,EAC7C4a,EAAgBzd,EAAIoE,EAAU,GAC9BlF,IAAM,GAAKA,IAAM,KACnBue,EAAgB1C,GAElB3d,EAAM,KAAK,YAAa,aAAaqgB,CAAa,KAAKD,EAAgBpZ,CAAO,GAAG,CACnF,CAAC,EACGma,EAAqBF,EAAaG,EAAa9L,EAAK,CACtD,IAAMyC,EAAYxR,EAAG,KACnB3D,EACAC,EAAIoe,EAAaG,EAAa9L,EAC9B1S,EAAI4C,EACJ3C,EAAIoe,EAAaG,EAAa9L,EAC9BjU,CACF,EACoBzB,EAAS,OAAO,IAAMmY,CAAS,EACvC,KAAK,QAAS9R,CAAU,CACtC,CACA,OAAA3E,EAAiBhC,EAAMgH,CAAK,EAC5BhH,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOyhB,GAAgB,gBAAgB,EACvC,eAAeK,GAASzB,EAAagC,EAAWrF,EAASvX,EAAQ,GAAI,CACnE,GAAI4c,IAAc,GAChB,MAAO,GAET,IAAM9B,EAASF,EAAY,OAAO,GAAG,EAAE,KAAK,QAAS,OAAO,EAAE,KAAK,QAAS5a,CAAK,EAC3EP,EAAS3E,EAAW,EACpBF,EAAgB6E,EAAO,YAAc,GACrCtE,EAAQ,MAAMC,GAClB0f,EACAE,GAAc1f,GAAeshB,CAAS,CAAC,EACvC,CACE,MAAO1F,GAAmB0F,EAAWnd,CAAM,EAAI,GAE/C,QAAS,sBACT,cAAA7E,EACA,MAAAoF,CACF,EACAP,CACF,EACIlE,EACJ,GAAKX,EAUE,CACL,IAAMa,EAAMN,EAAM,SAAS,CAAC,EACtBO,EAAKC,EAAQR,CAAK,EACxBI,EAAOE,EAAI,sBAAsB,EACjCC,EAAG,KAAK,QAASH,EAAK,KAAK,EAC3BG,EAAG,KAAK,SAAUH,EAAK,MAAM,CAC/B,KAhBoB,CAClB,IAAM2f,EAAY/f,EAAM,SAAS,CAAC,EAClC,QAAWwe,KAASuB,EAAU,SAC5BvB,EAAM,YAAcA,EAAM,YAAY,WAAW,OAAQ,GAAG,EAAE,WAAW,OAAQ,GAAG,EAChF3Z,GACF2Z,EAAM,aAAa,QAAS3Z,CAAK,EAGrCzE,EAAOJ,EAAM,QAAQ,EACrBI,EAAK,QAAU,CACjB,CAOA,OAAAuf,EAAO,KAAK,YAAa,aAAa,CAACvf,EAAK,MAAQ,CAAC,IAAI,CAACA,EAAK,OAAS,EAAIgc,CAAO,GAAG,EAC/Ehc,EAAK,MACd,CACAhB,EAAO8hB,GAAU,SAAS,EAI1B,IAAIQ,GAAoCtiB,EAAQuiB,GAAa,CAC3D,OAAQA,EAAU,CAChB,IAAK,YACH,MAAO,MACT,IAAK,OACH,MAAO,SACT,IAAK,SACH,OAAO,KAET,IAAK,MACH,MAAO,OACT,IAAK,WACH,MAAO,WACX,CACF,EAAG,mBAAmB,EACtB,eAAeC,GAAWviB,EAAQwiB,EAAY,CAAE,OAAAvd,CAAO,EAAG,CACxD,GAAM,CAAE,YAAA0B,EAAa,WAAAC,CAAW,EAAIG,EAAcyb,CAAU,EAC5DA,EAAW,WAAa7b,GAAe,GACvC,IAAMkS,EAAgB,GAChB4J,EAAWD,EAAW,MAC5BA,EAAW,OAASA,EAAW,OAAS,KAAO,GAC/C,GAAM,CACJ,SAAAjiB,EACA,KAAAQ,EACA,MAAO2hB,CACT,EAAI,MAAM5iB,EAAYE,EAAQwiB,EAAYrgB,EAAeqgB,CAAU,CAAC,EAC9D7a,EAAU6a,EAAW,SAAW,GAClCG,EAAY,GACZC,EACA,WAAYJ,GAAcA,EAAW,QAAUvd,GAAQ,QAAQ,gBACjE0d,EAAY1d,GAAQ,QAAQ,cAAc,QAAQ,WAAYud,EAAW,MAAM,EAC/EI,EAAOriB,EAAS,OAAO,QAAS,cAAc,EAAE,KAAK,QAAS,oBAAoB,EAAE,KAAK,aAAcoiB,CAAS,EAAE,KAAK,SAAU,QAAQ,GAE3I,IAAM3gB,EAAU,CACd,cAAewgB,EAAW,cAC1B,WAAYA,EAAW,YAAc,GACrC,MAAOA,EAAW,MAClB,IAAKA,EAAW,IAChB,QAASA,EAAW,SAAW,EAC/B,YAAa,EACf,EACIhiB,EAASqiB,EACTD,EACD,CAAE,MAAOpiB,EAAS,KAAMqiB,CAAM,EAAI,MAAM9gB,GACvC6gB,EACA,WAAYJ,GAAcA,EAAW,QAAU,GAC/CxgB,CACF,EAEC,CAAE,MAAOxB,EAAS,KAAMqiB,CAAM,EAAI,MAAM9gB,GACvCxB,EACA,WAAYiiB,GAAcA,EAAW,QAAU,GAC/CxgB,CACF,EAEF,GAAM,CAAE,MAAO8gB,EAAiB,KAAMC,CAAa,EAAI,MAAMhhB,GAC3DxB,EACA,aAAciiB,GAAcA,EAAW,UAAY,GACnDxgB,CACF,EACAwgB,EAAW,MAAQC,EACnB,IAAM3J,EAAgB,GAChB3S,EAAaqc,GAAY,OAAS,EAClCQ,EAAY,KAAK,IAAIH,EAAM,OAAQE,EAAa,MAAM,EAAI,EAC1D3c,EAAc,KAAK,IAAIrF,EAAK,OAAS+X,EAAgB,EAAG0J,GAAY,QAAU,CAAC,EAAIQ,EACnFzf,EAAI,CAAC4C,EAAa,EAClB3C,EAAI,CAAC4C,EAAc,EACzBsc,EAAa,KACX,YACA,cAAgB/a,EAAUxB,EAAa,GAAK,MAAQ,CAAC6c,EAAYjiB,EAAK,OAAS,GAAK,GACtF,EACAP,EAAQ,KACN,YACA,cAAgBmH,EAAUxB,EAAa,GAAK,MAAQ,CAAC6c,EAAYjiB,EAAK,OAAS,GAAK,GACtF,EACA+hB,EAAgB,KACd,YACA,cAAgBnb,EAAUxB,EAAa,EAAI4c,EAAa,MAAQ,EAAIlK,GAAiB,MAAQ,CAACmK,EAAYjiB,EAAK,OAAS,GAAK,GAC/H,EACA,IAAIkG,EACE,CAAE,GAAAoC,EAAI,GAAAC,CAAG,EAAIkZ,EACb,CAAE,UAAAhW,CAAU,EAAIgW,EACtB,GAAIA,EAAW,OAAS,YAAa,CACnC,IAAMtb,EAAKC,EAAQ,IAAI5G,CAAQ,EACzB4N,EAAW/G,EAAkBob,EAAY,CAAC,CAAC,EAC3Cnb,EAAYgC,GAAMC,EAAKpC,EAAG,KAAKhB,GAAuB3C,EAAGC,EAAG2C,EAAYC,EAAaiD,GAAM,CAAC,EAAG8E,CAAQ,EAAIjH,EAAG,UAAU3D,EAAGC,EAAG2C,EAAYC,EAAa+H,CAAQ,EACrKlH,EAAQ1G,EAAS,OAAO,IAAM8G,EAAW,cAAc,EACvDJ,EAAM,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASuF,GAAwB,IAAI,CACzF,KAAO,CACLvF,EAAQ1G,EAAS,OAAO,OAAQ,cAAc,EAC9C0G,EAAM,KAAK,QAAS,+BAA+B,EAAE,KAAK,QAASL,CAAU,EAAE,KAAK,KAAMyC,GAAM,CAAC,EAAE,KAAK,KAAMC,GAAM,CAAC,EAAE,KAAK,IAAK/F,CAAC,EAAE,KAAK,IAAKC,CAAC,EAAE,KAAK,QAAS2C,CAAU,EAAE,KAAK,SAAUC,CAAW,EACrM,IAAMkc,EAAW,aAAcE,GAAcA,EAAW,SACxD,GAAIF,EAAU,CACZ,IAAMW,EAAO1iB,EAAS,OAAO,MAAM,EAC7B2iB,EAAQ3f,EAAI,EACZX,EAAKY,EAAI,KAAK,OAAO6F,GAAM,GAAK,CAAC,EACjCvG,EAAKU,EAAI4C,EAAc,KAAK,OAAOiD,GAAM,GAAK,CAAC,EACrD4Z,EAAK,KAAK,KAAMC,CAAK,EAAE,KAAK,KAAMtgB,CAAE,EAAE,KAAK,KAAMsgB,CAAK,EAAE,KAAK,KAAMpgB,CAAE,EAAE,KAAK,eAAgB,GAAG,EAAE,KAAK,SAAUuf,GAAkBC,CAAQ,CAAC,CAC7I,CACF,CACA,OAAArgB,EAAiBugB,EAAYvb,CAAK,EAClCub,EAAW,OAASpc,EACpBoc,EAAW,UAAY,SAASpe,EAAO,CACrC,OAAOiI,EAAkB,KAAKmW,EAAYpe,CAAK,CACjD,EACO7D,CACT,CACAR,EAAOwiB,GAAY,YAAY,EAI/B,eAAeY,GAAKnjB,EAAQC,EAAM,CAChC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,YAAAC,EAAa,MAAAN,CAAM,EAAI,MAAMZ,EACnDE,EACAC,EACAkC,EAAelC,CAAI,CACrB,EACMsE,EAAIxD,EAAK,MAAQ,GAAKC,EACtBwD,EAAIzD,EAAK,OAAS,EAAIC,EACtBuN,EAAI,IAAOhK,EACX,CAAE,UAAAiI,CAAU,EAAIvM,EAChByQ,EAAW3P,EAAK,MAAQ,GACxB4P,EAAY5P,EAAK,OAAS,GAC1BqiB,EAAiB,KAAK,IAAI7e,EAAGmM,CAAQ,EACrC2S,EAAkB,KAAK,IAAI7e,EAAGmM,CAAS,EAC7CjQ,EAAM,KAAK,YAAa,aAAa,CAACK,EAAK,MAAQ,CAAC,KAAK,CAACA,EAAK,OAAS,CAAC,GAAG,EAC5E,IAAIuiB,EACEtH,EAAO;AAAA,OACRzN,CAAC,IAAIA,CAAC,UAAU6U,EAAiB,GAAI,IAAI,GAAKC,EAAkB,EAAG;AAAA,OACnE9U,CAAC,IAAIA,CAAC,UAAU6U,EAAiB,GAAI;AAAA,OACrC7U,CAAC,IAAIA,CAAC,UAAU6U,EAAiB,GAAI;AAAA,OACrC7U,CAAC,IAAIA,CAAC,UAAU6U,EAAiB,GAAI,IAAIC,EAAkB,EAAG;AAAA;AAAA,OAE9D9U,CAAC,IAAIA,CAAC,UAAU6U,EAAiB,GAAI,IAAIC,EAAkB,GAAI;AAAA,OAC/D9U,EAAI,EAAG,IAAIA,EAAI,EAAG,YAAY8U,EAAkB,GAAI;AAAA,OACpD9U,CAAC,IAAIA,CAAC,UAAU,GAAK6U,EAAiB,GAAI,IAAIC,EAAkB,GAAI;AAAA;AAAA,OAEpE9U,CAAC,IAAIA,CAAC,UAAU,GAAK6U,EAAiB,GAAI,IAAIC,EAAkB,GAAI;AAAA,OACpE9U,CAAC,IAAIA,CAAC,UAAU,GAAK6U,EAAiB,GAAI;AAAA,OAC1C7U,CAAC,IAAIA,CAAC,UAAU,GAAK6U,EAAiB,GAAI;AAAA,OAC1C7U,CAAC,IAAIA,CAAC,UAAU,GAAK6U,EAAiB,GAAI,IAAI,GAAKC,EAAkB,GAAI;AAAA;AAAA,OAEzE9U,CAAC,IAAIA,CAAC,UAAU,GAAK6U,EAAiB,EAAG,IAAI,GAAKC,EAAkB,GAAI;AAAA,OACxE9U,EAAI,EAAG,IAAIA,EAAI,EAAG,YAAY,GAAK8U,EAAkB,GAAI;AAAA,OACzD9U,CAAC,IAAIA,CAAC,UAAU6U,EAAiB,EAAG,IAAI,GAAKC,EAAkB,GAAI;AAAA,WAExE,GAAIpjB,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpCoH,EAAYH,EAAG,KAAK8U,EAAMha,CAAO,EACvCshB,EAAW/iB,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAC1Dic,EAAS,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAAS7iB,EAAoB+L,CAAS,CAAC,CAC9F,MACE8W,EAAW/iB,EAAS,OAAO,OAAQ,cAAc,EAAE,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASqG,CAAU,EAAE,KAAK,IAAKoV,CAAI,EAEpI,OAAAsH,EAAS,KAAK,YAAa,aAAa,CAACF,EAAiB,CAAC,KAAK,CAACC,EAAkB,CAAC,GAAG,EACvFphB,EAAiBhC,EAAMqjB,CAAQ,EAC/BrjB,EAAK,cAAgB,SAASmO,EAAQhK,EAAO,CAC3C,OAAOiI,EAAkB,KAAK+B,EAAQhK,CAAK,CAC7C,EACAnE,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,iBAAkB3F,EAAMmE,CAAK,EAC/BiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOojB,GAAM,MAAM,EAInB,eAAeI,GAAMvjB,EAAQC,EAAM,CACjC,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,YAAAC,EAAa,MAAAN,CAAM,EAAI,MAAMZ,EACnDE,EACAC,EACAkC,EAAelC,CAAI,CACrB,EACMsE,EAAIxD,EAAK,MAAQ,EAAIC,EACrBwD,EAAIzD,EAAK,OAAS,EAAIC,EACtB8J,EAAK,IAAOvG,EACZwG,EAAK,IAAOxG,EACZgG,EAAK,IAAOhG,EACZiG,EAAK,GAAMjG,EACX,CAAE,UAAAiI,CAAU,EAAIvM,EAClBujB,EACExH,EAAO;AAAA,OACRlR,CAAE,IAAIA,CAAE,UAAUvG,EAAI,GAAI,IAAI,GAAKA,EAAI,EAAG;AAAA,OAC1CgG,CAAE,IAAIA,CAAE,UAAUhG,EAAI,EAAG,IAAI,GAAKA,EAAI,EAAG;AAAA,OACzCwG,CAAE,IAAIA,CAAE,UAAUxG,EAAI,GAAI,IAAIA,EAAI,EAAG;AAAA;AAAA,OAErCuG,CAAE,IAAIA,CAAE,UAAUvG,EAAI,GAAI,IAAIC,EAAI,GAAI;AAAA,OACtCgG,CAAE,IAAIA,CAAE,UAAU,GAAKjG,EAAI,GAAI,IAAIC,EAAI,GAAI;AAAA;AAAA,OAE3CuG,CAAE,IAAID,CAAE,UAAU,GAAKvG,EAAI,GAAI,IAAIA,EAAI,GAAI;AAAA,OAC3CgG,CAAE,IAAIA,CAAE,UAAU,GAAKhG,EAAI,EAAG;AAAA,OAC9BuG,CAAE,IAAIA,CAAE,UAAU,GAAKvG,EAAI,GAAI,IAAI,GAAKA,EAAI,GAAI;AAAA;AAAA,OAEhDuG,CAAE,IAAIA,CAAE,UAAU,GAAKvG,EAAI,EAAG,IAAI,GAAKC,EAAI,GAAI;AAAA,OAC/CgG,CAAE,IAAIA,CAAE,UAAUjG,EAAI,EAAG,IAAI,GAAKC,EAAI,GAAI;AAAA,WAE/C,GAAIvE,EAAK,OAAS,YAAa,CAC7B,IAAMiH,EAAKC,EAAQ,IAAI5G,CAAQ,EACzByB,EAAUoF,EAAkBnH,EAAM,CAAC,CAAC,EACpCoH,EAAYH,EAAG,KAAK8U,EAAMha,CAAO,EACvCwhB,EAAYjjB,EAAS,OAAO,IAAM8G,EAAW,cAAc,EAC3Dmc,EAAU,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAAS/iB,EAAoB+L,CAAS,CAAC,CAC/F,MACEgX,EAAYjjB,EAAS,OAAO,OAAQ,cAAc,EAAE,KAAK,QAAS,uBAAuB,EAAE,KAAK,QAASqG,CAAU,EAAE,KAAK,IAAKoV,CAAI,EAErI,OAAAtb,EAAM,KAAK,YAAa,aAAa,CAACK,EAAK,MAAQ,CAAC,KAAK,CAACA,EAAK,OAAS,CAAC,GAAG,EAC5EyiB,EAAU,KAAK,YAAa,aAAa,CAACjf,EAAI,CAAC,KAAK,CAACC,EAAI,CAAC,GAAG,EAC7DvC,EAAiBhC,EAAMujB,CAAS,EAChCvjB,EAAK,cAAgB,SAASmO,EAAQhK,EAAO,CAC3C,OAAOiI,EAAkB,KAAK+B,EAAQhK,CAAK,CAC7C,EACAnE,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAAwB,EAAI,KAAK,kBAAmB3F,EAAMmE,CAAK,EAChCiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAOwjB,GAAO,OAAO,EAGrB,eAAeE,GAAmBzjB,EAAQC,EAAM,CAC9C,GAAM,CAAE,YAAA0G,EAAa,WAAAC,CAAW,EAAIG,EAAc9G,CAAI,EACtDA,EAAK,WAAa0G,EAClB,GAAM,CAAE,SAAApG,EAAU,KAAAQ,EAAM,YAAAC,EAAa,MAAAN,CAAM,EAAI,MAAMZ,EACnDE,EACAC,EACAkC,EAAelC,CAAI,CACrB,EACMsE,EAAIxD,EAAK,MAAQ,EAAIC,EACrBwD,EAAIzD,EAAK,OAAS,EAAIC,EACtB0iB,EAAK,EACLjU,EAAW;AAAA,OACZ,CAAClL,EAAI,CAAC,IAAIC,EAAI,EAAIkf,CAAE;AAAA,OACpB,CAAClf,EAAI,EAAIkf,CAAE;AAAA,UACRA,CAAE,IAAIA,CAAE,KAAKA,CAAE;AAAA,OAClBnf,EAAI,EAAImf,CAAE;AAAA,OACVA,CAAE,MAAMA,CAAE,IAAIA,CAAE;AAAA,OAChBlf,EAAI,EAAIkf,CAAE;AAAA,SACRA,CAAE,KAAKA,CAAE,IAAIA,CAAE;AAAA,OACjB,CAACnf,EAAI,EAAImf,CAAE;AAAA,QACVA,CAAE,OAAOA,CAAE,KAAKA,CAAE;AAAA;AAAA,IAGlBC,EAAKpjB,EAAS,OAAO,MAAM,EAAE,KAAK,KAAM,QAAUN,EAAK,EAAE,EAAE,KAAK,QAAS,iBAAmBA,EAAK,IAAI,EAAE,KAAK,QAAS2G,CAAU,EAAE,KAAK,IAAK6I,CAAQ,EACzJ,OAAAlP,EAAS,OAAO,MAAM,EAAE,KAAK,QAAS,YAAY,EAAE,KAAK,KAAM,CAACgE,EAAI,CAAC,EAAE,KAAK,KAAMC,EAAI,CAAC,EAAE,KAAK,KAAMD,EAAI,CAAC,EAAE,KAAK,KAAMC,EAAI,CAAC,EAC3H9D,EAAM,KAAK,YAAa,aAAa,CAACK,EAAK,MAAQ,CAAC,KAAK,CAACA,EAAK,OAAS,CAAC,GAAG,EAC5ER,EAAS,OAAO,IAAMG,EAAM,KAAK,CAAC,EAClCuB,EAAiBhC,EAAM0jB,CAAE,EACzB1jB,EAAK,cAAgB,SAASmO,EAAQhK,EAAO,CAC3C,OAAOiI,EAAkB,KAAK+B,EAAQhK,CAAK,CAC7C,EACAnE,EAAK,UAAY,SAASmE,EAAO,CAC/B,OAAOiI,EAAkB,KAAKpM,EAAMmE,CAAK,CAC3C,EACO7D,CACT,CACAR,EAAO0jB,GAAoB,oBAAoB,EAG/C,eAAeG,GAAc5jB,EAAQC,EAAM,CACzC,IAAM+B,EAAU,CACd,QAAS/B,EAAK,SAAW,CAC3B,EACA,OAAOiO,GAAOlO,EAAQC,EAAM+B,CAAO,CACrC,CACAjC,EAAO6jB,GAAe,eAAe,EAGrC,IAAIC,GAAa,CACf,CACE,aAAc,UACd,KAAM,YACN,UAAW,OACX,YAAa,yBACb,QAAS,CAAC,OAAQ,UAAW,WAAW,EACxC,gBAAiB,CAAC,YAAY,EAC9B,QAAS3K,EACX,EACA,CACE,aAAc,QACd,KAAM,oBACN,UAAW,UACX,YAAa,sBACb,QAAS,CAAC,OAAO,EACjB,gBAAiB,CAAC,aAAa,EAC/B,QAASN,EACX,EACA,CACE,aAAc,iBACd,KAAM,UACN,UAAW,UACX,YAAa,iBACb,QAAS,CAAC,WAAY,MAAM,EAC5B,QAASO,EACX,EACA,CACE,aAAc,aACd,KAAM,mBACN,UAAW,UACX,YAAa,aACb,QAAS,CAAC,aAAc,UAAW,mBAAoB,YAAY,EACnE,QAASS,EACX,EACA,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,mBACb,QAAS,CAAC,KAAM,WAAY,UAAU,EACtC,QAAS1I,EACX,EACA,CACE,aAAc,QACd,KAAM,SACN,UAAW,SACX,YAAa,iBACb,QAAS,CAAC,MAAM,EAChB,QAAShD,EACX,EACA,CACE,aAAc,OACd,KAAM,OACN,UAAW,OACX,YAAa,OACb,QAAS,CAAC,MAAM,EAChB,QAASiV,EACX,EACA,CACE,aAAc,QACd,KAAM,QACN,UAAW,QACX,YAAa,QACb,QAAS,CAAC,OAAO,EACjB,QAASI,EACX,EACA,CACE,aAAc,WACd,KAAM,UACN,UAAW,OACX,YAAa,uBACb,QAAS,CAAC,WAAY,UAAW,UAAU,EAC3C,QAAS5L,EACX,EACA,CACE,aAAc,sBACd,KAAM,UACN,UAAW,MACX,YAAa,gCACb,QAAS,CAAC,UAAW,SAAS,EAC9B,QAAS5E,EACX,EACA,CACE,aAAc,oBACd,KAAM,aACN,UAAW,SACX,YAAa,6BACb,QAAS,CAAC,aAAc,QAAQ,EAChC,gBAAiB,CAAC,YAAY,EAC9B,QAASgD,EACX,EACA,CACE,aAAc,oBACd,KAAM,YACN,UAAW,SACX,YAAa,6BACb,QAAS,CAAC,YAAa,QAAQ,EAC/B,gBAAiB,CAAC,WAAW,EAC7B,QAASD,EACX,EACA,CACE,aAAc,kBACd,KAAM,wBACN,UAAW,SACX,YAAa,kBACb,QAAS,CAAC,WAAY,mBAAoB,WAAW,EACrD,QAASoF,EACX,EACA,CACE,aAAc,mBACd,KAAM,qBACN,UAAW,SACX,YAAa,2BACb,QAAS,CAAC,SAAU,gBAAiB,eAAe,EACpD,gBAAiB,CAAC,eAAe,EACjC,QAASvF,EACX,EACA,CACE,aAAc,OACd,KAAM,gBACN,UAAW,WACX,YAAa,0BACb,QAAS,CAAC,eAAe,EACzB,gBAAiB,CAAC,cAAc,EAChC,QAAS9D,EACX,EACA,CACE,aAAc,aACd,KAAM,aACN,UAAW,OACX,YAAa,aACb,QAASgJ,EACX,EACA,CACE,aAAc,OACd,KAAM,oBACN,UAAW,aACX,YAAa,oBACb,QAAS,CAAC,OAAQ,mBAAmB,EACrC,QAASpN,EACX,EACA,CACE,aAAc,uBACd,KAAM,kBACN,UAAW,WACX,YAAa,sBACb,QAAS,CAAC,kBAAmB,gBAAiB,WAAY,gBAAgB,EAC1E,QAASuL,EACX,EACA,CACE,aAAc,QACd,KAAM,eACN,UAAW,UACX,YAAa,uBACb,QAAS,CAAC,QAAS,cAAc,EACjC,gBAAiB,CAAC,YAAY,EAC9B,QAASU,EACX,EACA,CACE,aAAc,OACd,KAAM,gBACN,UAAW,UACX,YAAa,aACb,QAAS,CAAC,OAAQ,eAAe,EACjC,gBAAiB,CAAC,UAAU,EAC5B,QAASL,EACX,EACA,CACE,aAAc,YACd,KAAM,mBACN,UAAW,OACX,YAAa,+BACb,QAAS,CAAC,MAAM,EAChB,gBAAiB,CAAC,UAAU,EAC5B,QAAS1G,EACX,EACA,CACE,aAAc,UACd,KAAM,YACN,UAAW,YACX,YAAa,iCACb,QAAS,CAAC,YAAa,SAAS,EAChC,QAASU,EACX,EACA,CACE,aAAc,UACd,KAAM,cACN,UAAW,QACX,YAAa,iBACb,QAAS,CAAC,UAAW,SAAS,EAC9B,QAAShE,EACX,EACA,CACE,aAAc,gBACd,KAAM,cACN,UAAW,UACX,YAAa,iBACb,QAASQ,EACX,EACA,CACE,aAAc,oCACd,KAAM,eACN,UAAW,SACX,YAAa,iBACb,QAASI,EACX,EACA,CACE,aAAc,WACd,KAAM,iBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,WAAY,gBAAgB,EACtC,QAAS+F,EACX,EACA,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,wBACb,QAAS,CAAC,MAAO,UAAU,EAC3B,QAASqF,EACX,EACA,CACE,aAAc,QACd,KAAM,yBACN,UAAW,QACX,YAAa,qBACb,QAAS,CAAC,wBAAwB,EAClC,QAASvI,EACX,EACA,CACE,aAAc,wBACd,KAAM,sBACN,UAAW,QACX,YAAa,wBACb,QAAS,CAAC,MAAO,qBAAqB,EACtC,QAASmI,EACX,EACA,CACE,aAAc,eACd,KAAM,iBACN,UAAW,UACX,YAAa,eACb,QAAS,CAAC,OAAQ,gBAAgB,EAClC,QAAS1E,EACX,EACA,CACE,aAAc,UACd,KAAM,mBACN,UAAW,YACX,YAAa,uBACb,QAAS,CAAC,mBAAoB,SAAS,EACvC,QAAS9F,EACX,EACA,CACE,aAAc,kBACd,KAAM,oBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,WAAY,oBAAqB,iBAAiB,EAC5D,QAASgB,EACX,EACA,CACE,aAAc,UACd,KAAM,WACN,UAAW,MACX,YAAa,qBACb,QAAS,CAAC,UAAW,UAAU,EAC/B,QAAS2J,EACX,EACA,CACE,aAAc,mBACd,KAAM,cACN,UAAW,WACX,YAAa,mBACb,QAAS,CAAC,mBAAoB,aAAa,EAC3C,QAASW,EACX,EACA,CACE,aAAc,WACd,KAAM,gBACN,UAAW,SACX,YAAa,iBACb,QAAS,CAAC,WAAY,eAAe,EACrC,QAASxJ,EACX,EACA,CACE,aAAc,aACd,KAAM,uBACN,UAAW,aACX,YAAa,kBACb,QAAS,CAAC,aAAc,kBAAkB,EAC1C,QAAS4I,EACX,EACA,CACE,aAAc,cACd,KAAM,mBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,cAAe,kBAAkB,EAC3C,QAAS1I,EACX,EACA,CACE,aAAc,eACd,KAAM,mBACN,UAAW,UACX,YAAa,oBACb,QAAS,CAAC,eAAgB,kBAAkB,EAC5C,QAASwG,EACX,EACA,CACE,aAAc,iBACd,KAAM,mBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,YAAa,SAAU,kBAAkB,EACnD,QAAS9B,EACX,EACA,CACE,aAAc,gBACd,KAAM,oBACN,UAAW,UACX,YAAa,qBACb,QAAS,CAAC,QAAS,YAAa,mBAAmB,EACnD,QAASP,EACX,EACA,CACE,aAAc,cACd,KAAM,oBACN,UAAW,WACX,YAAa,cACb,QAAS,CAAC,cAAe,mBAAmB,EAC5C,QAASzJ,EACX,EACA,CACE,aAAc,UACd,KAAM,iBACN,UAAW,aACX,YAAa,UACb,QAAS,CAAC,UAAW,gBAAgB,EACrC,QAAS4B,EACX,EACA,CACE,aAAc,kBACd,KAAM,kBACN,UAAW,UACX,YAAa,kBACb,QAAS,CAAC,UAAW,iBAAiB,EACtC,QAASyL,EACX,EACA,CACE,aAAc,iBACd,KAAM,mBACN,UAAW,WACX,YAAa,iBACb,QAAS,CAAC,mBAAoB,WAAY,gBAAgB,EAC1D,QAASR,EACX,EACA,CACE,aAAc,aACd,KAAM,OACN,UAAW,OACX,YAAa,aACb,QAAS,CAAC,YAAY,EACtB,QAASwB,EACX,EACA,CACE,aAAc,MACd,KAAM,MACN,UAAW,MACX,YAAa,YACb,gBAAiB,CAAC,qBAAqB,EACvC,QAASzD,EACX,EACA,CACE,aAAc,iBACd,KAAM,iBACN,UAAW,UACX,YAAa,iBACb,QAAS,CAAC,gBAAgB,EAC1B,QAASvB,EACX,CACF,EACIsN,GAAmC/jB,EAAO,IAAM,CA4BlD,IAAMgkB,EAAU,CACd,GAAG,OAAO,QA5Be,CAEzB,MAAA3K,GACA,OAAAtL,GACA,KAAAwJ,GAEA,cAAAW,GACA,UAAApC,GAEA,WAAAX,GACA,WAAAL,GACA,KAAAvB,GACA,YAAA2B,GACA,YAAAE,GACA,OAAA7I,GAEA,WAAAiW,GAEA,cAAAqB,GACA,mBAAAH,GAEA,SAAA9C,GAEA,MAAAxE,GAEA,eAAAqF,EACF,CAEsC,EACpC,GAAGqC,GAAW,QAAS9a,GACL,CACdA,EAAM,UACN,GAAG,YAAaA,EAAQA,EAAM,QAAU,CAAC,EACzC,GAAG,oBAAqBA,EAAQA,EAAM,gBAAkB,CAAC,CAC3D,EACe,IAAKib,GAAU,CAACA,EAAOjb,EAAM,OAAO,CAAC,CACrD,CACH,EACA,OAAO,OAAO,YAAYgb,CAAO,CACnC,EAAG,kBAAkB,EACjBE,GAAUH,GAAiB,EAC/B,SAASI,GAAanb,EAAO,CAC3B,OAAOA,KAASkb,EAClB,CACAlkB,EAAOmkB,GAAc,cAAc,EAGnC,IAAIC,GAA4B,IAAI,IACpC,eAAeC,GAAWtb,EAAM7I,EAAMokB,EAAe,CACnD,IAAIC,EACAvK,EACA9Z,EAAK,QAAU,SACbA,EAAK,IAAMA,EAAK,GAClBA,EAAK,MAAQ,cAEbA,EAAK,MAAQ,cAGjB,IAAMskB,EAAetkB,EAAK,MAAQgkB,GAAQhkB,EAAK,KAAK,EAAI,OACxD,GAAI,CAACskB,EACH,MAAM,IAAI,MAAM,kBAAkBtkB,EAAK,KAAK,6BAA6B,EAE3E,GAAIA,EAAK,KAAM,CACb,IAAIukB,EACAH,EAAc,OAAO,gBAAkB,UACzCG,EAAS,OACAvkB,EAAK,aACdukB,EAASvkB,EAAK,YAAc,UAE9BqkB,EAAQxb,EAAK,OAAO,OAAO,EAAE,KAAK,aAAc7I,EAAK,IAAI,EAAE,KAAK,SAAUukB,GAAU,IAAI,EACxFzK,EAAK,MAAMwK,EAAaD,EAAOrkB,EAAMokB,CAAa,CACpD,MACEtK,EAAK,MAAMwK,EAAazb,EAAM7I,EAAMokB,CAAa,EACjDC,EAAQvK,EAEV,OAAI9Z,EAAK,SACP8Z,EAAG,KAAK,QAAS9Z,EAAK,OAAO,EAE/BkkB,GAAU,IAAIlkB,EAAK,GAAIqkB,CAAK,EACxBrkB,EAAK,cACPqkB,EAAM,KAAK,QAASA,EAAM,KAAK,OAAO,EAAI,YAAY,EAEjDA,CACT,CACAvkB,EAAOqkB,GAAY,YAAY,EAC/B,IAAIK,GAA8B1kB,EAAO,CAAC+I,EAAM7I,IAAS,CACvDkkB,GAAU,IAAIlkB,EAAK,GAAI6I,CAAI,CAC7B,EAAG,aAAa,EACZ4b,GAAyB3kB,EAAO,IAAM,CACxCokB,GAAU,MAAM,CAClB,EAAG,OAAO,EACNQ,GAA+B5kB,EAAQE,GAAS,CAClD,IAAM8Z,EAAKoK,GAAU,IAAIlkB,EAAK,EAAE,EAChC2F,EAAI,MACF,oBACA3F,EAAK,KACLA,EACA,cAAgBA,EAAK,EAAIA,EAAK,MAAQ,EAAI,GAAK,KAAOA,EAAK,MAAQ,EAAI,GACzE,EACA,IAAM0H,EAAU,EACVid,EAAO3kB,EAAK,MAAQ,EAC1B,OAAIA,EAAK,YACP8Z,EAAG,KACD,YACA,cAAgB9Z,EAAK,EAAI2kB,EAAO3kB,EAAK,MAAQ,GAAK,MAAQA,EAAK,EAAIA,EAAK,OAAS,EAAI0H,GAAW,GAClG,EAEAoS,EAAG,KAAK,YAAa,aAAe9Z,EAAK,EAAI,KAAOA,EAAK,EAAI,GAAG,EAE3D2kB,CACT,EAAG,cAAc",
+ "names": ["t", "e", "s", "n", "o", "a", "r", "h", "i", "c", "l", "u", "p", "f", "d", "g", "M", "k", "b", "y", "m", "x", "w", "P", "v", "S", "O", "L", "T", "D", "A", "G", "E", "$", "j", "z", "F", "q", "V", "_", "Z", "I", "C", "W", "R", "Q", "H", "N", "B", "J", "K", "U", "X", "Y", "tt", "et", "st", "nt", "ot", "at", "labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig2", "shapeSvg", "labelEl", "handleUndefinedAttr", "label", "text2", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "enlargingFactor", "parsedBodyFontSize", "defaultConfig_default", "parseFontSize", "width", "insertLabel", "options", "updateNodeBounds", "element", "getNodeClasses", "extra", "createPathFromPoints", "points", "pointStrings", "p", "i", "generateFullSineWavePoints", "x1", "y1", "x2", "y2", "amplitude", "numCycles", "deltaX", "deltaY", "cycleLength", "frequency", "midY", "t", "x", "y", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "startAngleRad", "angleStep", "angle", "intersectRect", "point", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "applyStyle", "dom", "styleFn", "addHtmlLabel", "fo", "config", "hasKatex", "renderKatexSanitized", "common_default", "labelSpan", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "log", "svgLabel", "rows", "row", "tspan", "createLabel_default", "createRoundedRectPathD", "totalWidth", "totalHeight", "rect", "siteConfig", "themeVariables", "handDrawnSeed", "clusterBkg", "clusterBorder", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "styles2String", "height", "rect2", "rc", "at", "userNodeOverrides", "roughNode", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "noteGroup", "padding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "nodeBorder", "outerRectG", "innerRect", "innerHeight", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "kanbanSection", "divider", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "intersectNode", "intersect_node_default", "intersectEllipse", "rx", "ry", "cx", "cy", "px", "py", "det", "intersect_ellipse_default", "intersectCircle", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "b1", "c1", "r3", "r4", "epsilon", "sameSign", "a2", "b2", "c2", "r1", "r2", "denom", "offset", "num", "intersect_line_default", "intersectPolygon", "polyPoints", "intersections", "minX", "minY", "entry", "left", "top", "intersect", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "intersect_polygon_default", "intersect_default", "anchor", "classes", "cssStyles", "circleElem", "generateArcPoints", "clockwise", "midX", "transformedX", "transformedY", "distance", "scaledCenterDistance", "angleRange", "angle2", "bowTieRect", "bowTieRectPath", "bowTieRectShapePath", "bowTieRectShape", "insertPolygonShape", "d", "card", "right", "bottom", "polygon", "pathData", "choice", "s", "choicePath", "choiceShape", "circle", "options2", "bounds", "radius2", "createLine", "r", "xAxis45", "yAxis45", "lineLength", "pointQ1", "pointQ2", "pointQ3", "pointQ4", "crossedCircle", "circleNode", "linePath", "lineNode", "crossedCircle2", "generateCirclePoints2", "curlyBraceLeft", "rectPoints", "newCurlyBracePath", "curlyBraceLeftNode", "rectPath", "rectShape", "curlyBraceLeftShape", "generateCirclePoints3", "curlyBraceRight", "curlyBraceRightNode", "curlyBraceRightShape", "generateCirclePoints4", "curlyBraces", "leftCurlyBracePoints", "rightCurlyBracePoints", "newLeftCurlyBracePath", "leftCurlyBraceNode", "newRightCurlyBracePath", "rightCurlyBraceNode", "curlyBracesShape", "curvedTrapezoid", "minWidth", "minHeight", "rw", "tw", "shapeNode", "createCylinderPathD", "createOuterCylinderPathD", "createInnerCylinderPathD", "cylinder", "cylinder2", "outerPathData", "innerPathData", "outerNode", "innerLine", "pos", "dividedRectangle", "rectOffset", "pts", "poly", "doublecircle", "outerRadius", "innerRadius", "circleGroup", "outerOptions", "innerOptions", "outerRoughNode", "innerRoughNode", "outerCircle", "innerCircle", "filledCircle", "filledCircle2", "flippedTriangle", "flippedTriangle2", "forkJoin", "dir", "state2", "halfRoundedRectangle", "hexagon", "halfWidth", "m", "halfHeight", "fixedLength", "deducedWidth", "hourglass", "icon", "flowchart", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "topLabel", "stylesMap", "compileStyles", "labelPadding", "iconNode", "outerWidth", "outerHeight", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "nodeHeight", "iconCircle", "mainBkg", "fill", "diameter", "iconRounded", "iconSquare", "imageSquare", "imageNaturalWidth", "imageNaturalHeight", "imageRawWidth", "imageWidth", "imageHeight", "imageNode", "image", "inv_trapezoid", "drawRect", "labelRect", "lean_left", "lean_right", "lightningBolt", "gap", "lightningBolt2", "createCylinderPathD2", "outerOffset", "createOuterCylinderPathD2", "createInnerCylinderPathD2", "linedCylinder", "linedWaveEdgedRect", "waveAmplitude", "finalH", "waveEdgeRect", "multiRect", "outerPathPoints", "innerPathPoints", "outerPath", "innerPath", "innerNode", "multiRect2", "multiWaveEdgedRectangle", "wavePoints", "lastWavePoint", "note", "getConfig", "noteShapeNode", "createDecisionBoxPathD", "size", "question", "adjustment", "s2", "points2", "rect_left_inv_arrow", "notch", "rectWithTitle", "g", "description", "title", "div2", "dv2", "textRows", "titleBox", "descr", "roughLine", "generateArcPoints2", "roundedRect", "labelPaddingX", "labelPaddingY", "taper", "shadedProcess", "slopedRect", "squareRect2", "stadium", "state", "stateEnd", "lineColor", "stateBorder", "innerFill", "circle2", "stateStart", "solidStateFill", "subroutine", "l1", "l2", "el", "taggedRect", "tagWidth", "tagHeight", "tagPoints", "rectNode", "tagPath", "tagNode", "taggedRect2", "taggedWaveEdgedRectangle", "waveEdgeRectPath", "waveEdgeRectNode", "taggedWaveEdgeRectPath", "taggedWaveEdgeRectNode", "text", "createCylinderPathD3", "createOuterCylinderPathD3", "createInnerCylinderPathD3", "tiltedCylinder", "trapezoid", "trapezoidalPentagon", "triangle", "waveEdgedRectangle", "widthDif", "extraW", "waveRectangle", "baseWidth", "baseHeight", "aspectRatio", "waveRectPath", "waveRectNode", "waveRect", "windowPane", "path", "no", "windowPane2", "erBox", "entityNode", "themeVariables2", "background", "backgroundNode", "PADDING", "TEXT_PADDING", "calculateTextWidth", "shapeSvg2", "textElement", "nameBBox", "addText", "yOffset", "yOffsets", "maxTypeWidth", "maxNameWidth", "maxKeysWidth", "maxCommentWidth", "keysPresent", "commentPresent", "attribute", "typeBBox", "nameBBox2", "keysBBox", "commentBBox", "rowHeight", "totalWidthSections", "shapeBBox", "difference", "maxWidth", "totalShapeBBoxHeight", "sum", "_", "nodes", "transform", "translateX", "translateY", "translate", "roughRect", "rowEven", "rowOdd", "isEven", "roughRect2", "yOffset2", "strokeStyles", "e", "labelText", "parseGenericTypes", "child", "textHelper", "GAP", "annotationGroup", "labelGroup", "membersGroup", "methodsGroup", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "annotation", "addText2", "labelGroupBBox", "member", "methodsYOffset", "method", "annotationGroupBBox", "parentGroup", "styles", "textEl", "textContent", "sanitizeText3", "numberOfLines", "textChild", "classBox", "classNode", "renderExtraBox", "rectBBox", "newTranslateY", "newTranslateX", "_2", "i2", "nodes2", "colorRegex", "match", "colorStyle", "match2", "requirementBox", "requirementNode", "elementNode", "isRequirementNode", "typeHeight", "addText3", "accumulativeHeight", "nameHeight", "idHeight", "textHeight", "riskHeight", "typeHeight2", "inputText", "colorFromPriority", "priority", "kanbanItem", "kanbanNode", "orgWidth", "labelElTitle", "ticketUrl", "link", "bbox2", "labelElAssigned", "bboxAssigned", "heightAdj", "line", "lineX", "bang", "effectiveWidth", "effectiveHeight", "bangElem", "cloud", "cloudElem", "defaultMindmapNode", "rd", "bg", "mindmapCircle", "shapesDefs", "generateShapeMap", "entries", "alias", "shapes2", "isValidShape", "nodeElems", "insertNode", "renderOptions", "newEl", "shapeHandler", "target", "setNodeElem", "clear2", "positionNode", "diff"]
+}
diff --git a/docs/public/chunk-LBFZT66H.min.js b/docs/public/chunk-LBFZT66H.min.js
new file mode 100755
index 0000000..29f48b8
--- /dev/null
+++ b/docs/public/chunk-LBFZT66H.min.js
@@ -0,0 +1,128 @@
+import{A as ae,B as fo,C as Ze,D as Pe,G as Hu,I as Ke,L as le,M as Xt,O as $s,R as Jn,S as zu,a as fe,b as xt,c as ve,d as de,e as ee,g as Et,i as Yn,j as qt,k as At,l as he,m as Dt,n as k,o as Oe,p as Re,q as vt,r as ke,s as x,t as $e,w as ju,x as $,y as Ie,z as te}from"./chunk-R5JLOOQ4.min.js";import{d as b}from"./chunk-PTL4EUOE.min.js";import{M as co,d as Vu,e as at,z as me}from"./chunk-E5F23VE2.min.js";import{a as ks,b as zt,c as U,d as Ku}from"./chunk-OSRY5VT3.min.js";var su=ks(iu=>{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});var ru;function nu(){if(ru===void 0)throw new Error("No runtime abstraction layer installed");return ru}(function(r){function e(t){if(t===void 0)throw new Error("No runtime abstraction layer provided");ru=t}r.install=e})(nu||(nu={}));iu.default=nu});var Kd=ks(we=>{"use strict";Object.defineProperty(we,"__esModule",{value:!0});we.stringArray=we.array=we.func=we.error=we.number=we.string=we.boolean=void 0;function eg(r){return r===!0||r===!1}we.boolean=eg;function Bd(r){return typeof r=="string"||r instanceof String}we.string=Bd;function tg(r){return typeof r=="number"||r instanceof Number}we.number=tg;function rg(r){return r instanceof Error}we.error=rg;function ng(r){return typeof r=="function"}we.func=ng;function Wd(r){return Array.isArray(r)}we.array=Wd;function ig(r){return Wd(r)&&r.every(e=>Bd(e))}we.stringArray=ig});var ou=ks(Wn=>{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.Emitter=Wn.Event=void 0;var sg=su(),Vd;(function(r){let e={dispose(){}};r.None=function(){return e}})(Vd||(Wn.Event=Vd={}));var au=class{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let i=0,s=this._callbacks.length;i{this._callbacks||(this._callbacks=new au),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=r._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};Wn.Emitter=Oa;Oa._noop=function(){}});var jd=ks(Kn=>{"use strict";Object.defineProperty(Kn,"__esModule",{value:!0});Kn.CancellationTokenSource=Kn.CancellationToken=void 0;var ag=su(),og=Kd(),lu=ou(),Pa;(function(r){r.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:lu.Event.None}),r.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:lu.Event.None});function e(t){let n=t;return n&&(n===r.None||n===r.Cancelled||og.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}r.is=e})(Pa||(Kn.CancellationToken=Pa={}));var lg=Object.freeze(function(r,e){let t=(0,ag.default)().timer.setTimeout(r.bind(e),0);return{dispose(){t.dispose()}}}),ba=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?lg:(this._emitter||(this._emitter=new lu.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},uu=class{get token(){return this._token||(this._token=new ba),this._token}cancel(){this._token?this._token.cancel():this._token=Pa.Cancelled}dispose(){this._token?this._token instanceof ba&&this._token.dispose():this._token=Pa.None}};Kn.CancellationTokenSource=uu});var ce={};zt(ce,{AbstractAstReflection:()=>Yt,AbstractCstNode:()=>Bi,AbstractLangiumParser:()=>Wi,AbstractParserErrorMessageProvider:()=>_a,AbstractThreadedAsyncParser:()=>Eu,AstUtils:()=>Ds,BiMap:()=>Tr,Cancellation:()=>C,CompositeCstNodeImpl:()=>mr,ContextCache:()=>Rr,CstNodeBuilder:()=>Ui,CstUtils:()=>Cs,DEFAULT_TOKENIZE_OPTIONS:()=>Ba,DONE_RESULT:()=>Ne,DatatypeSymbol:()=>wa,DefaultAstNodeDescriptionProvider:()=>ss,DefaultAstNodeLocator:()=>os,DefaultAsyncParser:()=>ys,DefaultCommentProvider:()=>gs,DefaultConfigurationProvider:()=>ls,DefaultDocumentBuilder:()=>us,DefaultDocumentValidator:()=>is,DefaultHydrator:()=>Rs,DefaultIndexManager:()=>cs,DefaultJsonSerializer:()=>ts,DefaultLangiumDocumentFactory:()=>Hi,DefaultLangiumDocuments:()=>zi,DefaultLexer:()=>Er,DefaultLexerErrorMessageProvider:()=>ds,DefaultLinker:()=>qi,DefaultNameProvider:()=>Xi,DefaultReferenceDescriptionProvider:()=>as,DefaultReferences:()=>Yi,DefaultScopeComputation:()=>Ji,DefaultScopeProvider:()=>es,DefaultServiceRegistry:()=>rs,DefaultTokenBuilder:()=>Pt,DefaultValueConverter:()=>yr,DefaultWorkspaceLock:()=>Ts,DefaultWorkspaceManager:()=>fs,Deferred:()=>Fe,Disposable:()=>Vt,DisposableCache:()=>zn,DocumentCache:()=>Ga,DocumentState:()=>X,DocumentValidator:()=>Je,EMPTY_SCOPE:()=>cg,EMPTY_STREAM:()=>Zn,EmptyFileSystem:()=>Cu,EmptyFileSystemProvider:()=>qa,ErrorWithLocation:()=>er,GrammarAST:()=>li,GrammarUtils:()=>Ws,IndentationAwareLexer:()=>Nu,IndentationAwareTokenBuilder:()=>za,JSDocDocumentationProvider:()=>ms,LangiumCompletionParser:()=>Vi,LangiumParser:()=>Ki,LangiumParserErrorMessageProvider:()=>Bn,LeafCstNodeImpl:()=>pr,LexingMode:()=>Ar,MapScope:()=>Qi,Module:()=>$u,MultiMap:()=>it,OperationCancelled:()=>pt,ParserWorker:()=>Au,Reduction:()=>$r,RegExpUtils:()=>Us,RootCstNodeImpl:()=>Un,SimpleCache:()=>Zi,StreamImpl:()=>Ve,StreamScope:()=>Hn,TextDocument:()=>Vn,TreeStreamImpl:()=>ot,URI:()=>Ge,UriUtils:()=>Ue,ValidationCategory:()=>Xn,ValidationRegistry:()=>ns,ValueConverter:()=>ht,WorkspaceCache:()=>qn,assertUnreachable:()=>ut,createCompletionParser:()=>eu,createDefaultCoreModule:()=>vu,createDefaultSharedCoreModule:()=>ku,createGrammarConfig:()=>nl,createLangiumParser:()=>tu,createParser:()=>ji,delayNextTick:()=>cu,diagnosticData:()=>xr,eagerLoad:()=>fh,getDiagnosticRange:()=>eh,indentationBuilderDefaultOptions:()=>Iu,inject:()=>Ha,interruptAndCheck:()=>ue,isAstNode:()=>oe,isAstNodeDescription:()=>ho,isAstNodeWithComment:()=>hu,isCompositeCstNode:()=>et,isIMultiModeLexerDefinition:()=>mu,isJSDoc:()=>Ru,isLeafCstNode:()=>Ft,isLinkingError:()=>Jt,isNamed:()=>Qd,isOperationCancelled:()=>mt,isReference:()=>xe,isRootCstNode:()=>Qn,isTokenTypeArray:()=>Wa,isTokenTypeDictionary:()=>pu,loadGrammarFromJson:()=>gt,parseJSDoc:()=>Tu,prepareLangiumParser:()=>Ud,setInterruptionPeriod:()=>zd,startCancelableOperation:()=>Da,stream:()=>V,toDiagnosticData:()=>th,toDiagnosticSeverity:()=>Ua});var Cs={};zt(Cs,{DefaultNameRegexp:()=>Ns,RangeComparison:()=>lt,compareRange:()=>Xu,findCommentNode:()=>yo,findDeclarationNodeAtOffset:()=>$h,findLeafNodeAtOffset:()=>To,findLeafNodeBeforeOffset:()=>Yu,flattenCst:()=>kh,getInteriorNodes:()=>Ch,getNextNode:()=>Ih,getPreviousNode:()=>Qu,getStartlineNode:()=>Nh,inRange:()=>go,isChildNode:()=>mo,isCommentNode:()=>po,streamCst:()=>Qt,toDocumentSegment:()=>Zt,tokenToRange:()=>Ir});function oe(r){return typeof r=="object"&&r!==null&&typeof r.$type=="string"}function xe(r){return typeof r=="object"&&r!==null&&typeof r.$refText=="string"}function ho(r){return typeof r=="object"&&r!==null&&typeof r.name=="string"&&typeof r.type=="string"&&typeof r.path=="string"}function Jt(r){return typeof r=="object"&&r!==null&&oe(r.container)&&xe(r.reference)&&typeof r.message=="string"}var Yt=class{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return oe(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[t];if(i!==void 0)return i;{let s=this.computeIsSubtype(e,t);return n[t]=s,s}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let n=this.getAllTypes(),i=[];for(let s of n)this.isSubtype(s,e)&&i.push(s);return this.allSubtypes[e]=i,i}}};function et(r){return typeof r=="object"&&r!==null&&Array.isArray(r.content)}function Ft(r){return typeof r=="object"&&r!==null&&typeof r.tokenType=="object"}function Qn(r){return et(r)&&typeof r.fullText=="string"}var Ve=class r{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){let e=[],t=this.iterator(),n;do n=t.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){let n=this.map(i=>[e?e(i):i,t?t(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new r(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),t=>{let n;if(!t.firstDone){do if(n=this.nextFn(t.first),!n.done)return n;while(!n.done);t.firstDone=!0}do if(n=t.iterator.next(),!n.done)return n;while(!n.done);return Ne})}join(e=","){let t=this.iterator(),n="",i,s=!1;do i=t.next(),i.done||(s&&(n+=e),n+=vh(i.value)),s=!0;while(!i.done);return n}indexOf(e,t=0){let n=this.iterator(),i=0,s=n.next();for(;!s.done;){if(i>=t&&s.value===e)return i;s=n.next(),i++}return-1}every(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){let t=this.iterator(),n=0,i=t.next();for(;!i.done;)e(i.value,n),i=t.next(),n++}map(e){return new r(this.startFn,t=>{let{done:n,value:i}=this.nextFn(t);return n?Ne:{done:!1,value:e(i)}})}filter(e){return new r(this.startFn,t=>{let n;do if(n=this.nextFn(t),!n.done&&e(n.value))return n;while(!n.done);return Ne})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){let n=this.iterator(),i=t,s=n.next();for(;!s.done;)i===void 0?i=s.value:i=e(i,s.value),s=n.next();return i}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){let i=e.next();if(i.done)return n;let s=this.recursiveReduce(e,t,n);return s===void 0?i.value:t(s,i.value)}find(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){let t=this.iterator(),n=0,i=t.next();for(;!i.done;){if(e(i.value))return n;i=t.next(),n++}return-1}includes(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(e){return new r(()=>({this:this.startFn()}),t=>{do{if(t.iterator){let s=t.iterator.next();if(s.done)t.iterator=void 0;else return s}let{done:n,value:i}=this.nextFn(t.this);if(!n){let s=e(i);if(Is(s))t.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}}while(t.iterator);return Ne})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let t=e>1?this.flat(e-1):this;return new r(()=>({this:t.startFn()}),n=>{do{if(n.iterator){let a=n.iterator.next();if(a.done)n.iterator=void 0;else return a}let{done:i,value:s}=t.nextFn(n.this);if(!i)if(Is(s))n.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}while(n.iterator);return Ne})}head(){let t=this.iterator().next();if(!t.done)return t.value}tail(e=1){return new r(()=>{let t=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?Ne:this.nextFn(t.state)))}distinct(e){return new r(()=>({set:new Set,internalState:this.startFn()}),t=>{let n;do if(n=this.nextFn(t.internalState),!n.done){let i=e?e(n.value):n.value;if(!t.set.has(i))return t.set.add(i),n}while(!n.done);return Ne})}exclude(e,t){let n=new Set;for(let i of e){let s=t?t(i):i;n.add(s)}return this.filter(i=>{let s=t?t(i):i;return!n.has(s)})}};function vh(r){return typeof r=="string"?r:typeof r>"u"?"undefined":typeof r.toString=="function"?r.toString():Object.prototype.toString.call(r)}function Is(r){return!!r&&typeof r[Symbol.iterator]=="function"}var Zn=new Ve(()=>{},()=>Ne),Ne=Object.freeze({done:!0,value:void 0});function V(...r){if(r.length===1){let e=r[0];if(e instanceof Ve)return e;if(Is(e))return new Ve(()=>e[Symbol.iterator](),t=>t.next());if(typeof e.length=="number")return new Ve(()=>({index:0}),t=>t.index1?new Ve(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}if(e.array){if(e.arrIndex({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let a=i.iterators[i.iterators.length-1].next();if(a.done)i.iterators.pop();else return i.iterators.push(t(a.value)[Symbol.iterator]()),a}return Ne})}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}},$r;(function(r){function e(s){return s.reduce((a,o)=>a+o,0)}r.sum=e;function t(s){return s.reduce((a,o)=>a*o,0)}r.product=t;function n(s){return s.reduce((a,o)=>Math.min(a,o))}r.min=n;function i(s){return s.reduce((a,o)=>Math.max(a,o))}r.max=i})($r||($r={}));function Qt(r){return new ot(r,e=>et(e)?e.content:[],{includeRoot:!0})}function kh(r){return Qt(r).filter(Ft)}function mo(r,e){for(;r.container;)if(r=r.container,r===e)return!0;return!1}function Ir(r){return{start:{character:r.startColumn-1,line:r.startLine-1},end:{character:r.endColumn,line:r.endLine-1}}}function Zt(r){if(!r)return;let{offset:e,end:t,range:n}=r;return{range:n,offset:e,end:t,length:t-e}}var lt;(function(r){r[r.Before=0]="Before",r[r.After=1]="After",r[r.OverlapFront=2]="OverlapFront",r[r.OverlapBack=3]="OverlapBack",r[r.Inside=4]="Inside",r[r.Outside=5]="Outside"})(lt||(lt={}));function Xu(r,e){if(r.end.linee.end.line||r.start.line===e.end.line&&r.start.character>=e.end.character)return lt.After;let t=r.start.line>e.start.line||r.start.line===e.start.line&&r.start.character>=e.start.character,n=r.end.linelt.After}var Ns=/^[\w\p{L}]$/u;function $h(r,e,t=Ns){if(r){if(e>0){let n=e-r.offset,i=r.text.charAt(n);t.test(i)||e--}return To(r,e)}}function yo(r,e){if(r){let t=Qu(r,!0);if(t&&po(t,e))return t;if(Qn(r)){let n=r.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let s=r.content[i];if(po(s,e))return s}}}}function po(r,e){return Ft(r)&&e.includes(r.tokenType.name)}function To(r,e){if(Ft(r))return r;if(et(r)){let t=Ju(r,e,!1);if(t)return To(t,e)}}function Yu(r,e){if(Ft(r))return r;if(et(r)){let t=Ju(r,e,!0);if(t)return Yu(t,e)}}function Ju(r,e,t){let n=0,i=r.content.length-1,s;for(;n<=i;){let a=Math.floor((n+i)/2),o=r.content[a];if(o.offset<=e&&o.end>e)return o;o.end<=e?(s=t?o:void 0,n=a+1):i=a-1}return s}function Qu(r,e=!0){for(;r.container;){let t=r.container,n=t.content.indexOf(r);for(;n>0;){n--;let i=t.content[n];if(e||!i.hidden)return i}r=t}}function Ih(r,e=!0){for(;r.container;){let t=r.container,n=t.content.indexOf(r),i=t.content.length-1;for(;nel,findNameAssignment:()=>Bs,findNodeForKeyword:()=>Qo,findNodeForProperty:()=>mi,findNodesForKeyword:()=>Yh,findNodesForKeywordInternal:()=>Zo,findNodesForProperty:()=>Yo,getActionAtElement:()=>lc,getActionType:()=>cc,getAllReachableRules:()=>pi,getCrossReferenceTerminal:()=>qo,getEntryRule:()=>ic,getExplicitRuleType:()=>gn,getHiddenRules:()=>sc,getRuleType:()=>tl,getRuleTypeName:()=>tp,getTypeName:()=>yi,isArrayCardinality:()=>Qh,isArrayOperator:()=>Zh,isCommentTerminal:()=>Xo,isDataType:()=>ep,isDataTypeRule:()=>gi,isOptionalCardinality:()=>Jh,terminalRegex:()=>yn});var er=class extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};function ut(r){throw new Error("Error! The input value was not handled.")}var li={};zt(li,{AbstractElement:()=>Sr,AbstractRule:()=>Nr,AbstractType:()=>Cr,Action:()=>qr,Alternatives:()=>Xr,ArrayLiteral:()=>wr,ArrayType:()=>_r,Assignment:()=>Yr,BooleanLiteral:()=>Lr,CharacterRange:()=>Jr,Condition:()=>ei,Conjunction:()=>Or,CrossReference:()=>Qr,Disjunction:()=>Pr,EndOfFile:()=>Zr,Grammar:()=>br,GrammarImport:()=>ri,Group:()=>en,InferredType:()=>Mr,Interface:()=>Dr,Keyword:()=>tn,LangiumGrammarAstReflection:()=>dn,LangiumGrammarTerminals:()=>wh,NamedArgument:()=>ni,NegatedToken:()=>rn,Negation:()=>Fr,NumberLiteral:()=>Gr,Parameter:()=>Ur,ParameterReference:()=>Br,ParserRule:()=>Wr,ReferenceType:()=>Kr,RegexToken:()=>nn,ReturnType:()=>ii,RuleCall:()=>sn,SimpleType:()=>Vr,StringLiteral:()=>jr,TerminalAlternatives:()=>an,TerminalGroup:()=>on,TerminalRule:()=>tr,TerminalRuleCall:()=>ln,Type:()=>Hr,TypeAttribute:()=>si,TypeDefinition:()=>Ss,UnionType:()=>zr,UnorderedGroup:()=>un,UntilToken:()=>cn,ValueLiteral:()=>ti,Wildcard:()=>fn,isAbstractElement:()=>ai,isAbstractRule:()=>_h,isAbstractType:()=>Lh,isAction:()=>kt,isAlternatives:()=>Os,isArrayLiteral:()=>Dh,isArrayType:()=>Ro,isAssignment:()=>tt,isBooleanLiteral:()=>xo,isCharacterRange:()=>Co,isCondition:()=>Oh,isConjunction:()=>Eo,isCrossReference:()=>rr,isDisjunction:()=>Ao,isEndOfFile:()=>So,isFeatureName:()=>Ph,isGrammar:()=>Fh,isGrammarImport:()=>Gh,isGroup:()=>Gt,isInferredType:()=>ws,isInterface:()=>_s,isKeyword:()=>Xe,isNamedArgument:()=>Uh,isNegatedToken:()=>wo,isNegation:()=>vo,isNumberLiteral:()=>Bh,isParameter:()=>Wh,isParameterReference:()=>ko,isParserRule:()=>Ce,isPrimitiveType:()=>Zu,isReferenceType:()=>$o,isRegexToken:()=>_o,isReturnType:()=>Io,isRuleCall:()=>rt,isSimpleType:()=>Ls,isStringLiteral:()=>Kh,isTerminalAlternatives:()=>Lo,isTerminalGroup:()=>Oo,isTerminalRule:()=>je,isTerminalRuleCall:()=>Ps,isType:()=>oi,isTypeAttribute:()=>Vh,isTypeDefinition:()=>bh,isUnionType:()=>No,isUnorderedGroup:()=>bs,isUntilToken:()=>Po,isValueLiteral:()=>Mh,isWildcard:()=>bo,reflection:()=>w});var wh={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Nr="AbstractRule";function _h(r){return w.isInstance(r,Nr)}var Cr="AbstractType";function Lh(r){return w.isInstance(r,Cr)}var ei="Condition";function Oh(r){return w.isInstance(r,ei)}function Ph(r){return Zu(r)||r==="current"||r==="entry"||r==="extends"||r==="false"||r==="fragment"||r==="grammar"||r==="hidden"||r==="import"||r==="interface"||r==="returns"||r==="terminal"||r==="true"||r==="type"||r==="infer"||r==="infers"||r==="with"||typeof r=="string"&&/\^?[_a-zA-Z][\w_]*/.test(r)}function Zu(r){return r==="string"||r==="number"||r==="boolean"||r==="Date"||r==="bigint"}var Ss="TypeDefinition";function bh(r){return w.isInstance(r,Ss)}var ti="ValueLiteral";function Mh(r){return w.isInstance(r,ti)}var Sr="AbstractElement";function ai(r){return w.isInstance(r,Sr)}var wr="ArrayLiteral";function Dh(r){return w.isInstance(r,wr)}var _r="ArrayType";function Ro(r){return w.isInstance(r,_r)}var Lr="BooleanLiteral";function xo(r){return w.isInstance(r,Lr)}var Or="Conjunction";function Eo(r){return w.isInstance(r,Or)}var Pr="Disjunction";function Ao(r){return w.isInstance(r,Pr)}var br="Grammar";function Fh(r){return w.isInstance(r,br)}var ri="GrammarImport";function Gh(r){return w.isInstance(r,ri)}var Mr="InferredType";function ws(r){return w.isInstance(r,Mr)}var Dr="Interface";function _s(r){return w.isInstance(r,Dr)}var ni="NamedArgument";function Uh(r){return w.isInstance(r,ni)}var Fr="Negation";function vo(r){return w.isInstance(r,Fr)}var Gr="NumberLiteral";function Bh(r){return w.isInstance(r,Gr)}var Ur="Parameter";function Wh(r){return w.isInstance(r,Ur)}var Br="ParameterReference";function ko(r){return w.isInstance(r,Br)}var Wr="ParserRule";function Ce(r){return w.isInstance(r,Wr)}var Kr="ReferenceType";function $o(r){return w.isInstance(r,Kr)}var ii="ReturnType";function Io(r){return w.isInstance(r,ii)}var Vr="SimpleType";function Ls(r){return w.isInstance(r,Vr)}var jr="StringLiteral";function Kh(r){return w.isInstance(r,jr)}var tr="TerminalRule";function je(r){return w.isInstance(r,tr)}var Hr="Type";function oi(r){return w.isInstance(r,Hr)}var si="TypeAttribute";function Vh(r){return w.isInstance(r,si)}var zr="UnionType";function No(r){return w.isInstance(r,zr)}var qr="Action";function kt(r){return w.isInstance(r,qr)}var Xr="Alternatives";function Os(r){return w.isInstance(r,Xr)}var Yr="Assignment";function tt(r){return w.isInstance(r,Yr)}var Jr="CharacterRange";function Co(r){return w.isInstance(r,Jr)}var Qr="CrossReference";function rr(r){return w.isInstance(r,Qr)}var Zr="EndOfFile";function So(r){return w.isInstance(r,Zr)}var en="Group";function Gt(r){return w.isInstance(r,en)}var tn="Keyword";function Xe(r){return w.isInstance(r,tn)}var rn="NegatedToken";function wo(r){return w.isInstance(r,rn)}var nn="RegexToken";function _o(r){return w.isInstance(r,nn)}var sn="RuleCall";function rt(r){return w.isInstance(r,sn)}var an="TerminalAlternatives";function Lo(r){return w.isInstance(r,an)}var on="TerminalGroup";function Oo(r){return w.isInstance(r,on)}var ln="TerminalRuleCall";function Ps(r){return w.isInstance(r,ln)}var un="UnorderedGroup";function bs(r){return w.isInstance(r,un)}var cn="UntilToken";function Po(r){return w.isInstance(r,cn)}var fn="Wildcard";function bo(r){return w.isInstance(r,fn)}var dn=class extends Yt{getAllTypes(){return[Sr,Nr,Cr,qr,Xr,wr,_r,Yr,Lr,Jr,ei,Or,Qr,Pr,Zr,br,ri,en,Mr,Dr,tn,ni,rn,Fr,Gr,Ur,Br,Wr,Kr,nn,ii,sn,Vr,jr,an,on,tr,ln,Hr,si,Ss,zr,un,cn,ti,fn]}computeIsSubtype(e,t){switch(e){case qr:case Xr:case Yr:case Jr:case Qr:case Zr:case en:case tn:case rn:case nn:case sn:case an:case on:case ln:case un:case cn:case fn:return this.isSubtype(Sr,t);case wr:case Gr:case jr:return this.isSubtype(ti,t);case _r:case Kr:case Vr:case zr:return this.isSubtype(Ss,t);case Lr:return this.isSubtype(ei,t)||this.isSubtype(ti,t);case Or:case Pr:case Fr:case Br:return this.isSubtype(ei,t);case Mr:case Dr:case Hr:return this.isSubtype(Cr,t);case Wr:return this.isSubtype(Nr,t)||this.isSubtype(Cr,t);case tr:return this.isSubtype(Nr,t);default:return!1}}getReferenceType(e){let t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Cr;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Nr;case"Grammar:usedGrammars":return br;case"NamedArgument:parameter":case"ParameterReference:parameter":return Ur;case"TerminalRuleCall:rule":return tr;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case Sr:return{name:Sr,properties:[{name:"cardinality"},{name:"lookahead"}]};case wr:return{name:wr,properties:[{name:"elements",defaultValue:[]}]};case _r:return{name:_r,properties:[{name:"elementType"}]};case Lr:return{name:Lr,properties:[{name:"true",defaultValue:!1}]};case Or:return{name:Or,properties:[{name:"left"},{name:"right"}]};case Pr:return{name:Pr,properties:[{name:"left"},{name:"right"}]};case br:return{name:br,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case ri:return{name:ri,properties:[{name:"path"}]};case Mr:return{name:Mr,properties:[{name:"name"}]};case Dr:return{name:Dr,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case ni:return{name:ni,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Fr:return{name:Fr,properties:[{name:"value"}]};case Gr:return{name:Gr,properties:[{name:"value"}]};case Ur:return{name:Ur,properties:[{name:"name"}]};case Br:return{name:Br,properties:[{name:"parameter"}]};case Wr:return{name:Wr,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case Kr:return{name:Kr,properties:[{name:"referenceType"}]};case ii:return{name:ii,properties:[{name:"name"}]};case Vr:return{name:Vr,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case jr:return{name:jr,properties:[{name:"value"}]};case tr:return{name:tr,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case Hr:return{name:Hr,properties:[{name:"name"},{name:"type"}]};case si:return{name:si,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case zr:return{name:zr,properties:[{name:"types",defaultValue:[]}]};case qr:return{name:qr,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Xr:return{name:Xr,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Yr:return{name:Yr,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Jr:return{name:Jr,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case Qr:return{name:Qr,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case Zr:return{name:Zr,properties:[{name:"cardinality"},{name:"lookahead"}]};case en:return{name:en,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case tn:return{name:tn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case rn:return{name:rn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case nn:return{name:nn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case sn:return{name:sn,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case an:return{name:an,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case on:return{name:on,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case ln:return{name:ln,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case un:return{name:un,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case cn:return{name:cn,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case fn:return{name:fn,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},w=new dn;var Ds={};zt(Ds,{assignMandatoryProperties:()=>Fo,copyAstNode:()=>Do,findLocalReferences:()=>Hh,findRootNode:()=>ui,getContainerOfType:()=>nr,getDocument:()=>Se,hasContainerOfType:()=>jh,linkContentToContainer:()=>Ms,streamAllContents:()=>ct,streamAst:()=>Ye,streamContents:()=>ci,streamReferences:()=>hn});function Ms(r){for(let[e,t]of Object.entries(r))e.startsWith("$")||(Array.isArray(t)?t.forEach((n,i)=>{oe(n)&&(n.$container=r,n.$containerProperty=e,n.$containerIndex=i)}):oe(t)&&(t.$container=r,t.$containerProperty=e))}function nr(r,e){let t=r;for(;t;){if(e(t))return t;t=t.$container}}function jh(r,e){let t=r;for(;t;){if(e(t))return!0;t=t.$container}return!1}function Se(r){let t=ui(r).$document;if(!t)throw new Error("AST node has no document.");return t}function ui(r){for(;r.$container;)r=r.$container;return r}function ci(r,e){if(!r)throw new Error("Node must be an AstNode.");let t=e?.range;return new Ve(()=>({keys:Object.keys(r),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexci(t,e))}function Ye(r,e){if(r){if(e?.range&&!Mo(r,e.range))return new ot(r,()=>[])}else throw new Error("Root node must be an AstNode.");return new ot(r,t=>ci(t,e),{includeRoot:!0})}function Mo(r,e){var t;if(!e)return!0;let n=(t=r.$cstNode)===null||t===void 0?void 0:t.range;return n?go(n,e):!1}function hn(r){return new Ve(()=>({keys:Object.keys(r),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{hn(n).forEach(i=>{i.reference.ref===r&&t.push(i.reference)})}),V(t)}function Fo(r,e){let t=r.getTypeMetaData(e.$type),n=e;for(let i of t.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=ec(i.defaultValue))}function ec(r){return Array.isArray(r)?[...r.map(ec)]:r}function Do(r,e){let t={$type:r.$type};for(let[n,i]of Object.entries(r))if(!n.startsWith("$"))if(oe(i))t[n]=Do(i,e);else if(xe(i))t[n]=e(t,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let s=[];for(let a of i)oe(a)?s.push(Do(a,e)):xe(a)?s.push(e(t,n,a.$refNode,a.$refText)):s.push(a);t[n]=s}else t[n]=i;return Ms(t),t}var Us={};zt(Us,{NEWLINE_REGEXP:()=>Wo,escapeRegExp:()=>or,getCaseInsensitivePattern:()=>Vo,getTerminalParts:()=>Xh,isMultilineComment:()=>Ko,isWhitespace:()=>mn,partialMatches:()=>jo,partialRegExp:()=>nc,whitespaceCharacters:()=>rc});function S(r){return r.charCodeAt(0)}function Fs(r,e){Array.isArray(r)?r.forEach(function(t){e.push(t)}):e.push(r)}function pn(r,e){if(r[e]===!0)throw"duplicate flag "+e;let t=r[e];r[e]=!0}function ir(r){if(r===void 0)throw Error("Internal Error - Should never get here!");return!0}function fi(){throw Error("Internal Error - Should never get here!")}function Go(r){return r.type==="Character"}var di=[];for(let r=S("0");r<=S("9");r++)di.push(r);var hi=[S("_")].concat(di);for(let r=S("a");r<=S("z");r++)hi.push(r);for(let r=S("A");r<=S("Z");r++)hi.push(r);var Uo=[S(" "),S("\f"),S(`
+`),S("\r"),S(" "),S("\v"),S(" "),S("\xA0"),S("\u1680"),S("\u2000"),S("\u2001"),S("\u2002"),S("\u2003"),S("\u2004"),S("\u2005"),S("\u2006"),S("\u2007"),S("\u2008"),S("\u2009"),S("\u200A"),S("\u2028"),S("\u2029"),S("\u202F"),S("\u205F"),S("\u3000"),S("\uFEFF")];var zh=/[0-9a-fA-F]/,Gs=/[0-9]/,qh=/[1-9]/,sr=class{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let t=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":pn(n,"global");break;case"i":pn(n,"ignoreCase");break;case"m":pn(n,"multiLine");break;case"u":pn(n,"unicode");break;case"y":pn(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break}ir(t);let n=this.disjunction();return this.consumeChar(")"),{type:t,value:n,loc:this.loc(e)}}return fi()}quantifier(e=!1){let t,n=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:i,atMost:i};break;case",":let s;this.isDigit()?(s=this.integerIncludingZero(),t={atLeast:i,atMost:s}):t={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;ir(t);break}if(!(e===!0&&t===void 0)&&ir(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(n),t}atom(){let e,t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),ir(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):fi()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[S(`
+`),S("\r"),S("\u2028"),S("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=di;break;case"D":e=di,t=!0;break;case"s":e=Uo;break;case"S":e=Uo,t=!0;break;case"w":e=hi;break;case"W":e=hi,t=!0;break}return ir(e)?{type:"Set",value:e,complement:t}:fi()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=S("\f");break;case"n":e=S(`
+`);break;case"r":e=S("\r");break;case"t":e=S(" ");break;case"v":e=S("\v");break}return ir(e)?{type:"Character",value:e}:fi()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:S("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:S(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
+`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:S(e)}}}characterClass(){let e=[],t=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),t=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(Go(n)&&this.isRangeDash()){this.consumeChar("-");let s=this.classAtom(),a=s.type==="Character";if(Go(s)){if(s.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}};var ft=class{visitChildren(e){for(let t in e){let n=e[t];e.hasOwnProperty(t)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}};var Wo=/\r?\n/gm,tc=new sr,Bo=class extends ft{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let t=String.fromCharCode(e.value);if(!this.multiline&&t===`
+`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=or(t);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let t=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(t);this.multiline=!!`
+`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},ar=new Bo;function Xh(r){try{typeof r!="string"&&(r=r.source),r=`/${r}/`;let e=tc.pattern(r),t=[];for(let n of e.value.value)ar.reset(r),ar.visit(n),t.push({start:ar.startRegexp,end:ar.endRegex});return t}catch{return[]}}function Ko(r){try{return typeof r=="string"&&(r=new RegExp(r)),r=r.toString(),ar.reset(r),ar.visit(tc.pattern(r)),ar.multiline}catch{return!1}}var rc=`\f
+\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");function mn(r){let e=typeof r=="string"?new RegExp(r):r;return rc.some(t=>e.test(t))}function or(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Vo(r){return Array.prototype.map.call(r,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:or(e)).join("")}function jo(r,e){let t=nc(r),n=e.match(t);return!!n&&n[0].length>0}function nc(r){typeof r=="string"&&(r=new RegExp(r));let e=r,t=r.source,n=0;function i(){let s="",a;function o(u){s+=t.substr(n,u),n+=u}function l(u){s+="(?:"+t.substr(n,u)+"|$)",n+=u}for(;n",n)-n+1);break;default:l(2);break}break;case"[":a=/\[(?:\\.|.)*?\]/g,a.lastIndex=n,a=a.exec(t)||[],l(a[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":o(1);break;case"{":a=/\{\d+,?\d*\}/g,a.lastIndex=n,a=a.exec(t),a?o(a[0].length):l(1);break;case"(":if(t[n+1]==="?")switch(t[n+2]){case":":s+="(?:",n+=3,s+=i()+"|$)";break;case"=":s+="(?=",n+=3,s+=i()+")";break;case"!":a=n,n+=3,i(),s+=t.substr(a,n-a);break;case"<":switch(t[n+3]){case"=":case"!":a=n,n+=4,i(),s+=t.substr(a,n-a);break;default:o(t.indexOf(">",n)-n+1),s+=i()+"|$)";break}break}else o(1),s+=i()+"|$)";break;case")":return++n,s;default:l(1);break}return s}return new RegExp(i(),r.flags)}function ic(r){return r.rules.find(e=>Ce(e)&&e.entry)}function sc(r){return r.rules.filter(e=>je(e)&&e.hidden)}function pi(r,e){let t=new Set,n=ic(r);if(!n)return new Set(r.rules);let i=[n].concat(sc(r));for(let a of i)ac(a,t,e);let s=new Set;for(let a of r.rules)(t.has(a.name)||je(a)&&a.hidden)&&s.add(a);return s}function ac(r,e,t){e.add(r.name),ct(r).forEach(n=>{if(rt(n)||t&&Ps(n)){let i=n.rule.ref;i&&!e.has(i.name)&&ac(i,e,t)}})}function qo(r){if(r.terminal)return r.terminal;if(r.type.ref){let e=Bs(r.type.ref);return e?.terminal}}function Xo(r){return r.hidden&&!mn(yn(r))}function Yo(r,e){return!r||!e?[]:Jo(r,e,r.astNode,!0)}function mi(r,e,t){if(!r||!e)return;let n=Jo(r,e,r.astNode,!0);if(n.length!==0)return t!==void 0?t=Math.max(0,Math.min(t,n.length-1)):t=0,n[t]}function Jo(r,e,t,n){if(!n){let i=nr(r.grammarSource,tt);if(i&&i.feature===e)return[r]}return et(r)&&r.astNode===t?r.content.flatMap(i=>Jo(i,e,t,!1)):[]}function Yh(r,e){return r?Zo(r,e,r?.astNode):[]}function Qo(r,e,t){if(!r)return;let n=Zo(r,e,r?.astNode);if(n.length!==0)return t!==void 0?t=Math.max(0,Math.min(t,n.length-1)):t=0,n[t]}function Zo(r,e,t){if(r.astNode!==t)return[];if(Xe(r.grammarSource)&&r.grammarSource.value===e)return[r];let n=Qt(r).iterator(),i,s=[];do if(i=n.next(),!i.done){let a=i.value;a.astNode===t?Xe(a.grammarSource)&&a.grammarSource.value===e&&s.push(a):n.prune()}while(!i.done);return s}function el(r){var e;let t=r.astNode;for(;t===((e=r.container)===null||e===void 0?void 0:e.astNode);){let n=nr(r.grammarSource,tt);if(n)return n;r=r.container}}function Bs(r){let e=r;return ws(e)&&(kt(e.$container)?e=e.$container.$container:Ce(e.$container)?e=e.$container:ut(e.$container)),oc(r,e,new Map)}function oc(r,e,t){var n;function i(s,a){let o;return nr(s,tt)||(o=oc(a,a,t)),t.set(r,o),o}if(t.has(r))return t.get(r);t.set(r,void 0);for(let s of ct(e)){if(tt(s)&&s.feature.toLowerCase()==="name")return t.set(r,s),s;if(rt(s)&&Ce(s.rule.ref))return i(s,s.rule.ref);if(Ls(s)&&(!((n=s.typeRef)===null||n===void 0)&&n.ref))return i(s,s.typeRef.ref)}}function lc(r){let e=r.$container;if(Gt(e)){let t=e.elements,n=t.indexOf(r);for(let i=n-1;i>=0;i--){let s=t[i];if(kt(s))return s;{let a=ct(t[i]).find(kt);if(a)return a}}}if(ai(e))return lc(e)}function Jh(r,e){return r==="?"||r==="*"||Gt(e)&&!!e.guardCondition}function Qh(r){return r==="*"||r==="+"}function Zh(r){return r==="+="}function gi(r){return uc(r,new Set)}function uc(r,e){if(e.has(r))return!0;e.add(r);for(let t of ct(r))if(rt(t)){if(!t.rule.ref||Ce(t.rule.ref)&&!uc(t.rule.ref,e))return!1}else{if(tt(t))return!1;if(kt(t))return!1}return!!r.definition}function ep(r){return zo(r.type,new Set)}function zo(r,e){if(e.has(r))return!0;if(e.add(r),Ro(r))return!1;if($o(r))return!1;if(No(r))return r.types.every(t=>zo(t,e));if(Ls(r)){if(r.primitiveType!==void 0)return!0;if(r.stringType!==void 0)return!0;if(r.typeRef!==void 0){let t=r.typeRef.ref;return oi(t)?zo(t.type,e):!1}else return!1}else return!1}function gn(r){if(r.inferredType)return r.inferredType.name;if(r.dataType)return r.dataType;if(r.returnType){let e=r.returnType.ref;if(e){if(Ce(e))return e.name;if(_s(e)||oi(e))return e.name}}}function yi(r){var e;if(Ce(r))return gi(r)?r.name:(e=gn(r))!==null&&e!==void 0?e:r.name;if(_s(r)||oi(r)||Io(r))return r.name;if(kt(r)){let t=cc(r);if(t)return t}else if(ws(r))return r.name;throw new Error("Cannot get name of Unknown Type")}function cc(r){var e;if(r.inferredType)return r.inferredType.name;if(!((e=r.type)===null||e===void 0)&&e.ref)return yi(r.type.ref)}function tp(r){var e,t,n;return je(r)?(t=(e=r.type)===null||e===void 0?void 0:e.name)!==null&&t!==void 0?t:"string":gi(r)?r.name:(n=gn(r))!==null&&n!==void 0?n:r.name}function tl(r){var e,t,n;return je(r)?(t=(e=r.type)===null||e===void 0?void 0:e.name)!==null&&t!==void 0?t:"string":(n=gn(r))!==null&&n!==void 0?n:r.name}function yn(r){let e={s:!1,i:!1,u:!1},t=Tn(r.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(t,n)}var rl=/[\s\S]/.source;function Tn(r,e){if(Lo(r))return rp(r);if(Oo(r))return np(r);if(Co(r))return ap(r);if(Ps(r)){let t=r.rule.ref;if(!t)throw new Error("Missing rule reference.");return $t(Tn(t.definition),{cardinality:r.cardinality,lookahead:r.lookahead})}else{if(wo(r))return sp(r);if(Po(r))return ip(r);if(_o(r)){let t=r.regex.lastIndexOf("/"),n=r.regex.substring(1,t),i=r.regex.substring(t+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),$t(n,{cardinality:r.cardinality,lookahead:r.lookahead,wrap:!1})}else{if(bo(r))return $t(rl,{cardinality:r.cardinality,lookahead:r.lookahead});throw new Error(`Invalid terminal element: ${r?.$type}`)}}}function rp(r){return $t(r.elements.map(e=>Tn(e)).join("|"),{cardinality:r.cardinality,lookahead:r.lookahead})}function np(r){return $t(r.elements.map(e=>Tn(e)).join(""),{cardinality:r.cardinality,lookahead:r.lookahead})}function ip(r){return $t(`${rl}*?${Tn(r.terminal)}`,{cardinality:r.cardinality,lookahead:r.lookahead})}function sp(r){return $t(`(?!${Tn(r.terminal)})${rl}*?`,{cardinality:r.cardinality,lookahead:r.lookahead})}function ap(r){return r.right?$t(`[${Ho(r.left)}-${Ho(r.right)}]`,{cardinality:r.cardinality,lookahead:r.lookahead,wrap:!1}):$t(Ho(r.left),{cardinality:r.cardinality,lookahead:r.lookahead,wrap:!1})}function Ho(r){return or(r.value)}function $t(r,e){var t;return(e.wrap!==!1||e.lookahead)&&(r=`(${(t=e.lookahead)!==null&&t!==void 0?t:""}${r})`),e.cardinality?`${r}${e.cardinality}`:r}function nl(r){let e=[],t=r.Grammar;for(let n of t.rules)je(n)&&Xo(n)&&Ko(yn(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:Ns}}function Rn(r){console&&console.error&&console.error(`Error: ${r}`)}function Ti(r){console&&console.warn&&console.warn(`Warning: ${r}`)}function Ri(r){let e=new Date().getTime(),t=r();return{time:new Date().getTime()-e,value:t}}function xi(r){function e(){}e.prototype=r;let t=new e;function n(){return typeof t.bar}return n(),n(),r;(0,eval)(r)}function op(r){return lp(r)?r.LABEL:r.name}function lp(r){return Ie(r.LABEL)&&r.LABEL!==""}var He=class{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),k(this.definition,t=>{t.accept(e)})}},j=class extends He{constructor(e){super([]),this.idx=1,ve(this,Ke(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},be=class extends He{constructor(e){super(e.definition),this.orgText="",ve(this,Ke(e,t=>t!==void 0))}},Y=class extends He{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ve(this,Ke(e,t=>t!==void 0))}},H=class extends He{constructor(e){super(e.definition),this.idx=1,ve(this,Ke(e,t=>t!==void 0))}},J=class extends He{constructor(e){super(e.definition),this.idx=1,ve(this,Ke(e,t=>t!==void 0))}},Q=class extends He{constructor(e){super(e.definition),this.idx=1,ve(this,Ke(e,t=>t!==void 0))}},F=class extends He{constructor(e){super(e.definition),this.idx=1,ve(this,Ke(e,t=>t!==void 0))}},z=class extends He{constructor(e){super(e.definition),this.idx=1,ve(this,Ke(e,t=>t!==void 0))}},q=class extends He{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ve(this,Ke(e,t=>t!==void 0))}},M=class{constructor(e){this.idx=1,ve(this,Ke(e,t=>t!==void 0))}accept(e){e.visit(this)}};function Ks(r){return x(r,xn)}function xn(r){function e(t){return x(t,xn)}if(r instanceof j){let t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return Ie(r.label)&&(t.label=r.label),t}else{if(r instanceof Y)return{type:"Alternative",definition:e(r.definition)};if(r instanceof H)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof J)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof Q)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:xn(new M({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof z)return{type:"RepetitionWithSeparator",idx:r.idx,separator:xn(new M({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof F)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof q)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof M){let t={type:"Terminal",name:r.terminalType.name,label:op(r.terminalType),idx:r.idx};Ie(r.label)&&(t.terminalLabel=r.label);let n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(t.pattern=Ze(n)?n.source:n),t}else{if(r instanceof be)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}var Me=class{visit(e){let t=e;switch(t.constructor){case j:return this.visitNonTerminal(t);case Y:return this.visitAlternative(t);case H:return this.visitOption(t);case J:return this.visitRepetitionMandatory(t);case Q:return this.visitRepetitionMandatoryWithSeparator(t);case z:return this.visitRepetitionWithSeparator(t);case F:return this.visitRepetition(t);case q:return this.visitAlternation(t);case M:return this.visitTerminal(t);case be:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};function il(r){return r instanceof Y||r instanceof H||r instanceof F||r instanceof J||r instanceof Q||r instanceof z||r instanceof M||r instanceof be}function lr(r,e=[]){return r instanceof H||r instanceof F||r instanceof z?!0:r instanceof q?$s(r.definition,n=>lr(n,e)):r instanceof j&&ae(e,r)?!1:r instanceof He?(r instanceof j&&e.push(r),Oe(r.definition,n=>lr(n,e))):!1}function sl(r){return r instanceof q}function Be(r){if(r instanceof j)return"SUBRULE";if(r instanceof H)return"OPTION";if(r instanceof q)return"OR";if(r instanceof J)return"AT_LEAST_ONE";if(r instanceof Q)return"AT_LEAST_ONE_SEP";if(r instanceof z)return"MANY_SEP";if(r instanceof F)return"MANY";if(r instanceof M)return"CONSUME";throw Error("non exhaustive match")}var It=class{walk(e,t=[]){k(e.definition,(n,i)=>{let s=he(e.definition,i+1);if(n instanceof j)this.walkProdRef(n,s,t);else if(n instanceof M)this.walkTerminal(n,s,t);else if(n instanceof Y)this.walkFlat(n,s,t);else if(n instanceof H)this.walkOption(n,s,t);else if(n instanceof J)this.walkAtLeastOne(n,s,t);else if(n instanceof Q)this.walkAtLeastOneSep(n,s,t);else if(n instanceof z)this.walkManySep(n,s,t);else if(n instanceof F)this.walkMany(n,s,t);else if(n instanceof q)this.walkOr(n,s,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,n){}walkProdRef(e,t,n){}walkFlat(e,t,n){let i=t.concat(n);this.walk(e,i)}walkOption(e,t,n){let i=t.concat(n);this.walk(e,i)}walkAtLeastOne(e,t,n){let i=[new H({definition:e.definition})].concat(t,n);this.walk(e,i)}walkAtLeastOneSep(e,t,n){let i=fc(e,t,n);this.walk(e,i)}walkMany(e,t,n){let i=[new H({definition:e.definition})].concat(t,n);this.walk(e,i)}walkManySep(e,t,n){let i=fc(e,t,n);this.walk(e,i)}walkOr(e,t,n){let i=t.concat(n);k(e.definition,s=>{let a=new Y({definition:[s]});this.walk(a,i)})}};function fc(r,e,t){return[new H({definition:[new M({terminalType:r.separator})].concat(r.definition)})].concat(e,t)}function ur(r){if(r instanceof j)return ur(r.referencedRule);if(r instanceof M)return fp(r);if(il(r))return up(r);if(sl(r))return cp(r);throw Error("non exhaustive match")}function up(r){let e=[],t=r.definition,n=0,i=t.length>n,s,a=!0;for(;i&&a;)s=t[n],a=lr(s),e=e.concat(ur(s)),n=n+1,i=t.length>n;return Jn(e)}function cp(r){let e=x(r.definition,t=>ur(t));return Jn(de(e))}function fp(r){return[r.terminalType]}var Vs="_~IN~_";var al=class extends It{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,n){}walkProdRef(e,t,n){let i=dp(e.referencedRule,e.idx)+this.topProd.name,s=t.concat(n),a=new Y({definition:s}),o=ur(a);this.follows[i]=o}};function dc(r){let e={};return k(r,t=>{let n=new al(t).startWalking();ve(e,n)}),e}function dp(r,e){return r.name+e+Vs}var js={},hp=new sr;function En(r){let e=r.toString();if(js.hasOwnProperty(e))return js[e];{let t=hp.pattern(e);return js[e]=t,t}}function hc(){js={}}var mc="Complement Sets are not supported for first char optimization",Ei=`Unable to use "first char" lexer optimizations:
+`;function gc(r,e=!1){try{let t=En(r);return ol(t.value,{},t.flags.ignoreCase)}catch(t){if(t.message===mc)e&&Ti(`${Ei} Unable to optimize: < ${r.toString()} >
+ Complement Sets cannot be automatically optimized.
+ This will disable the lexer's first char optimizations.
+ See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n=`
+ This will disable the lexer's first char optimizations.
+ See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Rn(`${Ei}
+ Failed parsing: < ${r.toString()} >
+ Using the @chevrotain/regexp-to-ast library
+ Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function ol(r,e,t){switch(r.type){case"Disjunction":for(let i=0;i{if(typeof l=="number")Hs(l,e,t);else{let u=l;if(t===!0)for(let c=u.from;c<=u.to;c++)Hs(c,e,t);else{for(let c=u.from;c<=u.to&&c=An){let c=u.from>=An?u.from:An,f=u.to,d=dt(c),h=dt(f);for(let m=d;m<=h;m++)e[m]=m}}}});break;case"Group":ol(a.value,e,t);break;default:throw Error("Non Exhaustive Match")}let o=a.quantifier!==void 0&&a.quantifier.atLeast===0;if(a.type==="Group"&&ll(a)===!1||a.type!=="Group"&&o===!1)break}break;default:throw Error("non exhaustive match!")}return te(e)}function Hs(r,e,t){let n=dt(r);e[n]=n,t===!0&&pp(r,e)}function pp(r,e){let t=String.fromCharCode(r),n=t.toUpperCase();if(n!==t){let i=dt(n.charCodeAt(0));e[i]=i}else{let i=t.toLowerCase();if(i!==t){let s=dt(i.charCodeAt(0));e[s]=s}}}function pc(r,e){return vt(r.value,t=>{if(typeof t=="number")return ae(e,t);{let n=t;return vt(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function ll(r){let e=r.quantifier;return e&&e.atLeast===0?!0:r.value?me(r.value)?Oe(r.value,ll):ll(r.value):!1}var ul=class extends ft{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){ae(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?pc(e,this.targetCharCodes)===void 0&&(this.found=!0):pc(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};function zs(r,e){if(e instanceof RegExp){let t=En(e),n=new ul(r);return n.visit(t),n.found}else return vt(e,t=>ae(r,t.charCodeAt(0)))!==void 0}var cr="PATTERN",vn="defaultMode",qs="modes",fl=typeof new RegExp("(?:)").sticky=="boolean";function Rc(r,e){e=Yn(e,{useSticky:fl,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",`
+`],tracer:(E,T)=>T()});let t=e.tracer;t("initCharCodeToOptimizedIndexMap",()=>{Lp()});let n;t("Reject Lexer.NA",()=>{n=Xt(r,E=>E[cr]===ie.NA)});let i=!1,s;t("Transform Patterns",()=>{i=!1,s=x(n,E=>{let T=E[cr];if(Ze(T)){let O=T.source;return O.length===1&&O!=="^"&&O!=="$"&&O!=="."&&!T.ignoreCase?O:O.length===2&&O[0]==="\\"&&!ae(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],O[1])?O[1]:e.useSticky?Tc(T):yc(T)}else{if(at(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let O=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),P=new RegExp(O);return e.useSticky?Tc(P):yc(P)}}else throw Error("non exhaustive match")}})});let a,o,l,u,c;t("misc mapping",()=>{a=x(n,E=>E.tokenTypeIdx),o=x(n,E=>{let T=E.GROUP;if(T!==ie.SKIPPED){if(Ie(T))return T;if(Pe(T))return!1;throw Error("non exhaustive match")}}),l=x(n,E=>{let T=E.LONGER_ALT;if(T)return me(T)?x(T,P=>fo(n,P)):[fo(n,T)]}),u=x(n,E=>E.PUSH_MODE),c=x(n,E=>$(E,"POP_MODE"))});let f;t("Line Terminator Handling",()=>{let E=Nc(e.lineTerminatorCharacters);f=x(n,T=>!1),e.positionTracking!=="onlyOffset"&&(f=x(n,T=>$(T,"LINE_BREAKS")?!!T.LINE_BREAKS:Ic(T,E)===!1&&zs(E,T.PATTERN)))});let d,h,m,g;t("Misc Mapping #2",()=>{d=x(n,kc),h=x(s,wp),m=le(n,(E,T)=>{let O=T.GROUP;return Ie(O)&&O!==ie.SKIPPED&&(E[O]=[]),E},{}),g=x(s,(E,T)=>({pattern:s[T],longerAlt:l[T],canLineTerminator:f[T],isCustom:d[T],short:h[T],group:o[T],push:u[T],pop:c[T],tokenTypeIdx:a[T],tokenType:n[T]}))});let A=!0,R=[];return e.safeMode||t("First Char Optimization",()=>{R=le(n,(E,T,O)=>{if(typeof T.PATTERN=="string"){let P=T.PATTERN.charCodeAt(0),ye=dt(P);cl(E,ye,g[O])}else if(me(T.START_CHARS_HINT)){let P;k(T.START_CHARS_HINT,ye=>{let vr=typeof ye=="string"?ye.charCodeAt(0):ye,Ee=dt(vr);P!==Ee&&(P=Ee,cl(E,Ee,g[O]))})}else if(Ze(T.PATTERN))if(T.PATTERN.unicode)A=!1,e.ensureOptimizations&&Rn(`${Ei} Unable to analyze < ${T.PATTERN.toString()} > pattern.
+ The regexp unicode flag is not currently supported by the regexp-to-ast library.
+ This will disable the lexer's first char optimizations.
+ For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let P=gc(T.PATTERN,e.ensureOptimizations);b(P)&&(A=!1),k(P,ye=>{cl(E,ye,g[O])})}else e.ensureOptimizations&&Rn(`${Ei} TokenType: <${T.name}> is using a custom token pattern without providing parameter.
+ This will disable the lexer's first char optimizations.
+ For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),A=!1;return E},[])}),{emptyGroups:m,patternIdxToConfig:g,charCodeToPatternIdxToConfig:R,hasCustom:i,canBeOptimized:A}}function xc(r,e){let t=[],n=gp(r);t=t.concat(n.errors);let i=yp(n.valid),s=i.valid;return t=t.concat(i.errors),t=t.concat(mp(s)),t=t.concat($p(s)),t=t.concat(Ip(s,e)),t=t.concat(Np(s)),t}function mp(r){let e=[],t=Re(r,n=>Ze(n[cr]));return e=e.concat(Rp(t)),e=e.concat(Ap(t)),e=e.concat(vp(t)),e=e.concat(kp(t)),e=e.concat(xp(t)),e}function gp(r){let e=Re(r,i=>!$(i,cr)),t=x(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:ne.MISSING_PATTERN,tokenTypes:[i]})),n=qt(r,e);return{errors:t,valid:n}}function yp(r){let e=Re(r,i=>{let s=i[cr];return!Ze(s)&&!at(s)&&!$(s,"exec")&&!Ie(s)}),t=x(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ne.INVALID_PATTERN,tokenTypes:[i]})),n=qt(r,e);return{errors:t,valid:n}}var Tp=/[^\\][$]/;function Rp(r){class e extends ft{constructor(){super(...arguments),this.found=!1}visitEndAnchor(s){this.found=!0}}let t=Re(r,i=>{let s=i.PATTERN;try{let a=En(s),o=new e;return o.visit(a),o.found}catch{return Tp.test(s.source)}});return x(t,i=>({message:`Unexpected RegExp Anchor Error:
+ Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$'
+ See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ne.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function xp(r){let e=Re(r,n=>n.PATTERN.test(""));return x(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:ne.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}var Ep=/[^\\[][\^]|^\^/;function Ap(r){class e extends ft{constructor(){super(...arguments),this.found=!1}visitStartAnchor(s){this.found=!0}}let t=Re(r,i=>{let s=i.PATTERN;try{let a=En(s),o=new e;return o.visit(a),o.found}catch{return Ep.test(s.source)}});return x(t,i=>({message:`Unexpected RegExp Anchor Error:
+ Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^'
+ See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ne.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function vp(r){let e=Re(r,n=>{let i=n[cr];return i instanceof RegExp&&(i.multiline||i.global)});return x(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ne.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function kp(r){let e=[],t=x(r,s=>le(r,(a,o)=>(s.PATTERN.source===o.PATTERN.source&&!ae(e,o)&&o.PATTERN!==ie.NA&&(e.push(o),a.push(o)),a),[]));t=Et(t);let n=Re(t,s=>s.length>1);return x(n,s=>{let a=x(s,l=>l.name);return{message:`The same RegExp pattern ->${ke(s).PATTERN}<-has been used in all of the following Token Types: ${a.join(", ")} <-`,type:ne.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}})}function $p(r){let e=Re(r,n=>{if(!$(n,"GROUP"))return!1;let i=n.GROUP;return i!==ie.SKIPPED&&i!==ie.NA&&!Ie(i)});return x(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ne.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function Ip(r,e){let t=Re(r,i=>i.PUSH_MODE!==void 0&&!ae(e,i.PUSH_MODE));return x(t,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:ne.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function Np(r){let e=[],t=le(r,(n,i,s)=>{let a=i.PATTERN;return a===ie.NA||(Ie(a)?n.push({str:a,idx:s,tokenType:i}):Ze(a)&&Sp(a)&&n.push({str:a.source,idx:s,tokenType:i})),n},[]);return k(r,(n,i)=>{k(t,({str:s,idx:a,tokenType:o})=>{if(i${o.name}<- can never be matched.
+Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition.
+See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:l,type:ne.UNREACHABLE_PATTERN,tokenTypes:[n,o]})}})}),e}function Cp(r,e){if(Ze(e)){let t=e.exec(r);return t!==null&&t.index===0}else{if(at(e))return e(r,0,[],{});if($(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function Sp(r){return vt([".","\\","[","]","|","^","$","(",")","?","*","+","{"],t=>r.source.indexOf(t)!==-1)===void 0}function yc(r){let e=r.ignoreCase?"i":"";return new RegExp(`^(?:${r.source})`,e)}function Tc(r){let e=r.ignoreCase?"iy":"y";return new RegExp(`${r.source}`,e)}function Ec(r,e,t){let n=[];return $(r,vn)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+vn+`> property in its definition
+`,type:ne.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),$(r,qs)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+qs+`> property in its definition
+`,type:ne.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),$(r,qs)&&$(r,vn)&&!$(r.modes,r.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${vn}: <${r.defaultMode}>which does not exist
+`,type:ne.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),$(r,qs)&&k(r.modes,(i,s)=>{k(i,(a,o)=>{if(Pe(a))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${s}> at index: <${o}>
+`,type:ne.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if($(a,"LONGER_ALT")){let l=me(a.LONGER_ALT)?a.LONGER_ALT:[a.LONGER_ALT];k(l,u=>{!Pe(u)&&!ae(i,u)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${u.name}> on token <${a.name}> outside of mode <${s}>
+`,type:ne.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Ac(r,e,t){let n=[],i=!1,s=Et(de(te(r.modes))),a=Xt(s,l=>l[cr]===ie.NA),o=Nc(t);return e&&k(a,l=>{let u=Ic(l,o);if(u!==!1){let f={message:_p(l,u),type:u.issue,tokenType:l};n.push(f)}else $(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(i=!0):zs(o,l.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found.
+ This Lexer has been defined to track line and column information,
+ But none of the Token Types can be identified as matching a line terminator.
+ See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS
+ for details.`,type:ne.NO_LINE_BREAKS_FLAGS}),n}function vc(r){let e={},t=xt(r);return k(t,n=>{let i=r[n];if(me(i))e[n]=[];else throw Error("non exhaustive match")}),e}function kc(r){let e=r.PATTERN;if(Ze(e))return!1;if(at(e))return!0;if($(e,"exec"))return!0;if(Ie(e))return!1;throw Error("non exhaustive match")}function wp(r){return Ie(r)&&r.length===1?r.charCodeAt(0):!1}var $c={test:function(r){let e=r.length;for(let t=this.lastIndex;t Token Type
+ Root cause: ${e.errMsg}.
+ For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===ne.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option.
+ The problem is in the <${r.name}> Token Type
+ For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Nc(r){return x(r,t=>Ie(t)?t.charCodeAt(0):t)}function cl(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}var An=256,Xs=[];function dt(r){return r255?255+~~(r/255):r}}function Nt(r,e){let t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}function kn(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}var Cc=1,wc={};function Ct(r){let e=Op(r);Pp(e),Mp(e),bp(e),k(e,t=>{t.isParent=t.categoryMatches.length>0})}function Op(r){let e=ee(r),t=r,n=!0;for(;n;){t=Et(de(x(t,s=>s.CATEGORIES)));let i=qt(t,e);e=e.concat(i),b(i)?n=!1:t=i}return e}function Pp(r){k(r,e=>{dl(e)||(wc[Cc]=e,e.tokenTypeIdx=Cc++),Sc(e)&&!me(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Sc(e)||(e.CATEGORIES=[]),Dp(e)||(e.categoryMatches=[]),Fp(e)||(e.categoryMatchesMap={})})}function bp(r){k(r,e=>{e.categoryMatches=[],k(e.categoryMatchesMap,(t,n)=>{e.categoryMatches.push(wc[n].tokenTypeIdx)})})}function Mp(r){k(r,e=>{_c([],e)})}function _c(r,e){k(r,t=>{e.categoryMatchesMap[t.tokenTypeIdx]=!0}),k(e.CATEGORIES,t=>{let n=r.concat(e);ae(n,t)||_c(n,t)})}function dl(r){return $(r,"tokenTypeIdx")}function Sc(r){return $(r,"CATEGORIES")}function Dp(r){return $(r,"categoryMatches")}function Fp(r){return $(r,"categoryMatchesMap")}function Lc(r){return $(r,"tokenTypeIdx")}var $n={buildUnableToPopLexerModeMessage(r){return`Unable to pop Lexer Mode after encountering Token ->${r.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(r,e,t,n,i){return`unexpected character: ->${r.charAt(e)}<- at offset: ${e}, skipped ${t} characters.`}};var ne;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",r[r.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(ne||(ne={}));var Ai={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[`
+`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:$n,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Ai);var ie=class{constructor(e,t=Ai){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,s)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let a=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:o,value:l}=Ri(s),u=o>10?console.warn:console.log;return this.traceInitIndent time: ${o}ms`),this.traceInitIndent--,l}else return s()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
+a boolean 2nd argument is no longer supported`);this.config=ve({},Ai,t);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,s=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Ai.lineTerminatorsPattern)this.config.lineTerminatorsPattern=$c;else if(this.config.lineTerminatorCharacters===Ai.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config.
+ For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),me(e)?i={modes:{defaultMode:ee(e)},defaultMode:vn}:(s=!1,i=ee(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Ec(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Ac(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},k(i.modes,(o,l)=>{i.modes[l]=Xt(o,u=>Pe(u))});let a=xt(i.modes);if(k(i.modes,(o,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(xc(o,a))}),b(this.lexerDefinitionErrors)){Ct(o);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=Rc(o,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=ve({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=i.defaultMode,!b(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=x(this.lexerDefinitionErrors,u=>u.message).join(`-----------------------
+`);throw new Error(`Errors detected in definition of Lexer:
+`+l)}k(this.lexerDefinitionWarning,o=>{Ti(o.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(fl?(this.chopInput=co,this.match=this.matchWithTest):(this.updateLastIndex=fe,this.match=this.matchWithExec),s&&(this.handleModes=fe),this.trackStartLines===!1&&(this.computeNewColumn=co),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=fe),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let o=le(this.canModeBeOptimized,(l,u,c)=>(u===!1&&l.push(c),l),[]);if(t.ensureOptimizations&&!b(o))throw Error(`Lexer Modes: < ${o.join(", ")} > cannot be optimized.
+ Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
+ Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{hc()}),this.TRACE_INIT("toFastProperties",()=>{xi(this)})})}tokenize(e,t=this.defaultMode){if(!b(this.lexerDefinitionErrors)){let i=x(this.lexerDefinitionErrors,s=>s.message).join(`-----------------------
+`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer:
+`+i)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let n,i,s,a,o,l,u,c,f,d,h,m,g,A,R,E,T=e,O=T.length,P=0,ye=0,vr=this.hasCustom?0:Math.floor(e.length/10),Ee=new Array(vr),bt=[],yt=this.trackStartLines?1:void 0,v=this.trackStartLines?1:void 0,y=vc(this.emptyGroups),N=this.trackStartLines,I=this.config.lineTerminatorsPattern,K=0,L=[],_=[],_e=[],Le=[];Object.freeze(Le);let Z;function jt(){return L}function Gu(Ae){let qe=dt(Ae),kr=_[qe];return kr===void 0?Le:kr}let Ah=Ae=>{if(_e.length===1&&Ae.tokenType.PUSH_MODE===void 0){let qe=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(Ae);bt.push({offset:Ae.startOffset,line:Ae.startLine,column:Ae.startColumn,length:Ae.image.length,message:qe})}else{_e.pop();let qe=At(_e);L=this.patternIdxToConfig[qe],_=this.charCodeToPatternIdxToConfig[qe],K=L.length;let kr=this.canModeBeOptimized[qe]&&this.config.safeMode===!1;_&&kr?Z=Gu:Z=jt}};function Uu(Ae){_e.push(Ae),_=this.charCodeToPatternIdxToConfig[Ae],L=this.patternIdxToConfig[Ae],K=L.length,K=L.length;let qe=this.canModeBeOptimized[Ae]&&this.config.safeMode===!1;_&&qe?Z=Gu:Z=jt}Uu.call(this,t);let Qe,Bu=this.config.recoveryEnabled;for(;Pl.length){l=a,u=c,Qe=Rt;break}}}break}}if(l!==null){if(f=l.length,d=Qe.group,d!==void 0&&(h=Qe.tokenTypeIdx,m=this.createTokenInstance(l,P,h,Qe.tokenType,yt,v,f),this.handlePayload(m,u),d===!1?ye=this.addToken(Ee,ye,m):y[d].push(m)),e=this.chopInput(e,f),P=P+f,v=this.computeNewColumn(v,f),N===!0&&Qe.canLineTerminator===!0){let We=0,Tt,Mt;I.lastIndex=0;do Tt=I.test(l),Tt===!0&&(Mt=I.lastIndex-1,We++);while(Tt===!0);We!==0&&(yt=yt+We,v=f-Mt,this.updateTokenEndLineColumnLocation(m,d,Mt,We,yt,v,f))}this.handleModes(Qe,Ah,Uu,m)}else{let We=P,Tt=yt,Mt=v,Rt=Bu===!1;for(;Rt===!1&&P ${St(r)} <--`:`token of type --> ${r.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:r,ruleName:e}){return"Redundant input, expecting EOF but found: "+r.image},buildNoViableAltMessage({expectedPathsPerAlt:r,actual:e,previous:t,customUserDescription:n,ruleName:i}){let s="Expecting: ",o=`
+but found: '`+ke(e).image+"'";if(n)return s+n+o;{let l=le(r,(d,h)=>d.concat(h),[]),u=x(l,d=>`[${x(d,h=>St(h)).join(", ")}]`),f=`one of these possible Token sequences:
+${x(u,(d,h)=>` ${h+1}. ${d}`).join(`
+`)}`;return s+f+o}},buildEarlyExitMessage({expectedIterationPaths:r,actual:e,customUserDescription:t,ruleName:n}){let i="Expecting: ",a=`
+but found: '`+ke(e).image+"'";if(t)return i+t+a;{let l=`expecting at least one iteration which starts with one of these possible Token sequences::
+ <${x(r,u=>`[${x(u,c=>St(c)).join(",")}]`).join(" ,")}>`;return i+l+a}}};Object.freeze(_t);var Bc={buildRuleNotFoundError(r,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<-
+inside top level rule: ->`+r.name+"<-"}},nt={buildDuplicateFoundError(r,e){function t(c){return c instanceof M?c.terminalType.name:c instanceof j?c.nonTerminalName:""}let n=r.name,i=ke(e),s=i.idx,a=Be(i),o=t(i),l=s>0,u=`->${a}${l?s:""}<- ${o?`with argument: ->${o}<-`:""}
+ appears more than once (${e.length} times) in the top level rule: ->${n}<-.
+ For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES
+ `;return u=u.replace(/[ \t]+/g," "),u=u.replace(/\s\s+/g,`
+`),u},buildNamespaceConflictError(r){return`Namespace conflict found in grammar.
+The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${r.name}>.
+To resolve this make sure each Terminal and Non-Terminal names are unique
+This is easy to accomplish by using the convention that Terminal names start with an uppercase letter
+and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(r){let e=x(r.prefixPath,i=>St(i)).join(", "),t=r.alternation.idx===0?"":r.alternation.idx;return`Ambiguous alternatives: <${r.ambiguityIndices.join(" ,")}> due to common lookahead prefix
+in inside <${r.topLevelRule.name}> Rule,
+<${e}> may appears as a prefix path in all these alternatives.
+See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX
+For Further details.`},buildAlternationAmbiguityError(r){let e=x(r.prefixPath,i=>St(i)).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,n=`Ambiguous Alternatives Detected: <${r.ambiguityIndices.join(" ,")}> in inside <${r.topLevelRule.name}> Rule,
+<${e}> may appears as a prefix path in all these alternatives.
+`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
+For Further details.`,n},buildEmptyRepetitionError(r){let e=Be(r.repetition);return r.repetition.idx!==0&&(e+=r.repetition.idx),`The repetition <${e}> within Rule <${r.topLevelRule.name}> can never consume any tokens.
+This could lead to an infinite loop.`},buildTokenNameError(r){return"deprecated"},buildEmptyAlternationError(r){return`Ambiguous empty alternative: <${r.emptyChoiceIdx+1}> in inside <${r.topLevelRule.name}> Rule.
+Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(r){return`An Alternation cannot have more than 256 alternatives:
+ inside <${r.topLevelRule.name}> Rule.
+ has ${r.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(r){let e=r.topLevelRule.name,t=x(r.leftRecursionPath,s=>s.name),n=`${e} --> ${t.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar.
+rule: <${e}> can be invoked from itself (directly or indirectly)
+without consuming any Tokens. The grammar path that causes this is:
+ ${n}
+ To fix this refactor your grammar to remove the left recursion.
+see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(r){return"deprecated"},buildDuplicateRuleNameError(r){let e;return r.topLevelRule instanceof be?e=r.topLevelRule.name:e=r.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${r.grammarName}<-`}};function Wc(r,e){let t=new pl(r,e);return t.resolveRefs(),t.errors}var pl=class extends Me{constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){k(te(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:ge.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}};var ml=class extends It{constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=ee(this.path.ruleStack).reverse(),this.occurrenceStack=ee(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=t.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){b(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},Ys=class extends ml{constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=t.concat(n),s=new Y({definition:i});this.possibleTokTypes=ur(s),this.found=!0}}},In=class extends It{constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},Js=class extends In{walkMany(e,t,n){if(e.idx===this.occurrence){let i=ke(t.concat(n));this.result.isEndOfRule=i===void 0,i instanceof M&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,t,n)}},ki=class extends In{walkManySep(e,t,n){if(e.idx===this.occurrence){let i=ke(t.concat(n));this.result.isEndOfRule=i===void 0,i instanceof M&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,t,n)}},Qs=class extends In{walkAtLeastOne(e,t,n){if(e.idx===this.occurrence){let i=ke(t.concat(n));this.result.isEndOfRule=i===void 0,i instanceof M&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,t,n)}},$i=class extends In{walkAtLeastOneSep(e,t,n){if(e.idx===this.occurrence){let i=ke(t.concat(n));this.result.isEndOfRule=i===void 0,i instanceof M&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,t,n)}};function Zs(r,e,t=[]){t=ee(t);let n=[],i=0;function s(o){return o.concat(he(r,i+1))}function a(o){let l=Zs(s(o),e,t);return n.concat(l)}for(;t.length{b(l.definition)===!1&&(n=a(l.definition))}),n;if(o instanceof M)t.push(o.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:t,suffixDef:he(r,i)}),n}function ea(r,e,t,n){let i="EXIT_NONE_TERMINAL",s=[i],a="EXIT_ALTERNATIVE",o=!1,l=e.length,u=l-n-1,c=[],f=[];for(f.push({idx:-1,def:r,ruleStack:[],occurrenceStack:[]});!b(f);){let d=f.pop();if(d===a){o&&At(f).idx<=u&&f.pop();continue}let h=d.def,m=d.idx,g=d.ruleStack,A=d.occurrenceStack;if(b(h))continue;let R=h[0];if(R===i){let E={idx:m,def:he(h),ruleStack:Dt(g),occurrenceStack:Dt(A)};f.push(E)}else if(R instanceof M)if(m=0;E--){let T=R.definition[E],O={idx:m,def:T.definition.concat(he(h)),ruleStack:g,occurrenceStack:A};f.push(O),f.push(a)}else if(R instanceof Y)f.push({idx:m,def:R.definition.concat(he(h)),ruleStack:g,occurrenceStack:A});else if(R instanceof be)f.push(Bp(R,m,g,A));else throw Error("non exhaustive match")}return c}function Bp(r,e,t,n){let i=ee(t);i.push(r.name);let s=ee(n);return s.push(1),{idx:e,def:r.definition,ruleStack:i,occurrenceStack:s}}var se;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(se||(se={}));function Ii(r){if(r instanceof H||r==="Option")return se.OPTION;if(r instanceof F||r==="Repetition")return se.REPETITION;if(r instanceof J||r==="RepetitionMandatory")return se.REPETITION_MANDATORY;if(r instanceof Q||r==="RepetitionMandatoryWithSeparator")return se.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof z||r==="RepetitionWithSeparator")return se.REPETITION_WITH_SEPARATOR;if(r instanceof q||r==="Alternation")return se.ALTERNATION;throw Error("non exhaustive match")}function ra(r){let{occurrence:e,rule:t,prodType:n,maxLookahead:i}=r,s=Ii(n);return s===se.ALTERNATION?Nn(e,t,i):Cn(e,t,s,i)}function Vc(r,e,t,n,i,s){let a=Nn(r,e,t),o=Yc(a)?kn:Nt;return s(a,n,o,i)}function jc(r,e,t,n,i,s){let a=Cn(r,e,i,t),o=Yc(a)?kn:Nt;return s(a[0],o,n)}function Hc(r,e,t,n){let i=r.length,s=Oe(r,a=>Oe(a,o=>o.length===1));if(e)return function(a){let o=x(a,l=>l.GATE);for(let l=0;lde(l)),o=le(a,(l,u,c)=>(k(u,f=>{$(l,f.tokenTypeIdx)||(l[f.tokenTypeIdx]=c),k(f.categoryMatches,d=>{$(l,d)||(l[d]=c)})}),l),{});return function(){let l=this.LA(1);return o[l.tokenTypeIdx]}}else return function(){for(let a=0;as.length===1),i=r.length;if(n&&!t){let s=de(r);if(s.length===1&&b(s[0].categoryMatches)){let o=s[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===o}}else{let a=le(s,(o,l,u)=>(o[l.tokenTypeIdx]=!0,k(l.categoryMatches,c=>{o[c]=!0}),o),[]);return function(){let o=this.LA(1);return a[o.tokenTypeIdx]===!0}}}else return function(){e:for(let s=0;sZs([a],1)),n=Kc(t.length),i=x(t,a=>{let o={};return k(a,l=>{let u=gl(l.partialPath);k(u,c=>{o[c]=!0})}),o}),s=t;for(let a=1;a<=e;a++){let o=s;s=Kc(o.length);for(let l=0;l{let R=gl(A.partialPath);k(R,E=>{i[l][E]=!0})})}}}}return n}function Nn(r,e,t,n){let i=new ta(r,se.ALTERNATION,n);return e.accept(i),qc(i.result,t)}function Cn(r,e,t,n){let i=new ta(r,t);e.accept(i);let s=i.result,o=new yl(e,r,t).startWalking(),l=new Y({definition:s}),u=new Y({definition:o});return qc([l,u],n)}function na(r,e){e:for(let t=0;t{let i=e[n];return t===i||i.categoryMatchesMap[t.tokenTypeIdx]})}function Yc(r){return Oe(r,e=>Oe(e,t=>Oe(t,n=>b(n.categoryMatches))))}function Jc(r){let e=r.lookaheadStrategy.validate({rules:r.rules,tokenTypes:r.tokenTypes,grammarName:r.grammarName});return x(e,t=>Object.assign({type:ge.CUSTOM_LOOKAHEAD_VALIDATION},t))}function Qc(r,e,t,n){let i=$e(r,l=>Kp(l,t)),s=Xp(r,e,t),a=$e(r,l=>Hp(l,t)),o=$e(r,l=>jp(l,r,n,t));return i.concat(s,a,o)}function Kp(r,e){let t=new Tl;r.accept(t);let n=t.allProductions,i=ju(n,Vp),s=Ke(i,o=>o.length>1);return x(te(s),o=>{let l=ke(o),u=e.buildDuplicateFoundError(r,o),c=Be(l),f={message:u,type:ge.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:c,occurrence:l.idx},d=Zc(l);return d&&(f.parameter=d),f})}function Vp(r){return`${Be(r)}_#_${r.idx}_#_${Zc(r)}`}function Zc(r){return r instanceof M?r.terminalType.name:r instanceof j?r.nonTerminalName:""}var Tl=class extends Me{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};function jp(r,e,t,n){let i=[];if(le(e,(a,o)=>o.name===r.name?a+1:a,0)>1){let a=n.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});i.push({message:a,type:ge.DUPLICATE_RULE_NAME,ruleName:r.name})}return i}function ef(r,e,t){let n=[],i;return ae(e,r)||(i=`Invalid rule override, rule: ->${r}<- cannot be overridden in the grammar: ->${t}<-as it is not defined in any of the super grammars `,n.push({message:i,type:ge.INVALID_RULE_OVERRIDE,ruleName:r})),n}function xl(r,e,t,n=[]){let i=[],s=ia(e.definition);if(b(s))return[];{let a=r.name;ae(s,r)&&i.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:n}),type:ge.LEFT_RECURSION,ruleName:a});let l=qt(s,n.concat([r])),u=$e(l,c=>{let f=ee(n);return f.push(c),xl(r,c,t,f)});return i.concat(u)}}function ia(r){let e=[];if(b(r))return e;let t=ke(r);if(t instanceof j)e.push(t.referencedRule);else if(t instanceof Y||t instanceof H||t instanceof J||t instanceof Q||t instanceof z||t instanceof F)e=e.concat(ia(t.definition));else if(t instanceof q)e=de(x(t.definition,s=>ia(s.definition)));else if(!(t instanceof M))throw Error("non exhaustive match");let n=lr(t),i=r.length>1;if(n&&i){let s=he(r);return e.concat(ia(s))}else return e}var Ni=class extends Me{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};function tf(r,e){let t=new Ni;r.accept(t);let n=t.alternations;return $e(n,s=>{let a=Dt(s.definition);return $e(a,(o,l)=>{let u=ea([o],[],Nt,1);return b(u)?[{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:s,emptyChoiceIdx:l}),type:ge.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:s.idx,alternative:l+1}]:[]})})}function rf(r,e,t){let n=new Ni;r.accept(n);let i=n.alternations;return i=Xt(i,a=>a.ignoreAmbiguities===!0),$e(i,a=>{let o=a.idx,l=a.maxLookahead||e,u=Nn(o,r,l,a),c=zp(u,a,r,t),f=qp(u,a,r,t);return c.concat(f)})}var Rl=class extends Me{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};function Hp(r,e){let t=new Ni;r.accept(t);let n=t.alternations;return $e(n,s=>s.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:s}),type:ge.TOO_MANY_ALTS,ruleName:r.name,occurrence:s.idx}]:[])}function nf(r,e,t){let n=[];return k(r,i=>{let s=new Rl;i.accept(s);let a=s.allProductions;k(a,o=>{let l=Ii(o),u=o.maxLookahead||e,c=o.idx,d=Cn(c,i,l,u)[0];if(b(de(d))){let h=t.buildEmptyRepetitionError({topLevelRule:i,repetition:o});n.push({message:h,type:ge.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function zp(r,e,t,n){let i=[],s=le(r,(o,l,u)=>(e.definition[u].ignoreAmbiguities===!0||k(l,c=>{let f=[u];k(r,(d,h)=>{u!==h&&na(d,c)&&e.definition[h].ignoreAmbiguities!==!0&&f.push(h)}),f.length>1&&!na(i,c)&&(i.push(c),o.push({alts:f,path:c}))}),o),[]);return x(s,o=>{let l=x(o.alts,c=>c+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:o.path}),type:ge.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:o.alts}})}function qp(r,e,t,n){let i=le(r,(a,o,l)=>{let u=x(o,c=>({idx:l,path:c}));return a.concat(u)},[]);return Et($e(i,a=>{if(e.definition[a.idx].ignoreAmbiguities===!0)return[];let l=a.idx,u=a.path,c=Re(i,d=>e.definition[d.idx].ignoreAmbiguities!==!0&&d.idx{let h=[d.idx+1,l+1],m=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:h,prefixPath:d.path}),type:ge.AMBIGUOUS_PREFIX_ALTS,ruleName:t.name,occurrence:m,alternatives:h}})}))}function Xp(r,e,t){let n=[],i=x(e,s=>s.name);return k(r,s=>{let a=s.name;if(ae(i,a)){let o=t.buildNamespaceConflictError(s);n.push({message:o,type:ge.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:a})}}),n}function sf(r){let e=Yn(r,{errMsgProvider:Bc}),t={};return k(r.rules,n=>{t[n.name]=n}),Wc(t,e.errMsgProvider)}function af(r){return r=Yn(r,{errMsgProvider:nt}),Qc(r.rules,r.tokenTypes,r.errMsgProvider,r.grammarName)}var of="MismatchedTokenException",lf="NoViableAltException",uf="EarlyExitException",cf="NotAllInputParsedException",ff=[of,lf,uf,cf];Object.freeze(ff);function Bt(r){return ae(ff,r.name)}var Sn=class extends Error{constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},fr=class extends Sn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=of}},Ci=class extends Sn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=lf}},Si=class extends Sn{constructor(e,t){super(e,t),this.name=cf}},wi=class extends Sn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=uf}};var El={},vl="InRuleRecoveryException",Al=class extends Error{constructor(e){super(e),this.name=vl}},sa=class{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=$(e,"recoveryEnabled")?e.recoveryEnabled:De.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Yp)}getTokenToInsert(e){let t=wt(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,n,i){let s=this.findReSyncTokenType(),a=this.exportLexerState(),o=[],l=!1,u=this.LA(1),c=this.LA(1),f=()=>{let d=this.LA(0),h=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:u,previous:d,ruleName:this.getCurrRuleFullName()}),m=new fr(h,u,this.LA(0));m.resyncedTokens=Dt(o),this.SAVE_ERROR(m)};for(;!l;)if(this.tokenMatcher(c,i)){f();return}else if(n.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(c,s)?l=!0:(c=this.SKIP_TOKEN(),this.addToResyncTokens(c,o));this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){let n=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new Al("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||b(t))return!1;let n=this.LA(1);return vt(t,s=>this.tokenMatcher(n,s))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let t=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(t);return ae(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),t=this.LA(1),n=2;for(;;){let i=vt(e,s=>vi(t,s));if(i!==void 0)return i;t=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return El;let e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return x(e,(n,i)=>i===0?El:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:t[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=x(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return de(e)}getFollowSetFromFollowKey(e){if(e===El)return[ze];let t=e.ruleName+e.idxInCallingRule+Vs+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,ze)||t.push(e),t}reSyncTo(e){let t=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,t);return Dt(t)}attemptInRepetitionRecovery(e,t,n,i,s,a,o){}getCurrentGrammarPath(e,t){let n=this.getHumanReadableRuleStack(),i=ee(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return x(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};function Yp(r,e,t,n,i,s,a){let o=this.getKeyForAutomaticLookahead(n,i),l=this.firstAfterRepMap[o];if(l===void 0){let d=this.getCurrRuleFullName(),h=this.getGAstProductions()[d];l=new s(h,i).startWalking(),this.firstAfterRepMap[o]=l}let u=l.token,c=l.occurrence,f=l.isEndOfRule;this.RULE_STACK.length===1&&f&&u===void 0&&(u=ze,c=1),!(u===void 0||c===void 0)&&this.shouldInRepetitionRecoveryBeTried(u,c,a)&&this.tryInRepetitionRecovery(r,e,t,u)}function aa(r,e,t){return t|e|r}var Lt=class{constructor(e){var t;this.maxLookahead=(t=e?.maxLookahead)!==null&&t!==void 0?t:De.maxLookahead}validate(e){let t=this.validateNoLeftRecursion(e.rules);if(b(t)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),s=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...n,...i,...s]}return t}validateNoLeftRecursion(e){return $e(e,t=>xl(t,t,nt))}validateEmptyOrAlternatives(e){return $e(e,t=>tf(t,nt))}validateAmbiguousAlternationAlternatives(e,t){return $e(e,n=>rf(n,t,nt))}validateSomeNonEmptyLookaheadPath(e,t){return nf(e,t,nt)}buildLookaheadForAlternation(e){return Vc(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,Hc)}buildLookaheadForOptional(e){return jc(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,Ii(e.prodType),zc)}};var la=class{initLooksAhead(e){this.dynamicTokensEnabled=$(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:De.dynamicTokensEnabled,this.maxLookahead=$(e,"maxLookahead")?e.maxLookahead:De.maxLookahead,this.lookaheadStrategy=$(e,"lookaheadStrategy")?e.lookaheadStrategy:new Lt({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){k(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:s,repetitionMandatory:a,repetitionMandatoryWithSeparator:o,repetitionWithSeparator:l}=Jp(t);k(n,u=>{let c=u.idx===0?"":u.idx;this.TRACE_INIT(`${Be(u)}${c}`,()=>{let f=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:t,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),d=aa(this.fullRuleNameToShort[t.name],256,u.idx);this.setLaFuncCache(d,f)})}),k(i,u=>{this.computeLookaheadFunc(t,u.idx,768,"Repetition",u.maxLookahead,Be(u))}),k(s,u=>{this.computeLookaheadFunc(t,u.idx,512,"Option",u.maxLookahead,Be(u))}),k(a,u=>{this.computeLookaheadFunc(t,u.idx,1024,"RepetitionMandatory",u.maxLookahead,Be(u))}),k(o,u=>{this.computeLookaheadFunc(t,u.idx,1536,"RepetitionMandatoryWithSeparator",u.maxLookahead,Be(u))}),k(l,u=>{this.computeLookaheadFunc(t,u.idx,1280,"RepetitionWithSeparator",u.maxLookahead,Be(u))})})})}computeLookaheadFunc(e,t,n,i,s,a){this.TRACE_INIT(`${a}${t===0?"":t}`,()=>{let o=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:s||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),l=aa(this.fullRuleNameToShort[e.name],n,t);this.setLaFuncCache(l,o)})}getKeyForAutomaticLookahead(e,t){let n=this.getLastExplicitRuleShortName();return aa(n,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},kl=class extends Me{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},oa=new kl;function Jp(r){oa.reset(),r.accept(oa);let e=oa.dslMethods;return oa.reset(),e}function Nl(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffseta.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:
+ ${s.join(`
+
+`).replace(/\n/g,`
+ `)}`)}}};return t.prototype=n,t.prototype.constructor=t,t._RULE_NAMES=e,t}function mf(r,e,t){let n=function(){};Sl(n,r+"BaseSemanticsWithDefaults");let i=Object.create(t.prototype);return k(e,s=>{i[s]=Zp}),n.prototype=i,n.prototype.constructor=n,n}var wl;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(wl||(wl={}));function em(r,e){return tm(r,e)}function tm(r,e){let t=Re(e,i=>at(r[i])===!1),n=x(t,i=>({msg:`Missing visitor method: <${i}> on ${r.constructor.name} CST Visitor.`,type:wl.MISSING_METHOD,methodName:i}));return Et(n)}var da=class{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=$(e,"nodeLocationTracking")?e.nodeLocationTracking:De.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=fe,this.cstFinallyStateUpdate=fe,this.cstPostTerminal=fe,this.cstPostNonTerminal=fe,this.cstPostRule=fe;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Cl,this.setNodeLocationFromNode=Cl,this.cstPostRule=fe,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=fe,this.setNodeLocationFromNode=fe,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Nl,this.setNodeLocationFromNode=Nl,this.cstPostRule=fe,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=fe,this.setNodeLocationFromNode=fe,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=fe,this.setNodeLocationFromNode=fe,this.cstPostRule=fe,this.setInitialNodeLocation=fe;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let t=this.LA(0),n=e.location;n.startOffset<=t.startOffset?(n.endOffset=t.endOffset,n.endLine=t.endLine,n.endColumn=t.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let t=this.LA(0),n=e.location;n.startOffset<=t.startOffset?n.endOffset=t.endOffset:n.startOffset=NaN}cstPostTerminal(e,t){let n=this.CST_STACK[this.CST_STACK.length-1];df(n,t,e),this.setNodeLocationFromToken(n.location,t)}cstPostNonTerminal(e,t){let n=this.CST_STACK[this.CST_STACK.length-1];hf(n,t,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(Pe(this.baseCstVisitorConstructor)){let e=pf(this.className,xt(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(Pe(this.baseCstVisitorWithDefaultsConstructor)){let e=mf(this.className,xt(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}};var ha=class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):wn}LA(e){let t=this.currIdx+e;return t<0||this.tokVectorLength<=t?wn:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}};var pa=class{ACTION(e){return e.call(this)}consume(e,t,n){return this.consumeInternal(t,e,n)}subrule(e,t,n){return this.subruleInternal(t,e,n)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,n=_n){if(ae(this.definedRulesNames,e)){let a={message:nt.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:ge.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);let i=this.defineRule(e,t,n);return this[e]=i,i}OVERRIDE_RULE(e,t,n=_n){let i=ef(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let s=this.defineRule(e,t,n);return this[e]=s,s}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,t),!0}catch(i){if(Bt(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Ks(te(this.gastProductionsCache))}};var ma=class{initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=kn,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},$(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property.
+ See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0
+ For Further details.`);if(me(e)){if(b(e))throw Error(`A Token Vocabulary cannot be empty.
+ Note that the first argument for the parser constructor
+ is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument.
+ See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0
+ For Further details.`)}if(me(e))this.tokensMap=le(e,(s,a)=>(s[a.name]=a,s),{});else if($(e,"modes")&&Oe(de(te(e.modes)),Lc)){let s=de(te(e.modes)),a=Jn(s);this.tokensMap=le(a,(o,l)=>(o[l.name]=l,o),{})}else if(Vu(e))this.tokensMap=ee(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=ze;let n=$(e,"modes")?de(te(e.modes)):te(e),i=Oe(n,s=>b(s.categoryMatches));this.tokenMatcher=i?kn:Nt,Ct(te(this.tokensMap))}defineRule(e,t,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'
+Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=$(n,"resyncEnabled")?n.resyncEnabled:_n.resyncEnabled,s=$(n,"recoveryValueFunc")?n.recoveryValueFunc:_n.recoveryValueFunc,a=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[a]=e,this.fullRuleNameToShort[e]=a;let o;return this.outputCst===!0?o=function(...c){try{this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,c);let f=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(f),f}catch(f){return this.invokeRuleCatch(f,i,s)}finally{this.ruleFinallyStateUpdate()}}:o=function(...c){try{return this.ruleInvocationStateUpdate(a,e,this.subruleIdx),t.apply(this,c)}catch(f){return this.invokeRuleCatch(f,i,s)}finally{this.ruleFinallyStateUpdate()}},Object.assign(o,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,n){let i=this.RULE_STACK.length===1,s=t&&!this.isBackTracking()&&this.recoveryEnabled;if(Bt(e)){let a=e;if(s){let o=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(o))if(a.resyncedTokens=this.reSyncTo(o),this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];return l.recoveredNode=!0,l}else return n(e);else{if(this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];l.recoveredNode=!0,a.partialCstResult=l}throw a}}else{if(i)return this.moveToTerminatedState(),n(e);throw a}}else throw e}optionInternal(e,t){let n=this.getKeyForAutomaticLookahead(512,t);return this.optionInternalLogic(e,t,n)}optionInternalLogic(e,t,n){let i=this.getLaFuncFromCache(n),s;if(typeof e!="function"){s=e.DEF;let a=e.GATE;if(a!==void 0){let o=i;i=()=>a.call(this)&&o.call(this)}}else s=e;if(i.call(this)===!0)return s.call(this)}atLeastOneInternal(e,t){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,t,n)}atLeastOneInternalLogic(e,t,n){let i=this.getLaFuncFromCache(n),s;if(typeof t!="function"){s=t.DEF;let a=t.GATE;if(a!==void 0){let o=i;i=()=>a.call(this)&&o.call(this)}}else s=t;if(i.call(this)===!0){let a=this.doSingleRepetition(s);for(;i.call(this)===!0&&a===!0;)a=this.doSingleRepetition(s)}else throw this.raiseEarlyExitException(e,se.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,1024,e,Qs)}atLeastOneSepFirstInternal(e,t){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,t,n)}atLeastOneSepFirstInternalLogic(e,t,n){let i=t.DEF,s=t.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let o=()=>this.tokenMatcher(this.LA(1),s);for(;this.tokenMatcher(this.LA(1),s)===!0;)this.CONSUME(s),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,s,o,i,$i],o,1536,e,$i)}else throw this.raiseEarlyExitException(e,se.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,t,n)}manyInternalLogic(e,t,n){let i=this.getLaFuncFromCache(n),s;if(typeof t!="function"){s=t.DEF;let o=t.GATE;if(o!==void 0){let l=i;i=()=>o.call(this)&&l.call(this)}}else s=t;let a=!0;for(;i.call(this)===!0&&a===!0;)a=this.doSingleRepetition(s);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,768,e,Js,a)}manySepFirstInternal(e,t){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,t,n)}manySepFirstInternalLogic(e,t,n){let i=t.DEF,s=t.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let o=()=>this.tokenMatcher(this.LA(1),s);for(;this.tokenMatcher(this.LA(1),s)===!0;)this.CONSUME(s),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,s,o,i,ki],o,1280,e,ki)}}repetitionSepSecondInternal(e,t,n,i,s){for(;n();)this.CONSUME(t),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,n,i,s],n,1536,e,s)}doSingleRepetition(e){let t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){let n=this.getKeyForAutomaticLookahead(256,t),i=me(e)?e:e.DEF,a=this.getLaFuncFromCache(n).call(this,i);if(a!==void 0)return i[a].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Si(t,e))}}subruleInternal(e,t,n){let i;try{let s=n!==void 0?n.ARGS:void 0;return this.subruleIdx=t,i=e.apply(this,s),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(s){throw this.subruleInternalError(s,n,e.ruleName)}}subruleInternalError(e,t,n){throw Bt(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,t,n){let i;try{let s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),i=s):this.consumeInternalError(e,s,n)}catch(s){i=this.consumeInternalRecovery(e,t,s)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,t,n){let i,s=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new fr(i,t,s))}consumeInternalRecovery(e,t,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(s){throw s.name===vl?n:s}}else throw n}saveRecogState(){let e=this.errors,t=ee(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),ze)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}};var ga=class{initErrorHandler(e){this._errors=[],this.errorMessageProvider=$(e,"errorMessageProvider")?e.errorMessageProvider:De.errorMessageProvider}SAVE_ERROR(e){if(Bt(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:ee(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return ee(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,n){let i=this.getCurrRuleFullName(),s=this.getGAstProductions()[i],o=Cn(e,s,t,this.maxLookahead)[0],l=[];for(let c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:o,actual:l,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new wi(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],s=Nn(e,i,this.maxLookahead),a=[];for(let u=1;u<=this.maxLookahead;u++)a.push(this.LA(u));let o=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:a,previous:o,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new Ci(l,this.LA(1),o))}};var ya=class{initContentAssist(){}computeContentAssist(e,t){let n=this.gastProductionsCache[e];if(Pe(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return ea([n],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let t=ke(e.ruleStack),i=this.getGAstProductions()[t];return new Ys(i,e).startWalking()}};var xa={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(xa);var gf=!0,yf=Math.pow(2,8)-1,Rf=Ut({name:"RECORDING_PHASE_TOKEN",pattern:ie.NA});Ct([Rf]);var xf=wt(Rf,`This IToken indicates the Parser is in Recording Phase
+ See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(xf);var nm={name:`This CSTNode indicates the Parser is in Recording Phase
+ See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Ta=class{initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let t=e>0?e:"";this[`CONSUME${t}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${t}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${t}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${t}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${t}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${t}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${t}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${t}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,t,n){return this.consumeInternalRecord(t,e,n)},this.subrule=function(e,t,n){return this.subruleInternalRecord(t,e,n)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let t=0;t<10;t++){let n=t>0?t:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return wn}topLevelRuleRecord(e,t){try{let n=new be({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),t.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+`
+ This error was thrown during the "grammar recording phase" For more info see:
+ https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,t){return Li.call(this,H,e,t)}atLeastOneInternalRecord(e,t){Li.call(this,J,t,e)}atLeastOneSepFirstInternalRecord(e,t){Li.call(this,Q,t,e,gf)}manyInternalRecord(e,t){Li.call(this,F,t,e)}manySepFirstInternalRecord(e,t){Li.call(this,z,t,e,gf)}orInternalRecord(e,t){return im.call(this,e,t)}subruleInternalRecord(e,t,n){if(Ra(t),!e||$(e,"ruleName")===!1){let o=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>
+ inside top level rule: <${this.recordingProdStack[0].name}>`);throw o.KNOWN_RECORDER_ERROR=!0,o}let i=At(this.recordingProdStack),s=e.ruleName,a=new j({idx:t,nonTerminalName:s,label:n?.LABEL,referencedRule:void 0});return i.definition.push(a),this.outputCst?nm:xa}consumeInternalRecord(e,t,n){if(Ra(t),!dl(e)){let a=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>
+ inside top level rule: <${this.recordingProdStack[0].name}>`);throw a.KNOWN_RECORDER_ERROR=!0,a}let i=At(this.recordingProdStack),s=new M({idx:t,terminalType:e,label:n?.LABEL});return i.definition.push(s),xf}};function Li(r,e,t,n=!1){Ra(t);let i=At(this.recordingProdStack),s=at(e)?e:e.DEF,a=new r({definition:[],idx:t});return n&&(a.separator=e.SEP),$(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(a),s.call(this),i.definition.push(a),this.recordingProdStack.pop(),xa}function im(r,e){Ra(e);let t=At(this.recordingProdStack),n=me(r)===!1,i=n===!1?r:r.DEF,s=new q({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});$(r,"MAX_LOOKAHEAD")&&(s.maxLookahead=r.MAX_LOOKAHEAD);let a=$s(i,o=>at(o.GATE));return s.hasPredicates=a,t.definition.push(s),k(i,o=>{let l=new Y({definition:[]});s.definition.push(l),$(o,"IGNORE_AMBIGUITIES")?l.ignoreAmbiguities=o.IGNORE_AMBIGUITIES:$(o,"GATE")&&(l.ignoreAmbiguities=!0),this.recordingProdStack.push(l),o.ALT.call(this),this.recordingProdStack.pop()}),xa}function Tf(r){return r===0?"":`${r}`}function Ra(r){if(r<0||r>yf){let e=new Error(`Invalid DSL Method idx value: <${r}>
+ Idx value must be a none negative value smaller than ${yf+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var Ea=class{initPerformanceTracer(e){if($(e,"traceInitPerf")){let t=e.traceInitPerf,n=typeof t=="number";this.traceInitMaxIdent=n?t:1/0,this.traceInitPerf=n?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=De.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:s}=Ri(t),a=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,s}else return t()}};function Ef(r,e){e.forEach(t=>{let n=t.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let s=Object.getOwnPropertyDescriptor(n,i);s&&(s.get||s.set)?Object.defineProperty(r.prototype,i,s):r.prototype[i]=t.prototype[i]})})}var wn=wt(ze,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(wn);var De=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:_t,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),_n=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0}),ge;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",r[r.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(ge||(ge={}));function Aa(r=void 0){return function(){return r}}var Oi=class r{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let t=this.className;this.TRACE_INIT("toFastProps",()=>{xi(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),k(this.definedRulesNames,i=>{let a=this[i].originalGrammarAction,o;this.TRACE_INIT(`${i} Rule`,()=>{o=this.topLevelRuleRecord(i,a)}),this.gastProductionsCache[i]=o})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=sf({rules:te(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(b(n)&&this.skipValidations===!1){let i=af({rules:te(this.gastProductionsCache),tokenTypes:te(this.tokensMap),errMsgProvider:nt,grammarName:t}),s=Jc({lookaheadStrategy:this.lookaheadStrategy,rules:te(this.gastProductionsCache),tokenTypes:te(this.tokensMap),grammarName:t});this.definitionErrors=this.definitionErrors.concat(i,s)}}),b(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=dc(te(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,s;(s=(i=this.lookaheadStrategy).initialize)===null||s===void 0||s.call(i,{rules:te(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(te(this.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!b(this.definitionErrors))throw e=x(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected:
+ ${e.join(`
+-------------------------------
+`)}`)})}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(t),n.initLexerAdapter(),n.initLooksAhead(t),n.initRecognizerEngine(e,t),n.initRecoverable(t),n.initTreeBuilder(t),n.initContentAssist(),n.initGastRecorder(t),n.initPerformanceTracer(t),$(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated.
+ Please use the flag on the relevant DSL method instead.
+ See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES
+ For further details.`);this.skipValidations=$(t,"skipValidations")?t.skipValidations:De.skipValidations}};Oi.DEFER_DEFINITION_ERRORS_HANDLING=!1;Ef(Oi,[sa,la,da,ha,ma,pa,ga,ya,Ta,Ea]);var Pi=class extends Oi{constructor(e,t=De){let n=ee(t);n.outputCst=!1,super(e,n)}};function dr(r,e,t){return`${r.name}_${e}_${t}`}var Wt=1,am=2,Af=4,vf=5;var Pn=7,om=8,lm=9,um=10,cm=11,kf=12,bi=class{constructor(e){this.target=e}isEpsilon(){return!1}},Ln=class extends bi{constructor(e,t){super(e),this.tokenType=t}},Mi=class extends bi{constructor(e){super(e)}isEpsilon(){return!0}},On=class extends bi{constructor(e,t,n){super(e),this.rule=t,this.followState=n}isEpsilon(){return!0}};function $f(r){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};fm(e,r);let t=r.length;for(let n=0;nIf(r,e,a));return bn(r,e,n,t,...i)}function ym(r,e,t){let n=Te(r,e,t,{type:Wt});Kt(r,n);let i=bn(r,e,n,t,hr(r,e,t));return Tm(r,e,t,i)}function hr(r,e,t){let n=Re(x(t.definition,i=>If(r,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:xm(r,n)}function Nf(r,e,t,n,i){let s=n.left,a=n.right,o=Te(r,e,t,{type:cm});Kt(r,o);let l=Te(r,e,t,{type:kf});return s.loopback=o,l.loopback=o,r.decisionMap[dr(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",t.idx)]=o,pe(a,o),i===void 0?(pe(o,s),pe(o,l)):(pe(o,l),pe(o,i.left),pe(i.right,s)),{left:s,right:l}}function Cf(r,e,t,n,i){let s=n.left,a=n.right,o=Te(r,e,t,{type:um});Kt(r,o);let l=Te(r,e,t,{type:kf}),u=Te(r,e,t,{type:lm});return o.loopback=u,l.loopback=u,pe(o,s),pe(o,l),pe(a,u),i!==void 0?(pe(u,l),pe(u,i.left),pe(i.right,s)):pe(u,o),r.decisionMap[dr(e,i?"RepetitionWithSeparator":"Repetition",t.idx)]=o,{left:o,right:l}}function Tm(r,e,t,n){let i=n.left,s=n.right;return pe(i,s),r.decisionMap[dr(e,"Option",t.idx)]=i,n}function Kt(r,e){return r.decisionStates.push(e),e.decision=r.decisionStates.length-1,e.decision}function bn(r,e,t,n,...i){let s=Te(r,e,n,{type:om,start:t});t.end=s;for(let o of i)o!==void 0?(pe(t,o.left),pe(o.right,s)):pe(t,s);let a={left:t,right:s};return r.decisionMap[dr(e,Rm(n),n.idx)]=t,a}function Rm(r){if(r instanceof q)return"Alternation";if(r instanceof H)return"Option";if(r instanceof F)return"Repetition";if(r instanceof z)return"RepetitionWithSeparator";if(r instanceof J)return"RepetitionMandatory";if(r instanceof Q)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function xm(r,e){let t=e.length;for(let s=0;se.alt)}get key(){let e="";for(let t in this.map)e+=t+":";return e}};function Pl(r,e=!0){return`${e?`a${r.alt}`:""}s${r.state.stateNumber}:${r.stack.map(t=>t.stateNumber.toString()).join("_")}`}function km(r,e){let t={};return n=>{let i=n.toString(),s=t[i];return s!==void 0||(s={atnStartState:r,decision:e,states:{}},t[i]=s),s}}var va=class{constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="",t=this.predicates.length;for(let n=0;nconsole.log(n))}initialize(e){this.atn=$f(e.rules),this.dfas=$m(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:t,rule:n,hasPredicates:i,dynamicTokensEnabled:s}=e,a=this.dfas,o=this.logging,l=dr(n,"Alternation",t),c=this.atn.decisionMap[l].decision,f=x(ra({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:n}),d=>x(d,h=>h[0]));if(wf(f,!1)&&!s){let d=le(f,(h,m,g)=>(k(m,A=>{A&&(h[A.tokenTypeIdx]=g,k(A.categoryMatches,R=>{h[R]=g}))}),h),{});return i?function(h){var m;let g=this.LA(1),A=d[g.tokenTypeIdx];if(h!==void 0&&A!==void 0){let R=(m=h[A])===null||m===void 0?void 0:m.GATE;if(R!==void 0&&R.call(this)===!1)return}return A}:function(){let h=this.LA(1);return d[h.tokenTypeIdx]}}else return i?function(d){let h=new va,m=d===void 0?0:d.length;for(let A=0;Ax(d,h=>h[0]));if(wf(f)&&f[0][0]&&!s){let d=f[0],h=de(d);if(h.length===1&&b(h[0].categoryMatches)){let g=h[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===g}}else{let m=le(h,(g,A)=>(A!==void 0&&(g[A.tokenTypeIdx]=!0,k(A.categoryMatches,R=>{g[R]=!0})),g),{});return function(){let g=this.LA(1);return m[g.tokenTypeIdx]===!0}}}return function(){let d=bl.call(this,a,c,Sf,o);return typeof d=="object"?!1:d===0}}};function wf(r,e=!0){let t=new Set;for(let n of r){let i=new Set;for(let s of n){if(s===void 0){if(e)break;return!1}let a=[s.tokenTypeIdx].concat(s.categoryMatches);for(let o of a)if(t.has(o)){if(!i.has(o))return!1}else t.add(o),i.add(o)}}return!0}function $m(r){let e=r.decisionStates.length,t=Array(e);for(let n=0;nSt(i)).join(", "),t=r.production.idx===0?"":r.production.idx,n=`Ambiguous Alternatives Detected: <${r.ambiguityIndices.join(", ")}> in <${wm(r.production)}${t}> inside <${r.topLevelRule.name}> Rule,
+<${e}> may appears as a prefix path in all these alternatives.
+`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
+For Further details.`,n}function wm(r){if(r instanceof j)return"SUBRULE";if(r instanceof H)return"OPTION";if(r instanceof q)return"OR";if(r instanceof J)return"AT_LEAST_ONE";if(r instanceof Q)return"AT_LEAST_ONE_SEP";if(r instanceof z)return"MANY_SEP";if(r instanceof F)return"MANY";if(r instanceof M)return"CONSUME";throw Error("non exhaustive match")}function _m(r,e,t){let n=$e(e.configs.elements,s=>s.state.transitions),i=zu(n.filter(s=>s instanceof Ln).map(s=>s.tokenType),s=>s.tokenTypeIdx);return{actualToken:t,possibleTokenTypes:i,tokenPath:r}}function Lm(r,e){return r.edges[e.tokenTypeIdx]}function Om(r,e,t){let n=new Mn,i=[];for(let a of r.elements){if(t.is(a.alt)===!1)continue;if(a.state.type===Pn){i.push(a);continue}let o=a.state.transitions.length;for(let l=0;l0&&!Fm(s))for(let a of i)s.add(a);return s}function Pm(r,e){if(r instanceof Ln&&vi(e,r.tokenType))return r.target}function bm(r,e){let t;for(let n of r.elements)if(e.is(n.alt)===!0){if(t===void 0)t=n.alt;else if(t!==n.alt)return}return t}function Lf(r){return{configs:r,edges:{},isAcceptState:!1,prediction:-1}}function _f(r,e,t,n){return n=Of(r,n),e.edges[t.tokenTypeIdx]=n,n}function Of(r,e){if(e===Di)return e;let t=e.configs.key,n=r.states[t];return n!==void 0?n:(e.configs.finalize(),r.states[t]=e,e)}function Mm(r){let e=new Mn,t=r.transitions.length;for(let n=0;n0){let i=[...r.stack],a={state:i.pop(),alt:r.alt,stack:i};ka(a,e)}else e.add(r);return}t.epsilonOnlyTransitions||e.add(r);let n=t.transitions.length;for(let i=0;i1)return!0;return!1}function Km(r){for(let e of Array.from(r.values()))if(Object.keys(e).length===1)return!0;return!1}var Pf;(function(r){function e(t){return typeof t=="string"}r.is=e})(Pf||(Pf={}));var Ml;(function(r){function e(t){return typeof t=="string"}r.is=e})(Ml||(Ml={}));var bf;(function(r){r.MIN_VALUE=-2147483648,r.MAX_VALUE=2147483647;function e(t){return typeof t=="number"&&r.MIN_VALUE<=t&&t<=r.MAX_VALUE}r.is=e})(bf||(bf={}));var $a;(function(r){r.MIN_VALUE=0,r.MAX_VALUE=2147483647;function e(t){return typeof t=="number"&&r.MIN_VALUE<=t&&t<=r.MAX_VALUE}r.is=e})($a||($a={}));var B;(function(r){function e(n,i){return n===Number.MAX_VALUE&&(n=$a.MAX_VALUE),i===Number.MAX_VALUE&&(i=$a.MAX_VALUE),{line:n,character:i}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&p.uinteger(i.line)&&p.uinteger(i.character)}r.is=t})(B||(B={}));var G;(function(r){function e(n,i,s,a){if(p.uinteger(n)&&p.uinteger(i)&&p.uinteger(s)&&p.uinteger(a))return{start:B.create(n,i),end:B.create(s,a)};if(B.is(n)&&B.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${s}, ${a}]`)}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&B.is(i.start)&&B.is(i.end)}r.is=t})(G||(G={}));var Ia;(function(r){function e(n,i){return{uri:n,range:i}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&G.is(i.range)&&(p.string(i.uri)||p.undefined(i.uri))}r.is=t})(Ia||(Ia={}));var Mf;(function(r){function e(n,i,s,a){return{targetUri:n,targetRange:i,targetSelectionRange:s,originSelectionRange:a}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&G.is(i.targetRange)&&p.string(i.targetUri)&&G.is(i.targetSelectionRange)&&(G.is(i.originSelectionRange)||p.undefined(i.originSelectionRange))}r.is=t})(Mf||(Mf={}));var Dl;(function(r){function e(n,i,s,a){return{red:n,green:i,blue:s,alpha:a}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&p.numberRange(i.red,0,1)&&p.numberRange(i.green,0,1)&&p.numberRange(i.blue,0,1)&&p.numberRange(i.alpha,0,1)}r.is=t})(Dl||(Dl={}));var Df;(function(r){function e(n,i){return{range:n,color:i}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&G.is(i.range)&&Dl.is(i.color)}r.is=t})(Df||(Df={}));var Ff;(function(r){function e(n,i,s){return{label:n,textEdit:i,additionalTextEdits:s}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&p.string(i.label)&&(p.undefined(i.textEdit)||Fn.is(i))&&(p.undefined(i.additionalTextEdits)||p.typedArray(i.additionalTextEdits,Fn.is))}r.is=t})(Ff||(Ff={}));var Gf;(function(r){r.Comment="comment",r.Imports="imports",r.Region="region"})(Gf||(Gf={}));var Uf;(function(r){function e(n,i,s,a,o,l){let u={startLine:n,endLine:i};return p.defined(s)&&(u.startCharacter=s),p.defined(a)&&(u.endCharacter=a),p.defined(o)&&(u.kind=o),p.defined(l)&&(u.collapsedText=l),u}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&p.uinteger(i.startLine)&&p.uinteger(i.startLine)&&(p.undefined(i.startCharacter)||p.uinteger(i.startCharacter))&&(p.undefined(i.endCharacter)||p.uinteger(i.endCharacter))&&(p.undefined(i.kind)||p.string(i.kind))}r.is=t})(Uf||(Uf={}));var Fl;(function(r){function e(n,i){return{location:n,message:i}}r.create=e;function t(n){let i=n;return p.defined(i)&&Ia.is(i.location)&&p.string(i.message)}r.is=t})(Fl||(Fl={}));var Bf;(function(r){r.Error=1,r.Warning=2,r.Information=3,r.Hint=4})(Bf||(Bf={}));var Wf;(function(r){r.Unnecessary=1,r.Deprecated=2})(Wf||(Wf={}));var Kf;(function(r){function e(t){let n=t;return p.objectLiteral(n)&&p.string(n.href)}r.is=e})(Kf||(Kf={}));var Na;(function(r){function e(n,i,s,a,o,l){let u={range:n,message:i};return p.defined(s)&&(u.severity=s),p.defined(a)&&(u.code=a),p.defined(o)&&(u.source=o),p.defined(l)&&(u.relatedInformation=l),u}r.create=e;function t(n){var i;let s=n;return p.defined(s)&&G.is(s.range)&&p.string(s.message)&&(p.number(s.severity)||p.undefined(s.severity))&&(p.integer(s.code)||p.string(s.code)||p.undefined(s.code))&&(p.undefined(s.codeDescription)||p.string((i=s.codeDescription)===null||i===void 0?void 0:i.href))&&(p.string(s.source)||p.undefined(s.source))&&(p.undefined(s.relatedInformation)||p.typedArray(s.relatedInformation,Fl.is))}r.is=t})(Na||(Na={}));var Dn;(function(r){function e(n,i,...s){let a={title:n,command:i};return p.defined(s)&&s.length>0&&(a.arguments=s),a}r.create=e;function t(n){let i=n;return p.defined(i)&&p.string(i.title)&&p.string(i.command)}r.is=t})(Dn||(Dn={}));var Fn;(function(r){function e(s,a){return{range:s,newText:a}}r.replace=e;function t(s,a){return{range:{start:s,end:s},newText:a}}r.insert=t;function n(s){return{range:s,newText:""}}r.del=n;function i(s){let a=s;return p.objectLiteral(a)&&p.string(a.newText)&&G.is(a.range)}r.is=i})(Fn||(Fn={}));var Gl;(function(r){function e(n,i,s){let a={label:n};return i!==void 0&&(a.needsConfirmation=i),s!==void 0&&(a.description=s),a}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&p.string(i.label)&&(p.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(p.string(i.description)||i.description===void 0)}r.is=t})(Gl||(Gl={}));var Gn;(function(r){function e(t){let n=t;return p.string(n)}r.is=e})(Gn||(Gn={}));var Vf;(function(r){function e(s,a,o){return{range:s,newText:a,annotationId:o}}r.replace=e;function t(s,a,o){return{range:{start:s,end:s},newText:a,annotationId:o}}r.insert=t;function n(s,a){return{range:s,newText:"",annotationId:a}}r.del=n;function i(s){let a=s;return Fn.is(a)&&(Gl.is(a.annotationId)||Gn.is(a.annotationId))}r.is=i})(Vf||(Vf={}));var Ul;(function(r){function e(n,i){return{textDocument:n,edits:i}}r.create=e;function t(n){let i=n;return p.defined(i)&&jl.is(i.textDocument)&&Array.isArray(i.edits)}r.is=t})(Ul||(Ul={}));var Bl;(function(r){function e(n,i,s){let a={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(a.options=i),s!==void 0&&(a.annotationId=s),a}r.create=e;function t(n){let i=n;return i&&i.kind==="create"&&p.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||p.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||p.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Gn.is(i.annotationId))}r.is=t})(Bl||(Bl={}));var Wl;(function(r){function e(n,i,s,a){let o={kind:"rename",oldUri:n,newUri:i};return s!==void 0&&(s.overwrite!==void 0||s.ignoreIfExists!==void 0)&&(o.options=s),a!==void 0&&(o.annotationId=a),o}r.create=e;function t(n){let i=n;return i&&i.kind==="rename"&&p.string(i.oldUri)&&p.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||p.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||p.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Gn.is(i.annotationId))}r.is=t})(Wl||(Wl={}));var Kl;(function(r){function e(n,i,s){let a={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(a.options=i),s!==void 0&&(a.annotationId=s),a}r.create=e;function t(n){let i=n;return i&&i.kind==="delete"&&p.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||p.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||p.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||Gn.is(i.annotationId))}r.is=t})(Kl||(Kl={}));var Vl;(function(r){function e(t){let n=t;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>p.string(i.kind)?Bl.is(i)||Wl.is(i)||Kl.is(i):Ul.is(i)))}r.is=e})(Vl||(Vl={}));var jf;(function(r){function e(n){return{uri:n}}r.create=e;function t(n){let i=n;return p.defined(i)&&p.string(i.uri)}r.is=t})(jf||(jf={}));var Hf;(function(r){function e(n,i){return{uri:n,version:i}}r.create=e;function t(n){let i=n;return p.defined(i)&&p.string(i.uri)&&p.integer(i.version)}r.is=t})(Hf||(Hf={}));var jl;(function(r){function e(n,i){return{uri:n,version:i}}r.create=e;function t(n){let i=n;return p.defined(i)&&p.string(i.uri)&&(i.version===null||p.integer(i.version))}r.is=t})(jl||(jl={}));var zf;(function(r){function e(n,i,s,a){return{uri:n,languageId:i,version:s,text:a}}r.create=e;function t(n){let i=n;return p.defined(i)&&p.string(i.uri)&&p.string(i.languageId)&&p.integer(i.version)&&p.string(i.text)}r.is=t})(zf||(zf={}));var Hl;(function(r){r.PlainText="plaintext",r.Markdown="markdown";function e(t){let n=t;return n===r.PlainText||n===r.Markdown}r.is=e})(Hl||(Hl={}));var Gi;(function(r){function e(t){let n=t;return p.objectLiteral(t)&&Hl.is(n.kind)&&p.string(n.value)}r.is=e})(Gi||(Gi={}));var qf;(function(r){r.Text=1,r.Method=2,r.Function=3,r.Constructor=4,r.Field=5,r.Variable=6,r.Class=7,r.Interface=8,r.Module=9,r.Property=10,r.Unit=11,r.Value=12,r.Enum=13,r.Keyword=14,r.Snippet=15,r.Color=16,r.File=17,r.Reference=18,r.Folder=19,r.EnumMember=20,r.Constant=21,r.Struct=22,r.Event=23,r.Operator=24,r.TypeParameter=25})(qf||(qf={}));var Xf;(function(r){r.PlainText=1,r.Snippet=2})(Xf||(Xf={}));var Yf;(function(r){r.Deprecated=1})(Yf||(Yf={}));var Jf;(function(r){function e(n,i,s){return{newText:n,insert:i,replace:s}}r.create=e;function t(n){let i=n;return i&&p.string(i.newText)&&G.is(i.insert)&&G.is(i.replace)}r.is=t})(Jf||(Jf={}));var Qf;(function(r){r.asIs=1,r.adjustIndentation=2})(Qf||(Qf={}));var Zf;(function(r){function e(t){let n=t;return n&&(p.string(n.detail)||n.detail===void 0)&&(p.string(n.description)||n.description===void 0)}r.is=e})(Zf||(Zf={}));var ed;(function(r){function e(t){return{label:t}}r.create=e})(ed||(ed={}));var td;(function(r){function e(t,n){return{items:t||[],isIncomplete:!!n}}r.create=e})(td||(td={}));var Ca;(function(r){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}r.fromPlainText=e;function t(n){let i=n;return p.string(i)||p.objectLiteral(i)&&p.string(i.language)&&p.string(i.value)}r.is=t})(Ca||(Ca={}));var rd;(function(r){function e(t){let n=t;return!!n&&p.objectLiteral(n)&&(Gi.is(n.contents)||Ca.is(n.contents)||p.typedArray(n.contents,Ca.is))&&(t.range===void 0||G.is(t.range))}r.is=e})(rd||(rd={}));var nd;(function(r){function e(t,n){return n?{label:t,documentation:n}:{label:t}}r.create=e})(nd||(nd={}));var id;(function(r){function e(t,n,...i){let s={label:t};return p.defined(n)&&(s.documentation=n),p.defined(i)?s.parameters=i:s.parameters=[],s}r.create=e})(id||(id={}));var sd;(function(r){r.Text=1,r.Read=2,r.Write=3})(sd||(sd={}));var ad;(function(r){function e(t,n){let i={range:t};return p.number(n)&&(i.kind=n),i}r.create=e})(ad||(ad={}));var od;(function(r){r.File=1,r.Module=2,r.Namespace=3,r.Package=4,r.Class=5,r.Method=6,r.Property=7,r.Field=8,r.Constructor=9,r.Enum=10,r.Interface=11,r.Function=12,r.Variable=13,r.Constant=14,r.String=15,r.Number=16,r.Boolean=17,r.Array=18,r.Object=19,r.Key=20,r.Null=21,r.EnumMember=22,r.Struct=23,r.Event=24,r.Operator=25,r.TypeParameter=26})(od||(od={}));var ld;(function(r){r.Deprecated=1})(ld||(ld={}));var ud;(function(r){function e(t,n,i,s,a){let o={name:t,kind:n,location:{uri:s,range:i}};return a&&(o.containerName=a),o}r.create=e})(ud||(ud={}));var cd;(function(r){function e(t,n,i,s){return s!==void 0?{name:t,kind:n,location:{uri:i,range:s}}:{name:t,kind:n,location:{uri:i}}}r.create=e})(cd||(cd={}));var fd;(function(r){function e(n,i,s,a,o,l){let u={name:n,detail:i,kind:s,range:a,selectionRange:o};return l!==void 0&&(u.children=l),u}r.create=e;function t(n){let i=n;return i&&p.string(i.name)&&p.number(i.kind)&&G.is(i.range)&&G.is(i.selectionRange)&&(i.detail===void 0||p.string(i.detail))&&(i.deprecated===void 0||p.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}r.is=t})(fd||(fd={}));var dd;(function(r){r.Empty="",r.QuickFix="quickfix",r.Refactor="refactor",r.RefactorExtract="refactor.extract",r.RefactorInline="refactor.inline",r.RefactorRewrite="refactor.rewrite",r.Source="source",r.SourceOrganizeImports="source.organizeImports",r.SourceFixAll="source.fixAll"})(dd||(dd={}));var Sa;(function(r){r.Invoked=1,r.Automatic=2})(Sa||(Sa={}));var hd;(function(r){function e(n,i,s){let a={diagnostics:n};return i!=null&&(a.only=i),s!=null&&(a.triggerKind=s),a}r.create=e;function t(n){let i=n;return p.defined(i)&&p.typedArray(i.diagnostics,Na.is)&&(i.only===void 0||p.typedArray(i.only,p.string))&&(i.triggerKind===void 0||i.triggerKind===Sa.Invoked||i.triggerKind===Sa.Automatic)}r.is=t})(hd||(hd={}));var pd;(function(r){function e(n,i,s){let a={title:n},o=!0;return typeof i=="string"?(o=!1,a.kind=i):Dn.is(i)?a.command=i:a.edit=i,o&&s!==void 0&&(a.kind=s),a}r.create=e;function t(n){let i=n;return i&&p.string(i.title)&&(i.diagnostics===void 0||p.typedArray(i.diagnostics,Na.is))&&(i.kind===void 0||p.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||Dn.is(i.command))&&(i.isPreferred===void 0||p.boolean(i.isPreferred))&&(i.edit===void 0||Vl.is(i.edit))}r.is=t})(pd||(pd={}));var md;(function(r){function e(n,i){let s={range:n};return p.defined(i)&&(s.data=i),s}r.create=e;function t(n){let i=n;return p.defined(i)&&G.is(i.range)&&(p.undefined(i.command)||Dn.is(i.command))}r.is=t})(md||(md={}));var gd;(function(r){function e(n,i){return{tabSize:n,insertSpaces:i}}r.create=e;function t(n){let i=n;return p.defined(i)&&p.uinteger(i.tabSize)&&p.boolean(i.insertSpaces)}r.is=t})(gd||(gd={}));var yd;(function(r){function e(n,i,s){return{range:n,target:i,data:s}}r.create=e;function t(n){let i=n;return p.defined(i)&&G.is(i.range)&&(p.undefined(i.target)||p.string(i.target))}r.is=t})(yd||(yd={}));var Td;(function(r){function e(n,i){return{range:n,parent:i}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&G.is(i.range)&&(i.parent===void 0||r.is(i.parent))}r.is=t})(Td||(Td={}));var Rd;(function(r){r.namespace="namespace",r.type="type",r.class="class",r.enum="enum",r.interface="interface",r.struct="struct",r.typeParameter="typeParameter",r.parameter="parameter",r.variable="variable",r.property="property",r.enumMember="enumMember",r.event="event",r.function="function",r.method="method",r.macro="macro",r.keyword="keyword",r.modifier="modifier",r.comment="comment",r.string="string",r.number="number",r.regexp="regexp",r.operator="operator",r.decorator="decorator"})(Rd||(Rd={}));var xd;(function(r){r.declaration="declaration",r.definition="definition",r.readonly="readonly",r.static="static",r.deprecated="deprecated",r.abstract="abstract",r.async="async",r.modification="modification",r.documentation="documentation",r.defaultLibrary="defaultLibrary"})(xd||(xd={}));var Ed;(function(r){function e(t){let n=t;return p.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}r.is=e})(Ed||(Ed={}));var Ad;(function(r){function e(n,i){return{range:n,text:i}}r.create=e;function t(n){let i=n;return i!=null&&G.is(i.range)&&p.string(i.text)}r.is=t})(Ad||(Ad={}));var vd;(function(r){function e(n,i,s){return{range:n,variableName:i,caseSensitiveLookup:s}}r.create=e;function t(n){let i=n;return i!=null&&G.is(i.range)&&p.boolean(i.caseSensitiveLookup)&&(p.string(i.variableName)||i.variableName===void 0)}r.is=t})(vd||(vd={}));var kd;(function(r){function e(n,i){return{range:n,expression:i}}r.create=e;function t(n){let i=n;return i!=null&&G.is(i.range)&&(p.string(i.expression)||i.expression===void 0)}r.is=t})(kd||(kd={}));var $d;(function(r){function e(n,i){return{frameId:n,stoppedLocation:i}}r.create=e;function t(n){let i=n;return p.defined(i)&&G.is(n.stoppedLocation)}r.is=t})($d||($d={}));var zl;(function(r){r.Type=1,r.Parameter=2;function e(t){return t===1||t===2}r.is=e})(zl||(zl={}));var ql;(function(r){function e(n){return{value:n}}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&(i.tooltip===void 0||p.string(i.tooltip)||Gi.is(i.tooltip))&&(i.location===void 0||Ia.is(i.location))&&(i.command===void 0||Dn.is(i.command))}r.is=t})(ql||(ql={}));var Id;(function(r){function e(n,i,s){let a={position:n,label:i};return s!==void 0&&(a.kind=s),a}r.create=e;function t(n){let i=n;return p.objectLiteral(i)&&B.is(i.position)&&(p.string(i.label)||p.typedArray(i.label,ql.is))&&(i.kind===void 0||zl.is(i.kind))&&i.textEdits===void 0||p.typedArray(i.textEdits,Fn.is)&&(i.tooltip===void 0||p.string(i.tooltip)||Gi.is(i.tooltip))&&(i.paddingLeft===void 0||p.boolean(i.paddingLeft))&&(i.paddingRight===void 0||p.boolean(i.paddingRight))}r.is=t})(Id||(Id={}));var Nd;(function(r){function e(t){return{kind:"snippet",value:t}}r.createSnippet=e})(Nd||(Nd={}));var Cd;(function(r){function e(t,n,i,s){return{insertText:t,filterText:n,range:i,command:s}}r.create=e})(Cd||(Cd={}));var Sd;(function(r){function e(t){return{items:t}}r.create=e})(Sd||(Sd={}));var wd;(function(r){r.Invoked=0,r.Automatic=1})(wd||(wd={}));var _d;(function(r){function e(t,n){return{range:t,text:n}}r.create=e})(_d||(_d={}));var Ld;(function(r){function e(t,n){return{triggerKind:t,selectedCompletionInfo:n}}r.create=e})(Ld||(Ld={}));var Od;(function(r){function e(t){let n=t;return p.objectLiteral(n)&&Ml.is(n.uri)&&p.string(n.name)}r.is=e})(Od||(Od={}));var Pd;(function(r){function e(s,a,o,l){return new Xl(s,a,o,l)}r.create=e;function t(s){let a=s;return!!(p.defined(a)&&p.string(a.uri)&&(p.undefined(a.languageId)||p.string(a.languageId))&&p.uinteger(a.lineCount)&&p.func(a.getText)&&p.func(a.positionAt)&&p.func(a.offsetAt))}r.is=t;function n(s,a){let o=s.getText(),l=i(a,(c,f)=>{let d=c.range.start.line-f.range.start.line;return d===0?c.range.start.character-f.range.start.character:d}),u=o.length;for(let c=l.length-1;c>=0;c--){let f=l[c],d=s.offsetAt(f.range.start),h=s.offsetAt(f.range.end);if(h<=u)o=o.substring(0,d)+f.newText+o.substring(h,o.length);else throw new Error("Overlapping edit");u=d}return o}r.applyEdits=n;function i(s,a){if(s.length<=1)return s;let o=s.length/2|0,l=s.slice(0,o),u=s.slice(o);i(l,a),i(u,a);let c=0,f=0,d=0;for(;c0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,i=t.length;if(i===0)return B.create(0,e);for(;ne?i=a:n=a+1}let s=n-1;return B.create(s,e-t[s])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],i=e.line+1"u"}r.undefined=n;function i(h){return h===!0||h===!1}r.boolean=i;function s(h){return e.call(h)==="[object String]"}r.string=s;function a(h){return e.call(h)==="[object Number]"}r.number=a;function o(h,m,g){return e.call(h)==="[object Number]"&&m<=h&&h<=g}r.numberRange=o;function l(h){return e.call(h)==="[object Number]"&&-2147483648<=h&&h<=2147483647}r.integer=l;function u(h){return e.call(h)==="[object Number]"&&0<=h&&h<=2147483647}r.uinteger=u;function c(h){return e.call(h)==="[object Function]"}r.func=c;function f(h){return h!==null&&typeof h=="object"}r.objectLiteral=f;function d(h,m){return Array.isArray(h)&&h.every(m)}r.typedArray=d})(p||(p={}));var Ui=class{constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new Un(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let t=new mr;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){let n=new pr(e.startOffset,e.image.length,Ir(e),e.tokenType,!t);return n.grammarSource=t,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let t=e.container;if(t){let n=t.content.indexOf(e);n>=0&&t.content.splice(n,1)}}addHiddenNodes(e){let t=[];for(let s of e){let a=new pr(s.startOffset,s.image.length,Ir(s),s.tokenType,!0);a.root=this.rootNode,t.push(a)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...t);return}for(;n.container;){let s=n.container.content.indexOf(n);if(s>0){n.container.content.splice(s,0,...t),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...t)}construct(e){let t=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=t;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},Bi=class{get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,t;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(t=this.container)===null||t===void 0?void 0:t.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},pr=class extends Bi{get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,n,i,s=!1){super(),this._hidden=s,this._offset=e,this._tokenType=i,this._length=t,this._range=n}},mr=class extends Bi{constructor(){super(...arguments),this.content=new Yl(this)}get children(){return this.content}get offset(){var e,t;return(t=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&t!==void 0?t:0}get length(){return this.end-this.offset}get end(){var e,t;return(t=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&t!==void 0?t:0}get range(){let e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=t;this._rangeCache={start:n.start,end:i.end.line=0;e--){let t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},Yl=class r extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,r.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...n){return this.addParents(n),super.splice(e,t,...n)}addParents(e){for(let t of e)t.container=this.parent}},Un=class extends mr{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}};var wa=Symbol("Datatype");function Jl(r){return r.$type===wa}var bd="\u200B",Md=r=>r.endsWith(bd)?r:r+bd,Wi=class{constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let t=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new Ql(t,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},Ki=class extends Wi{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new Ui,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){let n=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(Md(e.name),this.startImplementation(n,t).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(gi(e))return wa;{let t=gn(e);return t??e.name}}}parse(e,t={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=t.rule?this.allRules.get(t.rule):this.mainRule;if(!i)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");let s=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:s,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,t){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let a={$type:e};this.stack.push(a),e===wa&&(a.value="")}let s;try{s=t(n)}catch{s=void 0}return s===void 0&&i&&(s=this.construct()),s}}extractHiddenTokens(e){let t=this.lexerResult.hidden;if(!t.length)return[];let n=e.startOffset;for(let i=0;in)return t.splice(0,i);return t.splice(0,t.length)}consume(e,t,n){let i=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(i)){let s=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(s);let a=this.nodeBuilder.buildLeafNode(i,n),{assignment:o,isCrossRef:l}=this.getAssignment(n),u=this.current;if(o){let c=Xe(n)?i.image:this.converter.convert(i.image,a);this.assign(o.operator,o.feature,c,a,l)}else if(Jl(u)){let c=i.image;Xe(n)||(c=this.converter.convert(c,a).toString()),u.value+=c}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,n,i,s){let a;!this.isRecording()&&!n&&(a=this.nodeBuilder.buildCompositeNode(i));let o=this.wrapper.wrapSubrule(e,t,s);!this.isRecording()&&a&&a.length>0&&this.performSubruleAssignment(o,i,a)}performSubruleAssignment(e,t,n){let{assignment:i,isCrossRef:s}=this.getAssignment(t);if(i)this.assign(i.operator,i.feature,e,n,s);else if(!i){let a=this.current;if(Jl(a))a.value+=e.toString();else if(typeof e=="object"&&e){let l=this.assignWithoutOverride(e,a);this.stack.pop(),this.stack.push(l)}}}action(e,t){if(!this.isRecording()){let n=this.current;if(t.feature&&t.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(t).content.push(n.$cstNode);let s={$type:e};this.stack.push(s),this.assign(t.operator,t.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return Ms(e),this.nodeBuilder.construct(e),this.stack.pop(),Jl(e)?this.converter.convert(e.value,e.$cstNode):(Fo(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let t=nr(e,tt);this.assignmentMap.set(e,{assignment:t,isCrossRef:t?rr(t.terminal):!1})}return this.assignmentMap.get(e)}assign(e,t,n,i,s){let a=this.current,o;switch(s&&typeof n=="string"?o=this.linker.buildReference(a,t,i,n):o=n,e){case"=":{a[t]=o;break}case"?=":{a[t]=!0;break}case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(o)}}assignWithoutOverride(e,t){for(let[i,s]of Object.entries(t)){let a=e[i];a===void 0?e[i]=s:Array.isArray(a)&&Array.isArray(s)&&(s.push(...a),e[i]=s)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},_a=class{buildMismatchTokenMessage(e){return _t.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return _t.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return _t.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return _t.buildEarlyExitMessage(e)}},Bn=class extends _a{buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},Vi=class extends Wi{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){let n=this.wrapper.DEFINE_RULE(Md(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{let n=this.keepStackSize();try{e(t)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,n){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,n,i,s){this.before(i),this.wrapper.wrapSubrule(e,t,s),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},Vm={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new Bn},Ql=class extends Pi{constructor(e,t){let n=t&&"maxLookahead"in t;super(e,Object.assign(Object.assign(Object.assign({},Vm),{lookaheadStrategy:n?new Lt({maxLookahead:t.maxLookahead}):new Fi({logging:t.skipValidations?()=>{}:void 0})}),t))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t){return this.RULE(e,t)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t)}wrapSubrule(e,t,n){return this.subrule(e,t,{ARGS:[n]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}};function ji(r,e,t){return jm({parser:e,tokens:t,ruleNames:new Map},r),e}function jm(r,e){let t=pi(e,!1),n=V(e.rules).filter(Ce).filter(i=>t.has(i));for(let i of n){let s=Object.assign(Object.assign({},r),{consume:1,optional:1,subrule:1,many:1,or:1});r.parser.rule(i,gr(s,i.definition))}}function gr(r,e,t=!1){let n;if(Xe(e))n=Qm(r,e);else if(kt(e))n=Hm(r,e);else if(tt(e))n=gr(r,e.terminal);else if(rr(e))n=Dd(r,e);else if(rt(e))n=zm(r,e);else if(Os(e))n=Xm(r,e);else if(bs(e))n=Ym(r,e);else if(Gt(e))n=Jm(r,e);else if(So(e)){let i=r.consume++;n=()=>r.parser.consume(i,ze,e)}else throw new er(e.$cstNode,`Unexpected element type: ${e.$type}`);return Fd(r,t?void 0:La(e),n,e.cardinality)}function Hm(r,e){let t=yi(e);return()=>r.parser.action(t,e)}function zm(r,e){let t=e.rule.ref;if(Ce(t)){let n=r.subrule++,i=t.fragment,s=e.arguments.length>0?qm(t,e.arguments):()=>({});return a=>r.parser.subrule(n,Gd(r,t),i,e,s(a))}else if(je(t)){let n=r.consume++,i=Zl(r,t.name);return()=>r.parser.consume(n,i,e)}else if(t)ut(t);else throw new er(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function qm(r,e){let t=e.map(n=>Ot(n.value));return n=>{let i={};for(let s=0;se(n)||t(n)}else if(Eo(r)){let e=Ot(r.left),t=Ot(r.right);return n=>e(n)&&t(n)}else if(vo(r)){let e=Ot(r.value);return t=>!e(t)}else if(ko(r)){let e=r.parameter.ref.name;return t=>t!==void 0&&t[e]===!0}else if(xo(r)){let e=!!r.true;return()=>e}ut(r)}function Xm(r,e){if(e.elements.length===1)return gr(r,e.elements[0]);{let t=[];for(let i of e.elements){let s={ALT:gr(r,i,!0)},a=La(i);a&&(s.GATE=Ot(a)),t.push(s)}let n=r.or++;return i=>r.parser.alternatives(n,t.map(s=>{let a={ALT:()=>s.ALT(i)},o=s.GATE;return o&&(a.GATE=()=>o(i)),a}))}}function Ym(r,e){if(e.elements.length===1)return gr(r,e.elements[0]);let t=[];for(let o of e.elements){let l={ALT:gr(r,o,!0)},u=La(o);u&&(l.GATE=Ot(u)),t.push(l)}let n=r.or++,i=(o,l)=>{let u=l.getRuleStack().join("-");return`uGroup_${o}_${u}`},s=o=>r.parser.alternatives(n,t.map((l,u)=>{let c={ALT:()=>!0},f=r.parser;c.ALT=()=>{if(l.ALT(o),!f.isRecording()){let h=i(n,f);f.unorderedGroups.get(h)||f.unorderedGroups.set(h,[]);let m=f.unorderedGroups.get(h);typeof m?.[u]>"u"&&(m[u]=!0)}};let d=l.GATE;return d?c.GATE=()=>d(o):c.GATE=()=>{let h=f.unorderedGroups.get(i(n,f));return!h?.[u]},c})),a=Fd(r,La(e),s,"*");return o=>{a(o),r.parser.isRecording()||r.parser.unorderedGroups.delete(i(n,r.parser))}}function Jm(r,e){let t=e.elements.map(n=>gr(r,n));return n=>t.forEach(i=>i(n))}function La(r){if(Gt(r))return r.guardCondition}function Dd(r,e,t=e.terminal){if(t)if(rt(t)&&Ce(t.rule.ref)){let n=t.rule.ref,i=r.subrule++;return s=>r.parser.subrule(i,Gd(r,n),!1,e,s)}else if(rt(t)&&je(t.rule.ref)){let n=r.consume++,i=Zl(r,t.rule.ref.name);return()=>r.parser.consume(n,i,e)}else if(Xe(t)){let n=r.consume++,i=Zl(r,t.value);return()=>r.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=Bs(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+yi(e.type.ref));return Dd(r,e,i)}}function Qm(r,e){let t=r.consume++,n=r.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>r.parser.consume(t,n,e)}function Fd(r,e,t,n){let i=e&&Ot(e);if(!n)if(i){let s=r.or++;return a=>r.parser.alternatives(s,[{ALT:()=>t(a),GATE:()=>i(a)},{ALT:Aa(),GATE:()=>!i(a)}])}else return t;if(n==="*"){let s=r.many++;return a=>r.parser.many(s,{DEF:()=>t(a),GATE:i?()=>i(a):void 0})}else if(n==="+"){let s=r.many++;if(i){let a=r.or++;return o=>r.parser.alternatives(a,[{ALT:()=>r.parser.atLeastOne(s,{DEF:()=>t(o)}),GATE:()=>i(o)},{ALT:Aa(),GATE:()=>!i(o)}])}else return a=>r.parser.atLeastOne(s,{DEF:()=>t(a)})}else if(n==="?"){let s=r.optional++;return a=>r.parser.optional(s,{DEF:()=>t(a),GATE:i?()=>i(a):void 0})}else ut(n)}function Gd(r,e){let t=Zm(r,e),n=r.parser.getRule(t);if(!n)throw new Error(`Rule "${t}" not found."`);return n}function Zm(r,e){if(Ce(e))return e.name;if(r.ruleNames.has(e))return r.ruleNames.get(e);{let t=e,n=t.$container,i=e.$type;for(;!Ce(n);)(Gt(n)||Os(n)||bs(n))&&(i=n.elements.indexOf(t).toString()+":"+i),t=n,n=n.$container;return i=n.name+":"+i,r.ruleNames.set(e,i),i}}function Zl(r,e){let t=r.tokens[e];if(!t)throw new Error(`Token "${e}" not found."`);return t}function eu(r){let e=r.Grammar,t=r.parser.Lexer,n=new Vi(r);return ji(e,n,t.definition),n.finalize(),n}function tu(r){let e=Ud(r);return e.finalize(),e}function Ud(r){let e=r.Grammar,t=r.parser.Lexer,n=new Ki(r);return ji(e,n,t.definition)}var Pt=class{constructor(){this.diagnostics=[]}buildTokens(e,t){let n=V(pi(e,!1)),i=this.buildTerminalTokens(n),s=this.buildKeywordTokens(n,i,t);return i.forEach(a=>{let o=a.PATTERN;typeof o=="object"&&o&&"test"in o&&mn(o)?s.unshift(a):s.push(a)}),s}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(je).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){let t=yn(e),n=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=mn(t)?ie.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(t.lastIndex=i,t.exec(n))}buildKeywordTokens(e,t,n){return e.filter(Ce).flatMap(i=>ct(i).filter(Xe)).distinct(i=>i.value).toArray().sort((i,s)=>s.value.length-i.value.length).map(i=>this.buildKeywordToken(i,t,!!n?.caseInsensitive))}buildKeywordToken(e,t,n){let i=this.buildKeywordPattern(e,n),s={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,t)};return typeof i=="function"&&(s.LINE_BREAKS=!0),s}buildKeywordPattern(e,t){return t?new RegExp(Vo(e.value)):e.value}findLongerAlt(e,t){return t.reduce((n,i)=>{let s=i?.PATTERN;return s?.source&&jo("^"+s.source+"$",e.value)&&n.push(i),n},[])}};var yr=class{convert(e,t){let n=t.grammarSource;if(rr(n)&&(n=qo(n)),rt(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,t)}return e}runConverter(e,t,n){var i;switch(e.name.toUpperCase()){case"INT":return ht.convertInt(t);case"STRING":return ht.convertString(t);case"ID":return ht.convertID(t)}switch((i=tl(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return ht.convertNumber(t);case"boolean":return ht.convertBoolean(t);case"bigint":return ht.convertBigint(t);case"date":return ht.convertDate(t);default:return t}}},ht;(function(r){function e(u){let c="";for(let f=1;f{typeof setImmediate>"u"?setTimeout(r,0):setImmediate(r)})}var Ma=0,Hd=10;function Da(){return Ma=performance.now(),new C.CancellationTokenSource}function zd(r){Hd=r}var pt=Symbol("OperationCancelled");function mt(r){return r===pt}async function ue(r){if(r===C.CancellationToken.None)return;let e=performance.now();if(e-Ma>=Hd&&(Ma=e,await cu(),Ma=performance.now()),r.isCancellationRequested)throw pt}var Fe=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=n=>(e(n),this),this.reject=n=>(t(n),this)})}};var Fa=class r{constructor(e,t,n,i){this._uri=e,this._languageId=t,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){for(let n of e)if(r.isIncremental(n)){let i=Yd(n.range),s=this.offsetAt(i.start),a=this.offsetAt(i.end);this._content=this._content.substring(0,s)+n.text+this._content.substring(a,this._content.length);let o=Math.max(i.start.line,0),l=Math.max(i.end.line,0),u=this._lineOffsets,c=qd(n.text,!1,s);if(l-o===c.length)for(let d=0,h=c.length;de?i=a:n=a+1}let s=n-1;return e=this.ensureBeforeEOL(e,t[s]),{line:s,character:e-t[s]}}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line];if(e.character<=0)return n;let i=e.line+1t&&Xd(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let t=e;return t!=null&&typeof t.text=="string"&&t.range!==void 0&&(t.rangeLength===void 0||typeof t.rangeLength=="number")}static isFull(e){let t=e;return t!=null&&typeof t.text=="string"&&t.range===void 0&&t.rangeLength===void 0}},Vn;(function(r){function e(i,s,a,o){return new Fa(i,s,a,o)}r.create=e;function t(i,s,a){if(i instanceof Fa)return i.update(s,a),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}r.update=t;function n(i,s){let a=i.getText(),o=fu(s.map(ug),(c,f)=>{let d=c.range.start.line-f.range.start.line;return d===0?c.range.start.character-f.range.start.character:d}),l=0,u=[];for(let c of o){let f=i.offsetAt(c.range.start);if(fl&&u.push(a.substring(l,f)),c.newText.length&&u.push(c.newText),l=i.offsetAt(c.range.end)}return u.push(a.substr(l)),u.join("")}r.applyEdits=n})(Vn||(Vn={}));function fu(r,e){if(r.length<=1)return r;let t=r.length/2|0,n=r.slice(0,t),i=r.slice(t);fu(n,e),fu(i,e);let s=0,a=0,o=0;for(;st.line||e.line===t.line&&e.character>t.character?{start:t,end:e}:r}function ug(r){let e=Yd(r.range);return e!==r.range?{newText:r.newText,range:e}:r}var Jd;(()=>{"use strict";var r={470:i=>{function s(l){if(typeof l!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(l))}function a(l,u){for(var c,f="",d=0,h=-1,m=0,g=0;g<=l.length;++g){if(g2){var A=f.lastIndexOf("/");if(A!==f.length-1){A===-1?(f="",d=0):d=(f=f.slice(0,A)).length-1-f.lastIndexOf("/"),h=g,m=0;continue}}else if(f.length===2||f.length===1){f="",d=0,h=g,m=0;continue}}u&&(f.length>0?f+="/..":f="..",d=2)}else f.length>0?f+="/"+l.slice(h+1,g):f=l.slice(h+1,g),d=g-h-1;h=g,m=0}else c===46&&m!==-1?++m:m=-1}return f}var o={resolve:function(){for(var l,u="",c=!1,f=arguments.length-1;f>=-1&&!c;f--){var d;f>=0?d=arguments[f]:(l===void 0&&(l=process.cwd()),d=l),s(d),d.length!==0&&(u=d+"/"+u,c=d.charCodeAt(0)===47)}return u=a(u,!c),c?u.length>0?"/"+u:"/":u.length>0?u:"."},normalize:function(l){if(s(l),l.length===0)return".";var u=l.charCodeAt(0)===47,c=l.charCodeAt(l.length-1)===47;return(l=a(l,!u)).length!==0||u||(l="."),l.length>0&&c&&(l+="/"),u?"/"+l:l},isAbsolute:function(l){return s(l),l.length>0&&l.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var l,u=0;u0&&(l===void 0?l=c:l+="/"+c)}return l===void 0?".":o.normalize(l)},relative:function(l,u){if(s(l),s(u),l===u||(l=o.resolve(l))===(u=o.resolve(u)))return"";for(var c=1;cg){if(u.charCodeAt(h+R)===47)return u.slice(h+R+1);if(R===0)return u.slice(h+R)}else d>g&&(l.charCodeAt(c+R)===47?A=R:R===0&&(A=0));break}var E=l.charCodeAt(c+R);if(E!==u.charCodeAt(h+R))break;E===47&&(A=R)}var T="";for(R=c+A+1;R<=f;++R)R!==f&&l.charCodeAt(R)!==47||(T.length===0?T+="..":T+="/..");return T.length>0?T+u.slice(h+A):(h+=A,u.charCodeAt(h)===47&&++h,u.slice(h))},_makeLong:function(l){return l},dirname:function(l){if(s(l),l.length===0)return".";for(var u=l.charCodeAt(0),c=u===47,f=-1,d=!0,h=l.length-1;h>=1;--h)if((u=l.charCodeAt(h))===47){if(!d){f=h;break}}else d=!1;return f===-1?c?"/":".":c&&f===1?"//":l.slice(0,f)},basename:function(l,u){if(u!==void 0&&typeof u!="string")throw new TypeError('"ext" argument must be a string');s(l);var c,f=0,d=-1,h=!0;if(u!==void 0&&u.length>0&&u.length<=l.length){if(u.length===l.length&&u===l)return"";var m=u.length-1,g=-1;for(c=l.length-1;c>=0;--c){var A=l.charCodeAt(c);if(A===47){if(!h){f=c+1;break}}else g===-1&&(h=!1,g=c+1),m>=0&&(A===u.charCodeAt(m)?--m==-1&&(d=c):(m=-1,d=g))}return f===d?d=g:d===-1&&(d=l.length),l.slice(f,d)}for(c=l.length-1;c>=0;--c)if(l.charCodeAt(c)===47){if(!h){f=c+1;break}}else d===-1&&(h=!1,d=c+1);return d===-1?"":l.slice(f,d)},extname:function(l){s(l);for(var u=-1,c=0,f=-1,d=!0,h=0,m=l.length-1;m>=0;--m){var g=l.charCodeAt(m);if(g!==47)f===-1&&(d=!1,f=m+1),g===46?u===-1?u=m:h!==1&&(h=1):u!==-1&&(h=-1);else if(!d){c=m+1;break}}return u===-1||f===-1||h===0||h===1&&u===f-1&&u===c+1?"":l.slice(u,f)},format:function(l){if(l===null||typeof l!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof l);return(function(u,c){var f=c.dir||c.root,d=c.base||(c.name||"")+(c.ext||"");return f?f===c.root?f+d:f+"/"+d:d})(0,l)},parse:function(l){s(l);var u={root:"",dir:"",base:"",ext:"",name:""};if(l.length===0)return u;var c,f=l.charCodeAt(0),d=f===47;d?(u.root="/",c=1):c=0;for(var h=-1,m=0,g=-1,A=!0,R=l.length-1,E=0;R>=c;--R)if((f=l.charCodeAt(R))!==47)g===-1&&(A=!1,g=R+1),f===46?h===-1?h=R:E!==1&&(E=1):h!==-1&&(E=-1);else if(!A){m=R+1;break}return h===-1||g===-1||E===0||E===1&&h===g-1&&h===m+1?g!==-1&&(u.base=u.name=m===0&&d?l.slice(1,g):l.slice(m,g)):(m===0&&d?(u.name=l.slice(1,h),u.base=l.slice(1,g)):(u.name=l.slice(m,h),u.base=l.slice(m,g)),u.ext=l.slice(h,g)),m>0?u.dir=l.slice(0,m-1):d&&(u.dir="/"),u},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,i.exports=o}},e={};function t(i){var s=e[i];if(s!==void 0)return s.exports;var a=e[i]={exports:{}};return r[i](a,a.exports,t),a.exports}t.d=(i,s)=>{for(var a in s)t.o(s,a)&&!t.o(i,a)&&Object.defineProperty(i,a,{enumerable:!0,get:s[a]})},t.o=(i,s)=>Object.prototype.hasOwnProperty.call(i,s),t.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;t.r(n),t.d(n,{URI:()=>d,Utils:()=>yt}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let s=/^\w[\w\d+.-]*$/,a=/^\//,o=/^\/\//;function l(v,y){if(!v.scheme&&y)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${v.authority}", path: "${v.path}", query: "${v.query}", fragment: "${v.fragment}"}`);if(v.scheme&&!s.test(v.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(v.path){if(v.authority){if(!a.test(v.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(o.test(v.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}let u="",c="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class d{static isUri(y){return y instanceof d||!!y&&typeof y.authority=="string"&&typeof y.fragment=="string"&&typeof y.path=="string"&&typeof y.query=="string"&&typeof y.scheme=="string"&&typeof y.fsPath=="string"&&typeof y.with=="function"&&typeof y.toString=="function"}scheme;authority;path;query;fragment;constructor(y,N,I,K,L,_=!1){typeof y=="object"?(this.scheme=y.scheme||u,this.authority=y.authority||u,this.path=y.path||u,this.query=y.query||u,this.fragment=y.fragment||u):(this.scheme=(function(_e,Le){return _e||Le?_e:"file"})(y,_),this.authority=N||u,this.path=(function(_e,Le){switch(_e){case"https":case"http":case"file":Le?Le[0]!==c&&(Le=c+Le):Le=c}return Le})(this.scheme,I||u),this.query=K||u,this.fragment=L||u,l(this,_))}get fsPath(){return E(this,!1)}with(y){if(!y)return this;let{scheme:N,authority:I,path:K,query:L,fragment:_}=y;return N===void 0?N=this.scheme:N===null&&(N=u),I===void 0?I=this.authority:I===null&&(I=u),K===void 0?K=this.path:K===null&&(K=u),L===void 0?L=this.query:L===null&&(L=u),_===void 0?_=this.fragment:_===null&&(_=u),N===this.scheme&&I===this.authority&&K===this.path&&L===this.query&&_===this.fragment?this:new m(N,I,K,L,_)}static parse(y,N=!1){let I=f.exec(y);return I?new m(I[2]||u,ye(I[4]||u),ye(I[5]||u),ye(I[7]||u),ye(I[9]||u),N):new m(u,u,u,u,u)}static file(y){let N=u;if(i&&(y=y.replace(/\\/g,c)),y[0]===c&&y[1]===c){let I=y.indexOf(c,2);I===-1?(N=y.substring(2),y=c):(N=y.substring(2,I),y=y.substring(I)||c)}return new m("file",N,y,u,u)}static from(y){let N=new m(y.scheme,y.authority,y.path,y.query,y.fragment);return l(N,!0),N}toString(y=!1){return T(this,y)}toJSON(){return this}static revive(y){if(y){if(y instanceof d)return y;{let N=new m(y);return N._formatted=y.external,N._fsPath=y._sep===h?y.fsPath:null,N}}return y}}let h=i?1:void 0;class m extends d{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=E(this,!1)),this._fsPath}toString(y=!1){return y?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let y={$mid:1};return this._fsPath&&(y.fsPath=this._fsPath,y._sep=h),this._formatted&&(y.external=this._formatted),this.path&&(y.path=this.path),this.scheme&&(y.scheme=this.scheme),this.authority&&(y.authority=this.authority),this.query&&(y.query=this.query),this.fragment&&(y.fragment=this.fragment),y}}let g={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function A(v,y,N){let I,K=-1;for(let L=0;L=97&&_<=122||_>=65&&_<=90||_>=48&&_<=57||_===45||_===46||_===95||_===126||y&&_===47||N&&_===91||N&&_===93||N&&_===58)K!==-1&&(I+=encodeURIComponent(v.substring(K,L)),K=-1),I!==void 0&&(I+=v.charAt(L));else{I===void 0&&(I=v.substr(0,L));let _e=g[_];_e!==void 0?(K!==-1&&(I+=encodeURIComponent(v.substring(K,L)),K=-1),I+=_e):K===-1&&(K=L)}}return K!==-1&&(I+=encodeURIComponent(v.substring(K))),I!==void 0?I:v}function R(v){let y;for(let N=0;N1&&v.scheme==="file"?`//${v.authority}${v.path}`:v.path.charCodeAt(0)===47&&(v.path.charCodeAt(1)>=65&&v.path.charCodeAt(1)<=90||v.path.charCodeAt(1)>=97&&v.path.charCodeAt(1)<=122)&&v.path.charCodeAt(2)===58?y?v.path.substr(1):v.path[1].toLowerCase()+v.path.substr(2):v.path,i&&(N=N.replace(/\//g,"\\")),N}function T(v,y){let N=y?R:A,I="",{scheme:K,authority:L,path:_,query:_e,fragment:Le}=v;if(K&&(I+=K,I+=":"),(L||K==="file")&&(I+=c,I+=c),L){let Z=L.indexOf("@");if(Z!==-1){let jt=L.substr(0,Z);L=L.substr(Z+1),Z=jt.lastIndexOf(":"),Z===-1?I+=N(jt,!1,!1):(I+=N(jt.substr(0,Z),!1,!1),I+=":",I+=N(jt.substr(Z+1),!1,!0)),I+="@"}L=L.toLowerCase(),Z=L.lastIndexOf(":"),Z===-1?I+=N(L,!1,!0):(I+=N(L.substr(0,Z),!1,!0),I+=L.substr(Z))}if(_){if(_.length>=3&&_.charCodeAt(0)===47&&_.charCodeAt(2)===58){let Z=_.charCodeAt(1);Z>=65&&Z<=90&&(_=`/${String.fromCharCode(Z+32)}:${_.substr(3)}`)}else if(_.length>=2&&_.charCodeAt(1)===58){let Z=_.charCodeAt(0);Z>=65&&Z<=90&&(_=`${String.fromCharCode(Z+32)}:${_.substr(2)}`)}I+=N(_,!0,!1)}return _e&&(I+="?",I+=N(_e,!1,!1)),Le&&(I+="#",I+=y?Le:A(Le,!1,!1)),I}function O(v){try{return decodeURIComponent(v)}catch{return v.length>3?v.substr(0,3)+O(v.substr(3)):v}}let P=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ye(v){return v.match(P)?v.replace(P,(y=>O(y))):v}var vr=t(470);let Ee=vr.posix||vr,bt="/";var yt;(function(v){v.joinPath=function(y,...N){return y.with({path:Ee.join(y.path,...N)})},v.resolvePath=function(y,...N){let I=y.path,K=!1;I[0]!==bt&&(I=bt+I,K=!0);let L=Ee.resolve(I,...N);return K&&L[0]===bt&&!y.authority&&(L=L.substring(1)),y.with({path:L})},v.dirname=function(y){if(y.path.length===0||y.path===bt)return y;let N=Ee.dirname(y.path);return N.length===1&&N.charCodeAt(0)===46&&(N=""),y.with({path:N})},v.basename=function(y){return Ee.basename(y.path)},v.extname=function(y){return Ee.extname(y.path)}})(yt||(yt={}))})(),Jd=n})();var{URI:Ge,Utils:jn}=Jd;var Ue;(function(r){r.basename=jn.basename,r.dirname=jn.dirname,r.extname=jn.extname,r.joinPath=jn.joinPath,r.resolvePath=jn.resolvePath;function e(i,s){return i?.toString()===s?.toString()}r.equals=e;function t(i,s){let a=typeof i=="string"?i:i.path,o=typeof s=="string"?s:s.path,l=a.split("/").filter(h=>h.length>0),u=o.split("/").filter(h=>h.length>0),c=0;for(;ci??(i=Vn.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,t??""))}},zi=class{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return V(this.documentMap.values())}addDocument(e){let t=e.uri.toString();if(this.documentMap.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentMap.set(t,e)}getDocument(e){let t=e.toString();return this.documentMap.get(t)}async getOrCreateDocument(e,t){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(n),n)}createDocument(e,t,n){if(n)return this.langiumDocumentFactory.fromString(t,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let t=e.toString(),n=this.documentMap.get(t);return n&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=X.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let t=e.toString(),n=this.documentMap.get(t);return n&&(n.state=X.Changed,this.documentMap.delete(t)),n}};var du=Symbol("ref_resolving"),qi=class{constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,t=C.CancellationToken.None){for(let n of Ye(e.parseResult.value))await ue(t),hn(n).forEach(i=>this.doLink(i,e))}doLink(e,t){var n;let i=e.reference;if(i._ref===void 0){i._ref=du;try{let s=this.getCandidate(e);if(Jt(s))i._ref=s;else if(i._nodeDescription=s,this.langiumDocuments().hasDocument(s.documentUri)){let a=this.loadAstNode(s);i._ref=a??this.createLinkingError(e,s)}else i._ref=void 0}catch(s){console.error(`An error occurred while resolving reference to '${i.$refText}':`,s);let a=(n=s.message)!==null&&n!==void 0?n:String(s);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${a}`})}t.references.push(i)}}unlink(e){for(let t of e.references)delete t._ref,delete t._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,t,n,i){let s=this,a={$refNode:n,$refText:i,get ref(){var o;if(oe(this._ref))return this._ref;if(ho(this._nodeDescription)){let l=s.loadAstNode(this._nodeDescription);this._ref=l??s.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){this._ref=du;let l=ui(e).$document,u=s.getLinkedNode({reference:a,container:e,property:t});if(u.error&&l&&l.state=e.end)return s.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||mo(e,i)))return n}}}findDeclarationNode(e){let t=this.findDeclaration(e);if(t?.$cstNode){let n=this.nameProvider.getNameNode(t);return n??t.$cstNode}}findReferences(e,t){let n=[];if(t.includeDeclaration){let s=this.getReferenceToSelf(e);s&&n.push(s)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(i=i.filter(s=>Ue.equals(s.sourceUri,t.documentUri))),n.push(...i),V(n)}getReferenceToSelf(e){let t=this.nameProvider.getNameNode(e);if(t){let n=Se(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Zt(t),local:!0}}}};var it=class{constructor(e){if(this.map=new Map,e)for(let[t,n]of e)this.add(t,n)}get size(){return $r.sum(V(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(t);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var t;return(t=this.map.get(e))!==null&&t!==void 0?t:[]}has(e,t){if(t===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(t)>=0:!1}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,n)=>t.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return V(this.map.entries()).flatMap(([e,t])=>t.map(n=>[e,n]))}keys(){return V(this.map.keys())}values(){return V(this.map.values()).flat()}entriesGroupedByKey(){return V(this.map.entries())}},Tr=class{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[t,n]of e)this.set(t,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let t=this.map.get(e);return t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}};var Ji=class{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,t=C.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,t)}async computeExportsForNode(e,t,n=ci,i=C.CancellationToken.None){let s=[];this.exportNode(e,s,t);for(let a of n(e))await ue(i),this.exportNode(a,s,t);return s}exportNode(e,t,n){let i=this.nameProvider.getName(e);i&&t.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,t=C.CancellationToken.None){let n=e.parseResult.value,i=new it;for(let s of ct(n))await ue(t),this.processNode(s,e,i);return i}processNode(e,t,n){let i=e.$container;if(i){let s=this.nameProvider.getName(e);s&&n.add(i,this.descriptions.createDescription(e,s,t))}}};var Hn=class{constructor(e,t,n){var i;this.elements=e,this.outerScope=t,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let t=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(t)return t;if(this.outerScope)return this.outerScope.getElement(e)}},Qi=class{constructor(e,t,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let s of e){let a=this.caseInsensitive?s.name.toLowerCase():s.name;this.elements.set(a,s)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(t);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=V(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},cg={getElement(){},getAllElements(){return Zn}};var zn=class{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},Zi=class extends zn{constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){let n=t();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},Rr=class extends zn{constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,n){this.throwIfDisposed(),this.cacheForContext(e).set(t,n)}get(e,t,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(t))return i.get(t);if(n){let s=n();return i.set(t,s),s}else return}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){let t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){let t=this.converter(e),n=this.cache.get(t);return n||(n=new Map,this.cache.set(t,n)),n}},Ga=class extends Rr{constructor(e,t){super(n=>n.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let s of i)this.clear(s)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let s=n.concat(i);for(let a of s)this.clear(a)}))}},qn=class extends Zi{constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}};var es=class{constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new qn(e.shared)}getScope(e){let t=[],n=this.reflection.getReferenceType(e),i=Se(e.container).precomputedScopes;if(i){let a=e.container;do{let o=i.get(a);o.length>0&&t.push(V(o).filter(l=>this.reflection.isSubtype(l.type,n))),a=a.$container}while(a)}let s=this.getGlobalScope(n,e);for(let a=t.length-1;a>=0;a--)s=this.createScope(t[a],s);return s}createScope(e,t,n){return new Hn(V(e),t,n)}createScopeForNodes(e,t,n){let i=V(e).map(s=>{let a=this.nameProvider.getName(s);if(a)return this.descriptions.createDescription(s,a)}).nonNullable();return new Hn(i,t,n)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new Qi(this.indexManager.allElements(e)))}};function hu(r){return typeof r.$comment=="string"}function Zd(r){return typeof r=="object"&&!!r&&("$ref"in r||"$error"in r)}var ts=class{constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){let n=t??{},i=t?.replacer,s=(o,l)=>this.replacer(o,l,n),a=i?(o,l)=>i(o,l,s):s;try{return this.currentDocument=Se(e),JSON.stringify(e,a,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){let n=t??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,t,{refText:n,sourceText:i,textRegions:s,comments:a,uriConverter:o}){var l,u,c,f;if(!this.ignoreProperties.has(e))if(xe(t)){let d=t.ref,h=n?t.$refText:void 0;if(d){let m=Se(d),g="";this.currentDocument&&this.currentDocument!==m&&(o?g=o(m.uri,t):g=m.uri.toString());let A=this.astNodeLocator.getAstNodePath(d);return{$ref:`${g}#${A}`,$refText:h}}else return{$error:(u=(l=t.error)===null||l===void 0?void 0:l.message)!==null&&u!==void 0?u:"Could not resolve reference",$refText:h}}else if(oe(t)){let d;if(s&&(d=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},t)),(!e||t.$document)&&d?.$textRegion&&(d.$textRegion.documentURI=(c=this.currentDocument)===null||c===void 0?void 0:c.uri.toString())),i&&!e&&(d??(d=Object.assign({},t)),d.$sourceText=(f=t.$cstNode)===null||f===void 0?void 0:f.text),a){d??(d=Object.assign({},t));let h=this.commentProvider.getComment(t);h&&(d.$comment=h.replace(/\r/g,""))}return d??t}else return t}addAstNodeRegionWithAssignmentsTo(e){let t=n=>({offset:n.offset,end:n.end,length:n.length,range:n.range});if(e.$cstNode){let n=e.$textRegion=t(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(s=>!s.startsWith("$")).forEach(s=>{let a=Yo(e.$cstNode,s).map(t);a.length!==0&&(i[s]=a)}),e}}linkNode(e,t,n,i,s,a){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let c=0;c{await this.handleException(()=>e.call(t,n,i,s),"An error occurred during validation",i,n)}}async handleException(e,t,n,i){try{await e()}catch(s){if(mt(s))throw s;console.error(`${t}:`,s),s instanceof Error&&s.stack&&console.error(s.stack);let a=s instanceof Error?s.message:String(s);n("error",`${t}: ${a}`,{node:i})}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,t)}getChecks(e,t){let n=V(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(n=n.filter(i=>t.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,n){return async(i,s,a,o)=>{await this.handleException(()=>e.call(n,i,s,a,o),t,s,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}};var is=class{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,t={},n=C.CancellationToken.None){let i=e.parseResult,s=[];if(await ue(n),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(i,s,t),t.stopAfterLexingErrors&&s.some(a=>{var o;return((o=a.data)===null||o===void 0?void 0:o.code)===Je.LexingError})||(this.processParsingErrors(i,s,t),t.stopAfterParsingErrors&&s.some(a=>{var o;return((o=a.data)===null||o===void 0?void 0:o.code)===Je.ParsingError}))||(this.processLinkingErrors(e,s,t),t.stopAfterLinkingErrors&&s.some(a=>{var o;return((o=a.data)===null||o===void 0?void 0:o.code)===Je.LinkingError}))))return s;try{s.push(...await this.validateAst(i.value,t,n))}catch(a){if(mt(a))throw a;console.error("An error occurred during validation:",a)}return await ue(n),s}processLexingErrors(e,t,n){var i,s,a;let o=[...e.lexerErrors,...(s=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&s!==void 0?s:[]];for(let l of o){let u=(a=l.severity)!==null&&a!==void 0?a:"error",c={severity:Ua(u),range:{start:{line:l.line-1,character:l.column-1},end:{line:l.line-1,character:l.column+l.length-1}},message:l.message,data:th(u),source:this.getSource()};t.push(c)}}processParsingErrors(e,t,n){for(let i of e.parserErrors){let s;if(isNaN(i.token.startOffset)){if("previousToken"in i){let a=i.previousToken;if(isNaN(a.startOffset)){let o={line:0,character:0};s={start:o,end:o}}else{let o={line:a.endLine-1,character:a.endColumn};s={start:o,end:o}}}}else s=Ir(i.token);if(s){let a={severity:Ua("error"),range:s,message:i.message,data:xr(Je.ParsingError),source:this.getSource()};t.push(a)}}}processLinkingErrors(e,t,n){for(let i of e.references){let s=i.error;if(s){let a={node:s.container,property:s.property,index:s.index,data:{code:Je.LinkingError,containerType:s.container.$type,property:s.property,refText:s.reference.$refText}};t.push(this.toDiagnostic("error",s.message,a))}}}async validateAst(e,t,n=C.CancellationToken.None){let i=[],s=(a,o,l)=>{i.push(this.toDiagnostic(a,o,l))};return await this.validateAstBefore(e,t,s,n),await this.validateAstNodes(e,t,s,n),await this.validateAstAfter(e,t,s,n),i}async validateAstBefore(e,t,n,i=C.CancellationToken.None){var s;let a=this.validationRegistry.checksBefore;for(let o of a)await ue(i),await o(e,n,(s=t.categories)!==null&&s!==void 0?s:[],i)}async validateAstNodes(e,t,n,i=C.CancellationToken.None){await Promise.all(Ye(e).map(async s=>{await ue(i);let a=this.validationRegistry.getChecks(s.$type,t.categories);for(let o of a)await o(s,n,i)}))}async validateAstAfter(e,t,n,i=C.CancellationToken.None){var s;let a=this.validationRegistry.checksAfter;for(let o of a)await ue(i),await o(e,n,(s=t.categories)!==null&&s!==void 0?s:[],i)}toDiagnostic(e,t,n){return{message:t,range:eh(n),severity:Ua(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};function eh(r){if(r.range)return r.range;let e;return typeof r.property=="string"?e=mi(r.node.$cstNode,r.property,r.index):typeof r.keyword=="string"&&(e=Qo(r.node.$cstNode,r.keyword,r.index)),e??(e=r.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function Ua(r){switch(r){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+r)}}function th(r){switch(r){case"error":return xr(Je.LexingError);case"warning":return xr(Je.LexingWarning);case"info":return xr(Je.LexingInfo);case"hint":return xr(Je.LexingHint);default:throw new Error("Invalid diagnostic severity: "+r)}}var Je;(function(r){r.LexingError="lexing-error",r.LexingWarning="lexing-warning",r.LexingInfo="lexing-info",r.LexingHint="lexing-hint",r.ParsingError="parsing-error",r.LinkingError="linking-error"})(Je||(Je={}));var ss=class{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,n){let i=n??Se(e);t??(t=this.nameProvider.getName(e));let s=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${s} has no name.`);let a,o=()=>{var l;return a??(a=Zt((l=this.nameProvider.getNameNode(e))!==null&&l!==void 0?l:e.$cstNode))};return{node:e,name:t,get nameSegment(){return o()},selectionSegment:Zt(e.$cstNode),type:e.$type,documentUri:i.uri,path:s}}},as=class{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=C.CancellationToken.None){let n=[],i=e.parseResult.value;for(let s of Ye(i))await ue(t),hn(s).filter(a=>!Jt(a)).forEach(a=>{let o=this.createDescription(a);o&&n.push(o)});return n}createDescription(e){let t=e.reference.$nodeDescription,n=e.reference.$refNode;if(!t||!n)return;let i=Se(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:t.documentUri,targetPath:t.path,segment:Zt(n),local:Ue.equals(t.documentUri,i)}}};var os=class{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let t=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return t+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((i,s)=>{if(!i||s.length===0)return i;let a=s.indexOf(this.indexSeparator);if(a>0){let o=s.substring(0,a),l=parseInt(s.substring(a+1)),u=i[o];return u?.[l]}return i[s]},e)}};var re={};U(re,Ku(ou(),1));var ls=class{constructor(e){this._ready=new Fe,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new re.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var t,n;this.workspaceConfig=(n=(t=e.capabilities.workspace)===null||t===void 0?void 0:t.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let t=this.serviceRegistry.all;e.register({section:t.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let t=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(t);t.forEach((i,s)=>{this.updateSectionConfiguration(i.section,n[s])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(t=>{let n=e.settings[t];this.updateSectionConfiguration(t,n),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:n})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}};var Vt;(function(r){function e(t){return{dispose:async()=>await t()}}r.create=e})(Vt||(Vt={}));var us=class{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new it,this.documentPhaseListeners=new it,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=X.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},n=C.CancellationToken.None){var i,s;for(let a of e){let o=a.uri.toString();if(a.state===X.Validated){if(typeof t.validation=="boolean"&&t.validation)a.state=X.IndexedReferences,a.diagnostics=void 0,this.buildState.delete(o);else if(typeof t.validation=="object"){let l=this.buildState.get(o),u=(i=l?.result)===null||i===void 0?void 0:i.validationChecks;if(u){let f=((s=t.validation.categories)!==null&&s!==void 0?s:Xn.all).filter(d=>!u.includes(d));f.length>0&&(this.buildState.set(o,{completed:!1,options:{validation:Object.assign(Object.assign({},t.validation),{categories:f})},result:l.result}),a.state=X.IndexedReferences)}}}else this.buildState.delete(o)}this.currentState=X.Changed,await this.emitUpdate(e.map(a=>a.uri),[]),await this.buildDocuments(e,t,n)}async update(e,t,n=C.CancellationToken.None){this.currentState=X.Changed;for(let a of t)this.langiumDocuments.deleteDocument(a),this.buildState.delete(a.toString()),this.indexManager.remove(a);for(let a of e){if(!this.langiumDocuments.invalidateDocument(a)){let l=this.langiumDocumentFactory.fromModel({$type:"INVALID"},a);l.state=X.Changed,this.langiumDocuments.addDocument(l)}this.buildState.delete(a.toString())}let i=V(e).concat(t).map(a=>a.toString()).toSet();this.langiumDocuments.all.filter(a=>!i.has(a.uri.toString())&&this.shouldRelink(a,i)).forEach(a=>{this.serviceRegistry.getServices(a.uri).references.Linker.unlink(a),a.state=Math.min(a.state,X.ComputedScopes),a.diagnostics=void 0}),await this.emitUpdate(e,t),await ue(n);let s=this.sortDocuments(this.langiumDocuments.all.filter(a=>{var o;return a.staten(e,t)))}sortDocuments(e){let t=0,n=e.length-1;for(;t=0&&!this.hasTextDocument(e[n]);)n--;tn.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),Vt.create(()=>{let t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}async buildDocuments(e,t,n){this.prepareBuild(e,t),await this.runCancelable(e,X.Parsed,n,s=>this.langiumDocumentFactory.update(s,n)),await this.runCancelable(e,X.IndexedContent,n,s=>this.indexManager.updateContent(s,n)),await this.runCancelable(e,X.ComputedScopes,n,async s=>{let a=this.serviceRegistry.getServices(s.uri).references.ScopeComputation;s.precomputedScopes=await a.computeLocalScopes(s,n)}),await this.runCancelable(e,X.Linked,n,s=>this.serviceRegistry.getServices(s.uri).references.Linker.link(s,n)),await this.runCancelable(e,X.IndexedReferences,n,s=>this.indexManager.updateReferences(s,n));let i=e.filter(s=>this.shouldValidate(s));await this.runCancelable(i,X.Validated,n,s=>this.validate(s,n));for(let s of e){let a=this.buildState.get(s.uri.toString());a&&(a.completed=!0)}}prepareBuild(e,t){for(let n of e){let i=n.uri.toString(),s=this.buildState.get(i);(!s||s.completed)&&this.buildState.set(i,{completed:!1,options:t,result:s?.result})}}async runCancelable(e,t,n,i){let s=e.filter(o=>o.stateo.state===t);await this.notifyBuildPhase(a,t,n),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),Vt.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),Vt.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,n){let i;if(t&&"path"in t?i=t:n=t,n??(n=C.CancellationToken.None),i){let s=this.langiumDocuments.getDocument(i);if(s&&s.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(pt):new Promise((s,a)=>{let o=this.onBuildPhase(e,()=>{if(o.dispose(),l.dispose(),i){let u=this.langiumDocuments.getDocument(i);s(u?.uri)}else s(void 0)}),l=n.onCancellationRequested(()=>{o.dispose(),l.dispose(),a(pt)})})}async notifyDocumentPhase(e,t,n){let s=this.documentPhaseListeners.get(t).slice();for(let a of s)try{await a(e,n)}catch(o){if(!mt(o))throw o}}async notifyBuildPhase(e,t,n){if(e.length===0)return;let s=this.buildPhaseListeners.get(t).slice();for(let a of s)await ue(n),await a(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){var n,i;let s=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,a=this.getBuildOptions(e).validation,o=typeof a=="object"?a:void 0,l=await s.validateDocument(e,o,t);e.diagnostics?e.diagnostics.push(...l):e.diagnostics=l;let u=this.buildState.get(e.uri.toString());if(u){(n=u.result)!==null&&n!==void 0||(u.result={});let c=(i=o?.categories)!==null&&i!==void 0?i:Xn.all;u.result.validationChecks?u.result.validationChecks.push(...c):u.result.validationChecks=[...c]}}getBuildOptions(e){var t,n;return(n=(t=this.buildState.get(e.uri.toString()))===null||t===void 0?void 0:t.options)!==null&&n!==void 0?n:{}}};var cs=class{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Rr,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){let n=Se(e).uri,i=[];return this.referenceIndex.forEach(s=>{s.forEach(a=>{Ue.equals(a.targetUri,n)&&a.targetPath===t&&i.push(a)})}),V(i)}allElements(e,t){let n=V(this.symbolIndex.keys());return t&&(n=n.filter(i=>!t||t.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,t){var n;return t?this.symbolByTypeIndex.get(e,t,()=>{var s;return((s=this.symbolIndex.get(e))!==null&&s!==void 0?s:[]).filter(o=>this.astReflection.isSubtype(o.type,t))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(e,t=C.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,t),s=e.uri.toString();this.symbolIndex.set(s,i),this.symbolByTypeIndex.clear(s)}async updateReferences(e,t=C.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,t){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&t.has(i.targetUri.toString())):!1}};var fs=class{constructor(e){this.initialBuildOptions={},this._ready=new Fe,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var t;this.folders=(t=e.workspaceFolders)!==null&&t!==void 0?t:void 0}initialized(e){return this.mutex.write(t=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],t)})}async initializeWorkspace(e,t=C.CancellationToken.None){let n=await this.performStartup(e);await ue(t),await this.documentBuilder.build(n,this.initialBuildOptions,t)}async performStartup(e){let t=this.serviceRegistry.all.flatMap(s=>s.LanguageMetaData.fileExtensions),n=[],i=s=>{n.push(s),this.langiumDocuments.hasDocument(s.uri)||this.langiumDocuments.addDocument(s)};return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(s=>[s,this.getRootFolder(s)]).map(async s=>this.traverseFolder(...s,t,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return Ge.parse(e.uri)}async traverseFolder(e,t,n,i){let s=await this.fileSystemProvider.readDirectory(t);await Promise.all(s.map(async a=>{if(this.includeEntry(e,a,n)){if(a.isDirectory)await this.traverseFolder(e,a.uri,n,i);else if(a.isFile){let o=await this.langiumDocuments.getOrCreateDocument(a.uri);i(o)}}}))}includeEntry(e,t,n){let i=Ue.basename(t.uri);if(i.startsWith("."))return!1;if(t.isDirectory)return i!=="node_modules"&&i!=="out";if(t.isFile){let s=Ue.extname(t.uri);return n.includes(s)}return!1}};var ds=class{buildUnexpectedCharactersMessage(e,t,n,i,s){return $n.buildUnexpectedCharactersMessage(e,t,n,i,s)}buildUnableToPopLexerModeMessage(e){return $n.buildUnableToPopLexerModeMessage(e)}},Ba={mode:"full"},Er=class{constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);let n=pu(t)?Object.values(t):t,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new ie(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=Ba){var n,i,s;let a=this.chevrotainLexer.tokenize(e);return{tokens:a.tokens,errors:a.errors,hidden:(n=a.groups.hidden)!==null&&n!==void 0?n:[],report:(s=(i=this.tokenBuilder).flushLexingReport)===null||s===void 0?void 0:s.call(i,e)}}toTokenTypeDictionary(e){if(pu(e))return e;let t=mu(e)?Object.values(e.modes).flat():e,n={};return t.forEach(i=>n[i.name]=i),n}};function Wa(r){return Array.isArray(r)&&(r.length===0||"name"in r[0])}function mu(r){return r&&"modes"in r&&"defaultMode"in r}function pu(r){return!Wa(r)&&!mu(r)}function Tu(r,e,t){let n,i;typeof r=="string"?(i=e,n=t):(i=r.range.start,n=e),i||(i=B.create(0,0));let s=ih(r),a=xu(n),o=dg({lines:s,position:i,options:a});return yg({index:0,tokens:o,position:i})}function Ru(r,e){let t=xu(e),n=ih(r);if(n.length===0)return!1;let i=n[0],s=n[n.length-1],a=t.start,o=t.end;return!!a?.exec(i)&&!!o?.exec(s)}function ih(r){let e="";return typeof r=="string"?e=r:e=r.text,e.split(Wo)}var rh=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,fg=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function dg(r){var e,t,n;let i=[],s=r.position.line,a=r.position.character;for(let o=0;o=c.length){if(i.length>0){let h=B.create(s,a);i.push({type:"break",content:"",range:G.create(h,h)})}}else{rh.lastIndex=f;let h=rh.exec(c);if(h){let m=h[0],g=h[1],A=B.create(s,a+f),R=B.create(s,a+f+m.length);i.push({type:"tag",content:g,range:G.create(A,R)}),f+=m.length,f=yu(c,f)}if(f0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function hg(r,e,t,n){let i=[];if(r.length===0){let s=B.create(t,n),a=B.create(t,n+e.length);i.push({type:"text",content:e,range:G.create(s,a)})}else{let s=0;for(let o of r){let l=o.index,u=e.substring(s,l);u.length>0&&i.push({type:"text",content:e.substring(s,l),range:G.create(B.create(t,s+n),B.create(t,l+n))});let c=u.length+1,f=o[1];if(i.push({type:"inline-tag",content:f,range:G.create(B.create(t,s+c+n),B.create(t,s+c+f.length+n))}),c+=f.length,o.length===4){c+=o[2].length;let d=o[3];i.push({type:"text",content:d,range:G.create(B.create(t,s+c+n),B.create(t,s+c+d.length+n))})}else i.push({type:"text",content:"",range:G.create(B.create(t,s+c+n),B.create(t,s+c+n))});s=l+o[0].length}let a=e.substring(s);a.length>0&&i.push({type:"text",content:a,range:G.create(B.create(t,s+n),B.create(t,s+n+a.length))})}return i}var pg=/\S/,mg=/\s*$/;function yu(r,e){let t=r.substring(e).match(pg);return t?e+t.index:r.length}function gg(r){let e=r.match(mg);if(e&&typeof e.index=="number")return e.index}function yg(r){var e,t,n,i;let s=B.create(r.position.line,r.position.character);if(r.tokens.length===0)return new Ka([],G.create(s,s));let a=[];for(;r.indext.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let t of this.elements)if(e.length===0)e=t.toString();else{let n=t.toString();e+=nh(e)+n}return e.trim()}toMarkdown(e){let t="";for(let n of this.elements)if(t.length===0)t=n.toMarkdown(e);else{let i=n.toMarkdown(e);t+=nh(t)+i}return t.trim()}},hs=class{constructor(e,t,n,i){this.name=e,this.content=t,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}
+${t}`),this.inline?`{${e}}`:e}toMarkdown(e){var t,n;return(n=(t=e?.renderTag)===null||t===void 0?void 0:t.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let t=this.content.toMarkdown(e);if(this.inline){let s=Eg(this.name,t,e??{});if(typeof s=="string")return s}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${t}`:this.content.inlines.length>1&&(i=`${i}
+${t}`),this.inline?`{${i}}`:i}};function Eg(r,e,t){var n,i;if(r==="linkplain"||r==="linkcode"||r==="link"){let s=e.indexOf(" "),a=e;if(s>0){let l=yu(e,s);a=e.substring(l),e=e.substring(0,s)}return(r==="linkcode"||r==="link"&&t.link==="code")&&(a=`\`${a}\``),(i=(n=t.renderLink)===null||n===void 0?void 0:n.call(t,e,a))!==null&&i!==void 0?i:Ag(e,a)}}function Ag(r,e){try{return Ge.parse(r,!0),`[${e}](${r})`}catch{return r}}var ps=class{constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;tn.range.start.line&&(e+=`
+`)}return e}toMarkdown(e){let t="";for(let n=0;ni.range.start.line&&(t+=`
+`)}return t}},Va=class{constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};function nh(r){return r.endsWith(`
+`)?`
+`:`
+
+`}var ms=class{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let t=this.commentProvider.getComment(e);if(t&&Ru(t))return Tu(t).toMarkdown({renderLink:(i,s)=>this.documentationLinkRenderer(e,i,s),renderTag:i=>this.documentationTagRenderer(e,i)})}documentationLinkRenderer(e,t,n){var i;let s=(i=this.findNameInPrecomputedScopes(e,t))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,t);if(s&&s.nameSegment){let a=s.nameSegment.range.start.line+1,o=s.nameSegment.range.start.character+1,l=s.documentUri.with({fragment:`L${a},${o}`});return`[${n}](${l.toString()})`}else return}documentationTagRenderer(e,t){}findNameInPrecomputedScopes(e,t){let i=Se(e).precomputedScopes;if(!i)return;let s=e;do{let o=i.get(s).find(l=>l.name===t);if(o)return o;s=s.$container}while(s)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(i=>i.name===t)}};var gs=class{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var t;return hu(e)?e.$comment:(t=yo(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||t===void 0?void 0:t.text}};var ys=class{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},Eu=class{constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){let n=await this.acquireParserWorker(t),i=new Fe,s,a=t.onCancellationRequested(()=>{s=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(o=>{let l=this.hydrator.hydrate(o);i.resolve(l)}).catch(o=>{i.reject(o)}).finally(()=>{a.dispose(),clearTimeout(s)}),i.promise}terminateWorker(e){e.terminate();let t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let t=new Fe;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(t);n>=0&&this.queue.splice(n,1),t.reject(pt)}),this.queue.push(t),t.promise}},Au=class{get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,n,i){this.onReadyEmitter=new re.Emitter,this.deferred=new Fe,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,t(s=>{let a=s;this.deferred.resolve(a),this.unlock()}),n(s=>{this.deferred.reject(s),this.unlock()})}terminate(){this.deferred.reject(pt),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new Fe,this.sendMessage(e),this.deferred.promise}};var Ts=class{constructor(){this.previousTokenSource=new C.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let t=Da();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,n=C.CancellationToken.None){let i=new Fe,s={action:t,deferred:i,cancellationToken:n};return e.push(s),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:n,cancellationToken:i})=>{try{let s=await Promise.resolve().then(()=>t(i));n.resolve(s)}catch(s){mt(s)?n.resolve(void 0):n.reject(s)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}};var Rs=class{constructor(e){this.grammarElementIdMap=new Tr,this.tokenTypeIdMap=new Tr,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(t=>Object.assign(Object.assign({},t),{message:t.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let t=new Map,n=new Map;for(let i of Ye(e))t.set(i,{});if(e.$cstNode)for(let i of Qt(e.$cstNode))n.set(i,{});return{astNodes:t,cstNodes:n}}dehydrateAstNode(e,t){let n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(let[i,s]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(s)){let a=[];n[i]=a;for(let o of s)oe(o)?a.push(this.dehydrateAstNode(o,t)):xe(o)?a.push(this.dehydrateReference(o,t)):a.push(o)}else oe(s)?n[i]=this.dehydrateAstNode(s,t):xe(s)?n[i]=this.dehydrateReference(s,t):s!==void 0&&(n[i]=s);return n}dehydrateReference(e,t){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=t.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,t){let n=t.cstNodes.get(e);return Qn(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=t.astNodes.get(e.astNode),et(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,t)):Ft(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let t=e.value,n=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,n)}}createHydrationContext(e){let t=new Map,n=new Map;for(let s of Ye(e))t.set(s,{});let i;if(e.$cstNode)for(let s of Qt(e.$cstNode)){let a;"fullText"in s?(a=new Un(s.fullText),i=a):"content"in s?a=new mr:"tokenType"in s&&(a=this.hydrateCstLeafNode(s)),a&&(n.set(s,a),a.root=i)}return{astNodes:t,cstNodes:n}}hydrateAstNode(e,t){let n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=t.cstNodes.get(e.$cstNode));for(let[i,s]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(s)){let a=[];n[i]=a;for(let o of s)oe(o)?a.push(this.setParent(this.hydrateAstNode(o,t),n)):xe(o)?a.push(this.hydrateReference(o,n,i,t)):a.push(o)}else oe(s)?n[i]=this.setParent(this.hydrateAstNode(s,t),n):xe(s)?n[i]=this.hydrateReference(s,n,i,t):s!==void 0&&(n[i]=s);return n}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,n,i){return this.linker.buildReference(t,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,n=0){let i=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=t.astNodes.get(e.astNode),et(i))for(let s of e.content){let a=this.hydrateCstNode(s,t,n++);i.content.push(a)}return i}hydrateCstLeafNode(e){let t=this.getTokenType(e.tokenType),n=e.offset,i=e.length,s=e.startLine,a=e.startColumn,o=e.endLine,l=e.endColumn,u=e.hidden;return new pr(n,i,{start:{line:s,character:a},end:{line:o,character:l}},t,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let t of Ye(this.grammar))ai(t)&&this.grammarElementIdMap.set(t,e++)}};function vu(r){return{documentation:{CommentProvider:e=>new gs(e),DocumentationProvider:e=>new ms(e)},parser:{AsyncParser:e=>new ys(e),GrammarConfig:e=>nl(e),LangiumParser:e=>tu(e),CompletionParser:e=>eu(e),ValueConverter:()=>new yr,TokenBuilder:()=>new Pt,Lexer:e=>new Er(e),ParserErrorMessageProvider:()=>new Bn,LexerErrorMessageProvider:()=>new ds},workspace:{AstNodeLocator:()=>new os,AstNodeDescriptionProvider:e=>new ss(e),ReferenceDescriptionProvider:e=>new as(e)},references:{Linker:e=>new qi(e),NameProvider:()=>new Xi,ScopeProvider:e=>new es(e),ScopeComputation:e=>new Ji(e),References:e=>new Yi(e)},serializer:{Hydrator:e=>new Rs(e),JsonSerializer:e=>new ts(e)},validation:{DocumentValidator:e=>new is(e),ValidationRegistry:e=>new ns(e)},shared:()=>r.shared}}function ku(r){return{ServiceRegistry:e=>new rs(e),workspace:{LangiumDocuments:e=>new zi(e),LangiumDocumentFactory:e=>new Hi(e),DocumentBuilder:e=>new us(e),IndexManager:e=>new cs(e),WorkspaceManager:e=>new fs(e),FileSystemProvider:e=>r.fileSystemProvider(e),WorkspaceLock:()=>new Ts,ConfigurationProvider:e=>new ls(e)}}}var $u;(function(r){r.merge=(e,t)=>ja(ja({},e),t)})($u||($u={}));function Ha(r,e,t,n,i,s,a,o,l){let u=[r,e,t,n,i,s,a,o,l].reduce(ja,{});return dh(u)}var ch=Symbol("isProxy");function fh(r){if(r&&r[ch])for(let e of Object.values(r))fh(e);return r}function dh(r,e){let t=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(n,i)=>i===ch?!0:uh(n,i,r,e||t),getOwnPropertyDescriptor:(n,i)=>(uh(n,i,r,e||t),Object.getOwnPropertyDescriptor(n,i)),has:(n,i)=>i in r,ownKeys:()=>[...Object.getOwnPropertyNames(r)]});return t}var lh=Symbol();function uh(r,e,t,n){if(e in r){if(r[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:r[e]});if(r[e]===lh)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return r[e]}else if(e in t){let i=t[e];r[e]=lh;try{r[e]=typeof i=="function"?i(n):dh(i,n)}catch(s){throw r[e]=s instanceof Error?s:void 0,s}return r[e]}else return}function ja(r,e){if(e){for(let[t,n]of Object.entries(e))if(n!==void 0){let i=r[t];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?r[t]=ja(i,n):r[t]=n}}return r}var Iu={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]},Ar;(function(r){r.REGULAR="indentation-sensitive",r.IGNORE_INDENTATION="ignore-indentation"})(Ar||(Ar={}));var za=class extends Pt{constructor(e=Iu){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},Iu),e),this.indentTokenType=Ut({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=Ut({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){let n=super.buildTokens(e,t);if(!Wa(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:s,whitespaceTokenName:a,ignoreIndentationDelimiters:o}=this.options,l,u,c,f=[];for(let d of n){for(let[h,m]of o)d.name===h?d.PUSH_MODE=Ar.IGNORE_INDENTATION:d.name===m&&(d.POP_MODE=!0);d.name===s?l=d:d.name===i?u=d:d.name===a?c=d:f.push(d)}if(!l||!u||!c)throw new Error("Some indentation/whitespace tokens not found!");return o.length>0?{modes:{[Ar.REGULAR]:[l,u,...f,c],[Ar.IGNORE_INDENTATION]:[...f,c]},defaultMode:Ar.REGULAR}:[l,u,c,...f]}flushLexingReport(e){let t=super.flushLexingReport(e);return Object.assign(Object.assign({},t),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,t){return t===0||`\r
+`.includes(e[t-1])}matchWhitespace(e,t,n,i){var s;this.whitespaceRegExp.lastIndex=t;let a=this.whitespaceRegExp.exec(e);return{currIndentLevel:(s=a?.[0].length)!==null&&s!==void 0?s:0,prevIndentLevel:this.indentationStack.at(-1),match:a}}createIndentationTokenInstance(e,t,n,i){let s=this.getLineNumber(t,i);return wt(e,n,i,i+n.length,s,s,1,n.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,n,i){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:s,prevIndentLevel:a,match:o}=this.matchWhitespace(e,t,n,i);return s<=a?null:(this.indentationStack.push(s),o)}dedentMatcher(e,t,n,i){var s,a,o,l;if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:u,prevIndentLevel:c,match:f}=this.matchWhitespace(e,t,n,i);if(u>=c)return null;let d=this.indentationStack.lastIndexOf(u);if(d===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${u} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:(a=(s=f?.[0])===null||s===void 0?void 0:s.length)!==null&&a!==void 0?a:0,line:this.getLineNumber(e,t),column:1}),null;let h=this.indentationStack.length-d-1,m=(l=(o=e.substring(0,t).match(/[\r\n]+$/))===null||o===void 0?void 0:o[0].length)!==null&&l!==void 0?l:1;for(let g=0;g1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},Nu=class extends Er{constructor(e){if(super(e),e.parser.TokenBuilder instanceof za)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,t=Ba){let n=super.tokenize(e),i=n.report;t?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:s,dedentTokenType:a}=this.indentationTokenBuilder,o=s.tokenTypeIdx,l=a.tokenTypeIdx,u=[],c=n.tokens.length-1;for(let f=0;f=0&&u.push(n.tokens[c]),n.tokens=u,n}};var W={};zt(W,{AstUtils:()=>Ds,BiMap:()=>Tr,Cancellation:()=>C,ContextCache:()=>Rr,CstUtils:()=>Cs,DONE_RESULT:()=>Ne,Deferred:()=>Fe,Disposable:()=>Vt,DisposableCache:()=>zn,DocumentCache:()=>Ga,EMPTY_STREAM:()=>Zn,ErrorWithLocation:()=>er,GrammarUtils:()=>Ws,MultiMap:()=>it,OperationCancelled:()=>pt,Reduction:()=>$r,RegExpUtils:()=>Us,SimpleCache:()=>Zi,StreamImpl:()=>Ve,TreeStreamImpl:()=>ot,URI:()=>Ge,UriUtils:()=>Ue,WorkspaceCache:()=>qn,assertUnreachable:()=>ut,delayNextTick:()=>cu,interruptAndCheck:()=>ue,isOperationCancelled:()=>mt,loadGrammarFromJson:()=>gt,setInterruptionPeriod:()=>zd,startCancelableOperation:()=>Da,stream:()=>V});U(W,re);var qa=class{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},Cu={fileSystemProvider:()=>new qa};var vg={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},kg={AstReflection:()=>new dn};function $g(){let r=Ha(ku(Cu),kg),e=Ha(vu({shared:r}),vg);return r.ServiceRegistry.register(e),e}function gt(r){var e;let t=$g(),n=t.serializer.JsonSerializer.deserialize(r);return t.shared.workspace.LangiumDocumentFactory.fromModel(n,Ge.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}U(ce,W);var Ig=Object.defineProperty,D=(r,e)=>Ig(r,"name",{value:e,configurable:!0}),hh="Statement",ro="Architecture";function Ng(r){return st.isInstance(r,ro)}D(Ng,"isArchitecture");var Xa="Axis",xs="Branch";function Cg(r){return st.isInstance(r,xs)}D(Cg,"isBranch");var Ya="Checkout",Ja="CherryPicking",Su="ClassDefStatement",Es="Commit";function Sg(r){return st.isInstance(r,Es)}D(Sg,"isCommit");var wu="Curve",_u="Edge",Lu="Entry",As="GitGraph";function wg(r){return st.isInstance(r,As)}D(wg,"isGitGraph");var Ou="Group",no="Info";function _g(r){return st.isInstance(r,no)}D(_g,"isInfo");var Qa="Item",Pu="Junction",vs="Merge";function Lg(r){return st.isInstance(r,vs)}D(Lg,"isMerge");var bu="Option",io="Packet";function Og(r){return st.isInstance(r,io)}D(Og,"isPacket");var so="PacketBlock";function Pg(r){return st.isInstance(r,so)}D(Pg,"isPacketBlock");var ao="Pie";function bg(r){return st.isInstance(r,ao)}D(bg,"isPie");var oo="PieSection";function Mg(r){return st.isInstance(r,oo)}D(Mg,"isPieSection");var Mu="Radar",Du="Service",lo="Treemap";function Dg(r){return st.isInstance(r,lo)}D(Dg,"isTreemap");var Fu="TreemapRow",Za="Direction",eo="Leaf",to="Section",Eh=class extends Yt{static{D(this,"MermaidAstReflection")}getAllTypes(){return[ro,Xa,xs,Ya,Ja,Su,Es,wu,Za,_u,Lu,As,Ou,no,Qa,Pu,eo,vs,bu,io,so,ao,oo,Mu,to,Du,hh,lo,Fu]}computeIsSubtype(r,e){switch(r){case xs:case Ya:case Ja:case Es:case vs:return this.isSubtype(hh,e);case Za:return this.isSubtype(As,e);case eo:case to:return this.isSubtype(Qa,e);default:return!1}}getReferenceType(r){let e=`${r.container.$type}:${r.property}`;switch(e){case"Entry:axis":return Xa;default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(r){switch(r){case ro:return{name:ro,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case Xa:return{name:Xa,properties:[{name:"label"},{name:"name"}]};case xs:return{name:xs,properties:[{name:"name"},{name:"order"}]};case Ya:return{name:Ya,properties:[{name:"branch"}]};case Ja:return{name:Ja,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case Su:return{name:Su,properties:[{name:"className"},{name:"styleText"}]};case Es:return{name:Es,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case wu:return{name:wu,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case _u:return{name:_u,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case Lu:return{name:Lu,properties:[{name:"axis"},{name:"value"}]};case As:return{name:As,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case Ou:return{name:Ou,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case no:return{name:no,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case Qa:return{name:Qa,properties:[{name:"classSelector"},{name:"name"}]};case Pu:return{name:Pu,properties:[{name:"id"},{name:"in"}]};case vs:return{name:vs,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case bu:return{name:bu,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case io:return{name:io,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case so:return{name:so,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case ao:return{name:ao,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case oo:return{name:oo,properties:[{name:"label"},{name:"value"}]};case Mu:return{name:Mu,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case Du:return{name:Du,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case lo:return{name:lo,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case Fu:return{name:Fu,properties:[{name:"indent"},{name:"item"}]};case Za:return{name:Za,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case eo:return{name:eo,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case to:return{name:to,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:r,properties:[]}}}},st=new Eh,ph,Fg=D(()=>ph??(ph=gt(`{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"InfoGrammar"),mh,Gg=D(()=>mh??(mh=gt(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),gh,Ug=D(()=>gh??(gh=gt(`{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"PieGrammar"),yh,Bg=D(()=>yh??(yh=gt(`{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"ArchitectureGrammar"),Th,Wg=D(()=>Th??(Th=gt(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),Rh,Kg=D(()=>Rh??(Rh=gt(`{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`)),"RadarGrammar"),xh,Vg=D(()=>xh??(xh=gt(`{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammar"),jg={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Hg={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},zg={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},qg={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Xg={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Yg={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Jg={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},J$={AstReflection:D(()=>new Eh,"AstReflection")},Q$={Grammar:D(()=>Fg(),"Grammar"),LanguageMetaData:D(()=>jg,"LanguageMetaData"),parser:{}},Z$={Grammar:D(()=>Gg(),"Grammar"),LanguageMetaData:D(()=>Hg,"LanguageMetaData"),parser:{}},eI={Grammar:D(()=>Ug(),"Grammar"),LanguageMetaData:D(()=>zg,"LanguageMetaData"),parser:{}},tI={Grammar:D(()=>Bg(),"Grammar"),LanguageMetaData:D(()=>qg,"LanguageMetaData"),parser:{}},rI={Grammar:D(()=>Wg(),"Grammar"),LanguageMetaData:D(()=>Xg,"LanguageMetaData"),parser:{}},nI={Grammar:D(()=>Kg(),"Grammar"),LanguageMetaData:D(()=>Yg,"LanguageMetaData"),parser:{}},iI={Grammar:D(()=>Vg(),"Grammar"),LanguageMetaData:D(()=>Jg,"LanguageMetaData"),parser:{}},Qg=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Zg=/accTitle[\t ]*:([^\n\r]*)/,ey=/title([\t ][^\n\r]*|)/,ty={ACC_DESCR:Qg,ACC_TITLE:Zg,TITLE:ey},ry=class extends yr{static{D(this,"AbstractMermaidValueConverter")}runConverter(r,e,t){let n=this.runCommonConverter(r,e,t);return n===void 0&&(n=this.runCustomConverter(r,e,t)),n===void 0?super.runConverter(r,e,t):n}runCommonConverter(r,e,t){let n=ty[r.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,`
+`)}}},aI=class extends ry{static{D(this,"CommonValueConverter")}runCustomConverter(r,e,t){}},ny=class extends Pt{static{D(this,"AbstractMermaidTokenBuilder")}constructor(r){super(),this.keywords=new Set(r)}buildKeywordTokens(r,e,t){let n=super.buildKeywordTokens(r,e,t);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},lI=class extends ny{static{D(this,"CommonTokenBuilder")}};export{vu as a,ku as b,Ha as c,Cu as d,ce as e,D as f,J$ as g,Q$ as h,Z$ as i,eI as j,tI as k,rI as l,nI as m,iI as n,ry as o,aI as p,ny as q};
+//# sourceMappingURL=chunk-LBFZT66H.min.js.map
diff --git a/docs/public/chunk-LBFZT66H.min.js.map b/docs/public/chunk-LBFZT66H.min.js.map
new file mode 100755
index 0000000..dac7e3c
--- /dev/null
+++ b/docs/public/chunk-LBFZT66H.min.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/vscode-jsonrpc/lib/common/ral.js", "../../node_modules/vscode-jsonrpc/lib/common/is.js", "../../node_modules/vscode-jsonrpc/lib/common/events.js", "../../node_modules/vscode-jsonrpc/lib/common/cancellation.js", "../../node_modules/langium/src/index.ts", "../../node_modules/langium/src/utils/cst-utils.ts", "../../node_modules/langium/src/syntax-tree.ts", "../../node_modules/langium/src/utils/stream.ts", "../../node_modules/langium/src/utils/grammar-utils.ts", "../../node_modules/langium/src/utils/errors.ts", "../../node_modules/langium/src/languages/generated/ast.ts", "../../node_modules/langium/src/utils/ast-utils.ts", "../../node_modules/langium/src/utils/regexp-utils.ts", "../../node_modules/@chevrotain/regexp-to-ast/src/utils.ts", "../../node_modules/@chevrotain/regexp-to-ast/src/character-classes.ts", "../../node_modules/@chevrotain/regexp-to-ast/src/regexp-parser.ts", "../../node_modules/@chevrotain/regexp-to-ast/src/base-regexp-visitor.ts", "../../node_modules/langium/src/languages/grammar-config.ts", "../../node_modules/@chevrotain/utils/src/print.ts", "../../node_modules/@chevrotain/utils/src/timer.ts", "../../node_modules/@chevrotain/utils/src/to-fast-properties.ts", "../../node_modules/@chevrotain/gast/src/model.ts", "../../node_modules/@chevrotain/gast/src/visitor.ts", "../../node_modules/@chevrotain/gast/src/helpers.ts", "../../node_modules/chevrotain/src/parse/grammar/rest.ts", "../../node_modules/chevrotain/src/parse/grammar/first.ts", "../../node_modules/chevrotain/src/parse/constants.ts", "../../node_modules/chevrotain/src/parse/grammar/follow.ts", "../../node_modules/chevrotain/src/scan/reg_exp_parser.ts", "../../node_modules/chevrotain/src/scan/reg_exp.ts", "../../node_modules/chevrotain/src/scan/lexer.ts", "../../node_modules/chevrotain/src/scan/tokens.ts", "../../node_modules/chevrotain/src/scan/lexer_errors_public.ts", "../../node_modules/chevrotain/src/scan/lexer_public.ts", "../../node_modules/chevrotain/src/scan/tokens_public.ts", "../../node_modules/chevrotain/src/parse/errors_public.ts", "../../node_modules/chevrotain/src/parse/grammar/resolver.ts", "../../node_modules/chevrotain/src/parse/grammar/interpreter.ts", "../../node_modules/chevrotain/src/parse/grammar/lookahead.ts", "../../node_modules/chevrotain/src/parse/grammar/checks.ts", "../../node_modules/chevrotain/src/parse/grammar/gast/gast_resolver_public.ts", "../../node_modules/chevrotain/src/parse/exceptions_public.ts", "../../node_modules/chevrotain/src/parse/parser/traits/recoverable.ts", "../../node_modules/chevrotain/src/parse/grammar/keys.ts", "../../node_modules/chevrotain/src/parse/grammar/llk_lookahead.ts", "../../node_modules/chevrotain/src/parse/parser/traits/looksahead.ts", "../../node_modules/chevrotain/src/parse/cst/cst.ts", "../../node_modules/chevrotain/src/lang/lang_extensions.ts", "../../node_modules/chevrotain/src/parse/cst/cst_visitor.ts", "../../node_modules/chevrotain/src/parse/parser/traits/tree_builder.ts", "../../node_modules/chevrotain/src/parse/parser/traits/lexer_adapter.ts", "../../node_modules/chevrotain/src/parse/parser/traits/recognizer_api.ts", "../../node_modules/chevrotain/src/parse/parser/traits/recognizer_engine.ts", "../../node_modules/chevrotain/src/parse/parser/traits/error_handler.ts", "../../node_modules/chevrotain/src/parse/parser/traits/context_assist.ts", "../../node_modules/chevrotain/src/parse/parser/traits/gast_recorder.ts", "../../node_modules/chevrotain/src/parse/parser/traits/perf_tracer.ts", "../../node_modules/chevrotain/src/parse/parser/utils/apply_mixins.ts", "../../node_modules/chevrotain/src/parse/parser/parser.ts", "../../node_modules/chevrotain-allstar/src/atn.ts", "../../node_modules/chevrotain-allstar/src/dfa.ts", "../../node_modules/chevrotain-allstar/src/all-star-lookahead.ts", "../../node_modules/vscode-languageserver-types/lib/esm/main.js", "../../node_modules/langium/src/parser/cst-node-builder.ts", "../../node_modules/langium/src/parser/langium-parser.ts", "../../node_modules/langium/src/parser/parser-builder-base.ts", "../../node_modules/langium/src/parser/completion-parser-builder.ts", "../../node_modules/langium/src/parser/langium-parser-builder.ts", "../../node_modules/langium/src/parser/token-builder.ts", "../../node_modules/langium/src/parser/value-converter.ts", "../../node_modules/langium/src/utils/cancellation.ts", "../../node_modules/langium/src/utils/promise-utils.ts", "../../node_modules/vscode-languageserver-textdocument/lib/esm/main.js", "webpack://LIB/node_modules/path-browserify/index.js", "webpack://LIB/webpack/bootstrap", "webpack://LIB/webpack/runtime/define%20property%20getters", "webpack://LIB/webpack/runtime/hasOwnProperty%20shorthand", "webpack://LIB/webpack/runtime/make%20namespace%20object", "webpack://LIB/src/platform.ts", "webpack://LIB/src/uri.ts", "webpack://LIB/src/utils.ts", "../../node_modules/langium/src/utils/uri-utils.ts", "../../node_modules/langium/src/workspace/documents.ts", "../../node_modules/langium/src/references/linker.ts", "../../node_modules/langium/src/references/name-provider.ts", "../../node_modules/langium/src/references/references.ts", "../../node_modules/langium/src/utils/collections.ts", "../../node_modules/langium/src/references/scope-computation.ts", "../../node_modules/langium/src/references/scope.ts", "../../node_modules/langium/src/utils/caching.ts", "../../node_modules/langium/src/references/scope-provider.ts", "../../node_modules/langium/src/serializer/json-serializer.ts", "../../node_modules/langium/src/service-registry.ts", "../../node_modules/langium/src/validation/validation-registry.ts", "../../node_modules/langium/src/validation/document-validator.ts", "../../node_modules/langium/src/workspace/ast-descriptions.ts", "../../node_modules/langium/src/workspace/ast-node-locator.ts", "../../node_modules/langium/src/utils/event.ts", "../../node_modules/langium/src/workspace/configuration.ts", "../../node_modules/langium/src/utils/disposable.ts", "../../node_modules/langium/src/workspace/document-builder.ts", "../../node_modules/langium/src/workspace/index-manager.ts", "../../node_modules/langium/src/workspace/workspace-manager.ts", "../../node_modules/langium/src/parser/lexer.ts", "../../node_modules/langium/src/documentation/jsdoc.ts", "../../node_modules/langium/src/documentation/documentation-provider.ts", "../../node_modules/langium/src/documentation/comment-provider.ts", "../../node_modules/langium/src/parser/async-parser.ts", "../../node_modules/langium/src/workspace/workspace-lock.ts", "../../node_modules/langium/src/serializer/hydrator.ts", "../../node_modules/langium/src/default-module.ts", "../../node_modules/langium/src/dependency-injection.ts", "../../node_modules/langium/src/parser/indentation-aware.ts", "../../node_modules/langium/src/utils/index.ts", "../../node_modules/langium/src/workspace/file-system-provider.ts", "../../node_modules/langium/src/utils/grammar-loader.ts", "../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-4KMFLZZN.mjs"],
+ "sourcesContent": ["\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n", "/******************************************************************************\r\n * Copyright 2021 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n *\r\n * @module langium\r\n */\r\n\r\nexport * from './default-module.js';\r\nexport * from './dependency-injection.js';\r\nexport * from './service-registry.js';\r\nexport * from './services.js';\r\nexport * from './syntax-tree.js';\r\nexport * from './documentation/index.js';\r\nexport * from './languages/index.js';\r\nexport * from './parser/index.js';\r\nexport * from './references/index.js';\r\nexport * from './serializer/index.js';\r\nexport * from './utils/index.js';\r\nexport * from './validation/index.js';\r\nexport * from './workspace/index.js';\r\n\r\n// Export the Langium Grammar AST definitions in the `GrammarAST` namespace\r\nimport * as GrammarAST from './languages/generated/ast.js';\r\nimport type { Grammar } from './languages/generated/ast.js';\r\nexport { Grammar, GrammarAST };\r\n", "/******************************************************************************\r\n * Copyright 2021 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n ******************************************************************************/\r\n\r\nimport type { IToken } from '@chevrotain/types';\r\nimport type { Range } from 'vscode-languageserver-types';\r\nimport type { CstNode, CompositeCstNode, LeafCstNode } from '../syntax-tree.js';\r\nimport type { DocumentSegment } from '../workspace/documents.js';\r\nimport type { Stream, TreeStream } from './stream.js';\r\nimport { isCompositeCstNode, isLeafCstNode, isRootCstNode } from '../syntax-tree.js';\r\nimport { TreeStreamImpl } from './stream.js';\r\n\r\n/**\r\n * Create a stream of all CST nodes that are directly and indirectly contained in the given root node,\r\n * including the root node itself.\r\n */\r\nexport function streamCst(node: CstNode): TreeStream {\r\n return new TreeStreamImpl(node, element => {\r\n if (isCompositeCstNode(element)) {\r\n return element.content;\r\n } else {\r\n return [];\r\n }\r\n }, { includeRoot: true });\r\n}\r\n\r\n/**\r\n * Create a stream of all leaf nodes that are directly and indirectly contained in the given root node.\r\n */\r\nexport function flattenCst(node: CstNode): Stream {\r\n return streamCst(node).filter(isLeafCstNode);\r\n}\r\n\r\n/**\r\n * Determines whether the specified cst node is a child of the specified parent node.\r\n */\r\nexport function isChildNode(child: CstNode, parent: CstNode): boolean {\r\n while (child.container) {\r\n child = child.container;\r\n if (child === parent) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function tokenToRange(token: IToken): Range {\r\n // Chevrotain uses 1-based indices everywhere\r\n // So we subtract 1 from every value to align with the LSP\r\n return {\r\n start: {\r\n character: token.startColumn! - 1,\r\n line: token.startLine! - 1\r\n },\r\n end: {\r\n character: token.endColumn!, // endColumn uses the correct index\r\n line: token.endLine! - 1\r\n }\r\n };\r\n}\r\n\r\nexport function toDocumentSegment(node: CstNode): DocumentSegment;\r\nexport function toDocumentSegment(node?: CstNode): DocumentSegment | undefined;\r\nexport function toDocumentSegment(node?: CstNode): DocumentSegment | undefined {\r\n if (!node) {\r\n return undefined;\r\n }\r\n const { offset, end, range } = node;\r\n return {\r\n range,\r\n offset,\r\n end,\r\n length: end - offset\r\n };\r\n}\r\n\r\nexport enum RangeComparison {\r\n Before = 0,\r\n After = 1,\r\n OverlapFront = 2,\r\n OverlapBack = 3,\r\n Inside = 4,\r\n Outside = 5,\r\n}\r\n\r\nexport function compareRange(range: Range, to: Range): RangeComparison {\r\n if (range.end.line < to.start.line || (range.end.line === to.start.line && range.end.character <= to.start.character)) {\r\n return RangeComparison.Before;\r\n } else if (range.start.line > to.end.line || (range.start.line === to.end.line && range.start.character >= to.end.character)) {\r\n return RangeComparison.After;\r\n }\r\n const startInside = range.start.line > to.start.line || (range.start.line === to.start.line && range.start.character >= to.start.character);\r\n const endInside = range.end.line < to.end.line || (range.end.line === to.end.line && range.end.character <= to.end.character);\r\n if (startInside && endInside) {\r\n return RangeComparison.Inside;\r\n } else if (startInside) {\r\n return RangeComparison.OverlapBack;\r\n } else if (endInside) {\r\n return RangeComparison.OverlapFront;\r\n } else {\r\n return RangeComparison.Outside;\r\n }\r\n}\r\n\r\nexport function inRange(range: Range, to: Range): boolean {\r\n const comparison = compareRange(range, to);\r\n return comparison > RangeComparison.After;\r\n}\r\n\r\n// The \\p{L} regex matches any unicode letter character, i.e. characters from non-english alphabets\r\n// Together with \\w it matches any kind of character which can commonly appear in IDs\r\nexport const DefaultNameRegexp = /^[\\w\\p{L}]$/u;\r\n\r\n/**\r\n * Performs `findLeafNodeAtOffset` with a minor difference: When encountering a character that matches the `nameRegexp` argument,\r\n * it will instead return the leaf node at the `offset - 1` position.\r\n *\r\n * For LSP services, users expect that the declaration of an element is available if the cursor is directly after the element.\r\n */\r\nexport function findDeclarationNodeAtOffset(cstNode: CstNode | undefined, offset: number, nameRegexp = DefaultNameRegexp): LeafCstNode | undefined {\r\n if (cstNode) {\r\n if (offset > 0) {\r\n const localOffset = offset - cstNode.offset;\r\n const textAtOffset = cstNode.text.charAt(localOffset);\r\n if (!nameRegexp.test(textAtOffset)) {\r\n offset--;\r\n }\r\n }\r\n return findLeafNodeAtOffset(cstNode, offset);\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function findCommentNode(cstNode: CstNode | undefined, commentNames: string[]): CstNode | undefined {\r\n if (cstNode) {\r\n const previous = getPreviousNode(cstNode, true);\r\n if (previous && isCommentNode(previous, commentNames)) {\r\n return previous;\r\n }\r\n if (isRootCstNode(cstNode)) {\r\n // Go from the first non-hidden node through all nodes in reverse order\r\n // We do this to find the comment node which directly precedes the root node\r\n const endIndex = cstNode.content.findIndex(e => !e.hidden);\r\n for (let i = endIndex - 1; i >= 0; i--) {\r\n const child = cstNode.content[i];\r\n if (isCommentNode(child, commentNames)) {\r\n return child;\r\n }\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function isCommentNode(cstNode: CstNode, commentNames: string[]): boolean {\r\n return isLeafCstNode(cstNode) && commentNames.includes(cstNode.tokenType.name);\r\n}\r\n\r\n/**\r\n * Finds the leaf CST node at the specified 0-based string offset.\r\n * Note that the given offset will be within the range of the returned leaf node.\r\n *\r\n * If the offset does not point to a CST node (but just white space), this method will return `undefined`.\r\n *\r\n * @param node The CST node to search through.\r\n * @param offset The specified offset.\r\n * @returns The CST node at the specified offset.\r\n */\r\nexport function findLeafNodeAtOffset(node: CstNode, offset: number): LeafCstNode | undefined {\r\n if (isLeafCstNode(node)) {\r\n return node;\r\n } else if (isCompositeCstNode(node)) {\r\n const searchResult = binarySearch(node, offset, false);\r\n if (searchResult) {\r\n return findLeafNodeAtOffset(searchResult, offset);\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Finds the leaf CST node at the specified 0-based string offset.\r\n * If no CST node exists at the specified position, it will return the leaf node before it.\r\n *\r\n * If there is no leaf node before the specified offset, this method will return `undefined`.\r\n *\r\n * @param node The CST node to search through.\r\n * @param offset The specified offset.\r\n * @returns The CST node closest to the specified offset.\r\n */\r\nexport function findLeafNodeBeforeOffset(node: CstNode, offset: number): LeafCstNode | undefined {\r\n if (isLeafCstNode(node)) {\r\n return node;\r\n } else if (isCompositeCstNode(node)) {\r\n const searchResult = binarySearch(node, offset, true);\r\n if (searchResult) {\r\n return findLeafNodeBeforeOffset(searchResult, offset);\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction binarySearch(node: CompositeCstNode, offset: number, closest: boolean): CstNode | undefined {\r\n let left = 0;\r\n let right = node.content.length - 1;\r\n let closestNode: CstNode | undefined = undefined;\r\n\r\n while (left <= right) {\r\n const middle = Math.floor((left + right) / 2);\r\n const middleNode = node.content[middle];\r\n\r\n if (middleNode.offset <= offset && middleNode.end > offset) {\r\n // Found an exact match\r\n return middleNode;\r\n }\r\n\r\n if (middleNode.end <= offset) {\r\n // Update the closest node (less than offset) and move to the right half\r\n closestNode = closest ? middleNode : undefined;\r\n left = middle + 1;\r\n } else {\r\n // Move to the left half\r\n right = middle - 1;\r\n }\r\n }\r\n\r\n return closestNode;\r\n}\r\n\r\nexport function getPreviousNode(node: CstNode, hidden = true): CstNode | undefined {\r\n while (node.container) {\r\n const parent = node.container;\r\n let index = parent.content.indexOf(node);\r\n while (index > 0) {\r\n index--;\r\n const previous = parent.content[index];\r\n if (hidden || !previous.hidden) {\r\n return previous;\r\n }\r\n }\r\n node = parent;\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function getNextNode(node: CstNode, hidden = true): CstNode | undefined {\r\n while (node.container) {\r\n const parent = node.container;\r\n let index = parent.content.indexOf(node);\r\n const last = parent.content.length - 1;\r\n while (index < last) {\r\n index++;\r\n const next = parent.content[index];\r\n if (hidden || !next.hidden) {\r\n return next;\r\n }\r\n }\r\n node = parent;\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function getStartlineNode(node: CstNode): CstNode {\r\n if (node.range.start.character === 0) {\r\n return node;\r\n }\r\n const line = node.range.start.line;\r\n let last = node;\r\n let index: number | undefined;\r\n while (node.container) {\r\n const parent = node.container;\r\n const selfIndex = index ?? parent.content.indexOf(node);\r\n if (selfIndex === 0) {\r\n node = parent;\r\n index = undefined;\r\n } else {\r\n index = selfIndex - 1;\r\n node = parent.content[index];\r\n }\r\n if (node.range.start.line !== line) {\r\n break;\r\n }\r\n last = node;\r\n }\r\n return last;\r\n}\r\n\r\nexport function getInteriorNodes(start: CstNode, end: CstNode): CstNode[] {\r\n const commonParent = getCommonParent(start, end);\r\n if (!commonParent) {\r\n return [];\r\n }\r\n return commonParent.parent.content.slice(commonParent.a + 1, commonParent.b);\r\n}\r\n\r\nfunction getCommonParent(a: CstNode, b: CstNode): CommonParent | undefined {\r\n const aParents = getParentChain(a);\r\n const bParents = getParentChain(b);\r\n let current: CommonParent | undefined;\r\n for (let i = 0; i < aParents.length && i < bParents.length; i++) {\r\n const aParent = aParents[i];\r\n const bParent = bParents[i];\r\n if (aParent.parent === bParent.parent) {\r\n current = {\r\n parent: aParent.parent,\r\n a: aParent.index,\r\n b: bParent.index\r\n };\r\n } else {\r\n break;\r\n }\r\n }\r\n return current;\r\n}\r\n\r\ninterface CommonParent {\r\n parent: CompositeCstNode\r\n a: number\r\n b: number\r\n}\r\n\r\nfunction getParentChain(node: CstNode): ParentLink[] {\r\n const chain: ParentLink[] = [];\r\n while (node.container) {\r\n const parent = node.container;\r\n const index = parent.content.indexOf(node);\r\n chain.push({\r\n parent,\r\n index\r\n });\r\n node = parent;\r\n }\r\n return chain.reverse();\r\n}\r\n\r\ninterface ParentLink {\r\n parent: CompositeCstNode\r\n index: number\r\n}\r\n", "/******************************************************************************\r\n * Copyright 2021 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n ******************************************************************************/\r\n\r\nimport type { TokenType } from 'chevrotain';\r\nimport type { URI } from './utils/uri-utils.js';\r\nimport type { AbstractElement } from './languages/generated/ast.js';\r\nimport type { DocumentSegment, LangiumDocument } from './workspace/documents.js';\r\n\r\n/**\r\n * A node in the Abstract Syntax Tree (AST).\r\n */\r\nexport interface AstNode {\r\n /** Every AST node has a type corresponding to what was specified in the grammar declaration. */\r\n readonly $type: string;\r\n /** The container node in the AST; every node except the root node has a container. */\r\n readonly $container?: AstNode;\r\n /** The property of the `$container` node that contains this node. This is either a direct reference or an array. */\r\n readonly $containerProperty?: string;\r\n /** In case `$containerProperty` is an array, the array index is stored here. */\r\n readonly $containerIndex?: number;\r\n /** The Concrete Syntax Tree (CST) node of the text range from which this node was parsed. */\r\n readonly $cstNode?: CstNode;\r\n /** The document containing the AST; only the root node has a direct reference to the document. */\r\n readonly $document?: LangiumDocument;\r\n}\r\n\r\nexport function isAstNode(obj: unknown): obj is AstNode {\r\n return typeof obj === 'object' && obj !== null && typeof (obj as AstNode).$type === 'string';\r\n}\r\n\r\nexport interface GenericAstNode extends AstNode {\r\n [key: string]: unknown\r\n}\r\n\r\ntype SpecificNodeProperties = keyof Omit;\r\n\r\n/**\r\n * The property names of a given AST node type.\r\n */\r\nexport type Properties = SpecificNodeProperties extends never ? string : SpecificNodeProperties\r\n\r\n/**\r\n * A cross-reference in the AST. Cross-references may or may not be successfully resolved.\r\n */\r\nexport interface Reference {\r\n /**\r\n * The target AST node of this reference. Accessing this property may trigger cross-reference\r\n * resolution by the `Linker` in case it has not been done yet. If the reference cannot be resolved,\r\n * the value is `undefined`.\r\n */\r\n readonly ref?: T;\r\n\r\n /** If any problem occurred while resolving the reference, it is described by this property. */\r\n readonly error?: LinkingError;\r\n /** The CST node from which the reference was parsed */\r\n readonly $refNode?: CstNode;\r\n /** The actual text used to look up in the surrounding scope */\r\n readonly $refText: string;\r\n /** The node description for the AstNode returned by `ref` */\r\n readonly $nodeDescription?: AstNodeDescription;\r\n}\r\n\r\nexport function isReference(obj: unknown): obj is Reference {\r\n return typeof obj === 'object' && obj !== null && typeof (obj as Reference).$refText === 'string';\r\n}\r\n\r\nexport type ResolvedReference = Reference & {\r\n readonly ref: T;\r\n}\r\n\r\n/**\r\n * A description of an AST node is used when constructing scopes and looking up cross-reference targets.\r\n */\r\nexport interface AstNodeDescription {\r\n /** The target node; should be present only for local references (linking to the same document). */\r\n node?: AstNode;\r\n /**\r\n * The document segment that represents the range of the name of the AST node.\r\n */\r\n nameSegment?: DocumentSegment;\r\n /**\r\n * The document segment that represents the full range of the AST node.\r\n */\r\n selectionSegment?: DocumentSegment;\r\n /** `$type` property value of the AST node */\r\n type: string;\r\n /** Name of the AST node; this is usually determined by the `NameProvider` service. */\r\n name: string;\r\n /** URI to the document containing the AST node */\r\n documentUri: URI;\r\n /** Navigation path inside the document */\r\n path: string;\r\n}\r\n\r\nexport function isAstNodeDescription(obj: unknown): obj is AstNodeDescription {\r\n return typeof obj === 'object' && obj !== null\r\n && typeof (obj as AstNodeDescription).name === 'string'\r\n && typeof (obj as AstNodeDescription).type === 'string'\r\n && typeof (obj as AstNodeDescription).path === 'string';\r\n}\r\n\r\n/**\r\n * Information about a cross-reference. This is used when traversing references in an AST or to describe\r\n * unresolved references.\r\n */\r\nexport interface ReferenceInfo {\r\n reference: Reference\r\n container: AstNode\r\n property: string\r\n index?: number\r\n}\r\n\r\n/**\r\n * Used to collect information when the `Linker` service fails to resolve a cross-reference.\r\n */\r\nexport interface LinkingError extends ReferenceInfo {\r\n message: string;\r\n targetDescription?: AstNodeDescription;\r\n}\r\n\r\nexport function isLinkingError(obj: unknown): obj is LinkingError {\r\n return typeof obj === 'object' && obj !== null\r\n && isAstNode((obj as LinkingError).container)\r\n && isReference((obj as LinkingError).reference)\r\n && typeof (obj as LinkingError).message === 'string';\r\n}\r\n\r\n/**\r\n * Service used for generic access to the structure of the AST. This service is shared between\r\n * all involved languages, so it operates on the superset of types of these languages.\r\n */\r\nexport interface AstReflection {\r\n getAllTypes(): string[]\r\n getAllSubTypes(type: string): string[]\r\n getReferenceType(refInfo: ReferenceInfo): string\r\n getTypeMetaData(type: string): TypeMetaData\r\n isInstance(node: unknown, type: string): boolean\r\n isSubtype(subtype: string, supertype: string): boolean\r\n}\r\n\r\n/**\r\n * An abstract implementation of the {@link AstReflection} interface.\r\n * Serves to cache subtype computation results to improve performance throughout different parts of Langium.\r\n */\r\nexport abstract class AbstractAstReflection implements AstReflection {\r\n\r\n protected subtypes: Record> = {};\r\n protected allSubtypes: Record = {};\r\n\r\n abstract getAllTypes(): string[];\r\n abstract getReferenceType(refInfo: ReferenceInfo): string;\r\n abstract getTypeMetaData(type: string): TypeMetaData;\r\n protected abstract computeIsSubtype(subtype: string, supertype: string): boolean;\r\n\r\n isInstance(node: unknown, type: string): boolean {\r\n return isAstNode(node) && this.isSubtype(node.$type, type);\r\n }\r\n\r\n isSubtype(subtype: string, supertype: string): boolean {\r\n if (subtype === supertype) {\r\n return true;\r\n }\r\n let nested = this.subtypes[subtype];\r\n if (!nested) {\r\n nested = this.subtypes[subtype] = {};\r\n }\r\n const existing = nested[supertype];\r\n if (existing !== undefined) {\r\n return existing;\r\n } else {\r\n const result = this.computeIsSubtype(subtype, supertype);\r\n nested[supertype] = result;\r\n return result;\r\n }\r\n }\r\n\r\n getAllSubTypes(type: string): string[] {\r\n const existing = this.allSubtypes[type];\r\n if (existing) {\r\n return existing;\r\n } else {\r\n const allTypes = this.getAllTypes();\r\n const types: string[] = [];\r\n for (const possibleSubType of allTypes) {\r\n if (this.isSubtype(possibleSubType, type)) {\r\n types.push(possibleSubType);\r\n }\r\n }\r\n this.allSubtypes[type] = types;\r\n return types;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Represents runtime meta data about a meta model type.\r\n */\r\nexport interface TypeMetaData {\r\n /** The name of this meta model type. Corresponds to the `AstNode.$type` value. */\r\n name: string\r\n /** A list of properties. They can contain default values for their respective property in the AST. */\r\n properties: TypeProperty[]\r\n}\r\n\r\n/**\r\n * Describes the meta data of a property of an AST node.\r\n *\r\n * The optional `defaultValue` indicates that the property is mandatory in the AST node.\r\n * For example, if an AST node contains an array, but no elements of this array have been parsed, we still expect an empty array instead of `undefined`.\r\n */\r\nexport interface TypeProperty {\r\n name: string\r\n defaultValue?: PropertyType\r\n}\r\n\r\n/**\r\n * Represents a default value for an AST property.\r\n */\r\nexport type PropertyType = number | string | boolean | PropertyType[];\r\n\r\n/**\r\n * A node in the Concrete Syntax Tree (CST).\r\n */\r\nexport interface CstNode extends DocumentSegment {\r\n /** The container node in the CST */\r\n readonly container?: CompositeCstNode;\r\n /** @deprecated use `container` instead. */\r\n readonly parent?: CompositeCstNode;\r\n /** The actual text */\r\n readonly text: string;\r\n /** The root CST node */\r\n readonly root: RootCstNode;\r\n /** The grammar element from which this node was parsed */\r\n readonly grammarSource?: AbstractElement;\r\n /** @deprecated use `grammarSource` instead. */\r\n readonly feature?: AbstractElement;\r\n /** The AST node created from this CST node */\r\n readonly astNode: AstNode;\r\n /** @deprecated use `astNode` instead. */\r\n readonly element: AstNode;\r\n /** Whether the token is hidden, i.e. not explicitly part of the containing grammar rule */\r\n readonly hidden: boolean;\r\n}\r\n\r\n/**\r\n * A composite CST node contains other nodes, but no directly associated token.\r\n */\r\nexport interface CompositeCstNode extends CstNode {\r\n readonly content: CstNode[];\r\n /** @deprecated use `content` instead. */\r\n readonly children: CstNode[];\r\n}\r\n\r\nexport function isCompositeCstNode(node: unknown): node is CompositeCstNode {\r\n return typeof node === 'object' && node !== null && Array.isArray((node as CompositeCstNode).content);\r\n}\r\n\r\n/**\r\n * A leaf CST node corresponds to a token in the input token stream.\r\n */\r\nexport interface LeafCstNode extends CstNode {\r\n readonly tokenType: TokenType;\r\n}\r\n\r\nexport function isLeafCstNode(node: unknown): node is LeafCstNode {\r\n return typeof node === 'object' && node !== null && typeof (node as LeafCstNode).tokenType === 'object';\r\n}\r\n\r\nexport interface RootCstNode extends CompositeCstNode {\r\n readonly fullText: string\r\n}\r\n\r\nexport function isRootCstNode(node: unknown): node is RootCstNode {\r\n return isCompositeCstNode(node) && typeof (node as RootCstNode).fullText === 'string';\r\n}\r\n\r\n/**\r\n * Returns a type to have only properties names (!) of a type T whose property value is of a certain type K.\r\n */\r\ntype ExtractKeysOfValueType = { [I in keyof T]: T[I] extends K ? I : never }[keyof T];\r\n\r\n/**\r\n * Returns the property names (!) of an AstNode that are cross-references.\r\n * Meant to be used during cross-reference resolution in combination with `assertUnreachable(context.property)`.\r\n */\r\nexport type CrossReferencesOfAstNodeType = (\r\n ExtractKeysOfValueType\r\n | ExtractKeysOfValueType|undefined>\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\n) & {};\r\n\r\n/**\r\n * Represents the enumeration-like type, that lists all AstNode types of your grammar.\r\n */\r\nexport type AstTypeList = Record;\r\n\r\n/**\r\n * Returns all types that contain cross-references, A is meant to be the interface `XXXAstType` fromm your generated `ast.ts` file.\r\n * Meant to be used during cross-reference resolution in combination with `assertUnreachable(context.container)`.\r\n */\r\nexport type AstNodeTypesWithCrossReferences> = {\r\n [T in keyof A]: CrossReferencesOfAstNodeType extends never ? never : A[T]\r\n}[keyof A];\r\n\r\nexport type Mutable = {\r\n -readonly [P in keyof T]: T[P]\r\n};\r\n", "/******************************************************************************\r\n * Copyright 2021 TypeFox GmbH\r\n * This program and the accompanying materials are made available under the\r\n * terms of the MIT License, which is available in the project root.\r\n ******************************************************************************/\r\n\r\n/**\r\n * A stream is a read-only sequence of values. While the contents of an array can be accessed\r\n * both sequentially and randomly (via index), a stream allows only sequential access.\r\n *\r\n * The advantage of this is that a stream can be evaluated lazily, so it does not require\r\n * to store intermediate values. This can boost performance when a large sequence is\r\n * processed via filtering, mapping etc. and accessed at most once. However, lazy\r\n * evaluation means that all processing is repeated when you access the sequence multiple\r\n * times; in such a case, it may be better to store the resulting sequence into an array.\r\n */\r\nexport interface Stream extends Iterable {\r\n\r\n /**\r\n * Returns an iterator for this stream. This is the same as calling the `Symbol.iterator` function property.\r\n */\r\n iterator(): IterableIterator;\r\n\r\n /**\r\n * Determines whether this stream contains no elements.\r\n */\r\n isEmpty(): boolean;\r\n\r\n /**\r\n * Determines the number of elements in this stream.\r\n */\r\n count(): number;\r\n\r\n /**\r\n * Collects all elements of this stream into an array.\r\n */\r\n toArray(): T[];\r\n\r\n /**\r\n * Collects all elements of this stream into a Set.\r\n */\r\n toSet(): Set;\r\n\r\n /**\r\n * Collects all elements of this stream into a Map, applying the provided functions to determine keys and values.\r\n *\r\n * @param keyFn The function to derive map keys. If omitted, the stream elements are used as keys.\r\n * @param valueFn The function to derive map values. If omitted, the stream elements are used as values.\r\n */\r\n toMap(keyFn?: (e: T) => K, valueFn?: (e: T) => V): Map;\r\n\r\n /**\r\n * Returns a string representation of a stream.\r\n */\r\n toString(): string;\r\n\r\n /**\r\n * Combines two streams by returning a new stream that yields all elements of this stream and the other stream.\r\n *\r\n * @param other Stream to be concatenated with this one.\r\n */\r\n concat(other: Iterable): Stream;\r\n\r\n /**\r\n * Adds all elements of the stream into a string, separated by the specified separator string.\r\n *\r\n * @param separator A string used to separate one element of the stream from the next in the resulting string.\r\n * If omitted, the steam elements are separated with a comma.\r\n */\r\n join(separator?: string): string\r\n\r\n /**\r\n * Returns the index of the first occurrence of a value in the stream, or -1 if it is not present.\r\n *\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The stream index at which to begin the search. If fromIndex is omitted, the search\r\n * starts at index 0.\r\n */\r\n indexOf(searchElement: T, fromIndex?: number): number;\r\n\r\n /**\r\n * Determines whether all members of the stream satisfy the specified test.\r\n *\r\n * @param predicate This method calls the predicate function for each element in the stream until the\r\n * predicate returns a value which is coercible to the Boolean value `false`, or until the end\r\n * of the stream.\r\n */\r\n every(predicate: (value: T) => value is S): this is Stream;\r\n every(predicate: (value: T) => unknown): boolean;\r\n\r\n /**\r\n * Determines whether any member of the stream satisfies the specified test.\r\n *\r\n * @param predicate This method calls the predicate function for each element in the stream until the\r\n * predicate returns a value which is coercible to the Boolean value `true`, or until the end\r\n * of the stream.\r\n */\r\n some(predicate: (value: T) => unknown): boolean;\r\n\r\n /**\r\n * Performs the specified action for each element in the stream.\r\n *\r\n * @param callbackfn Function called once for each element in the stream.\r\n */\r\n forEach(callbackfn: (value: T, index: number) => void): void;\r\n\r\n /**\r\n * Returns a stream that yields the results of calling the specified callback function on each element\r\n * of the stream. The function is called when the resulting stream elements are actually accessed, so\r\n * accessing the resulting stream multiple times means the function is also called multiple times for\r\n * each element of the stream.\r\n *\r\n * @param callbackfn Lazily evaluated function mapping stream elements.\r\n */\r\n map(callbackfn: (value: T) => U): Stream;\r\n\r\n /**\r\n * Returns the elements of the stream that meet the condition specified in a callback function.\r\n * The function is called when the resulting stream elements are actually accessed, so accessing the\r\n * resulting stream multiple times means the function is also called multiple times for each element\r\n * of the stream.\r\n *\r\n * @param predicate Lazily evaluated function checking a condition on stream elements.\r\n */\r\n filter(predicate: (value: T) => value is S): Stream;\r\n filter(predicate: (value: T) => unknown): Stream;\r\n\r\n /**\r\n * Returns the elements of the stream that are _non-nullable_, which means they are neither `undefined`\r\n * nor `null`.\r\n */\r\n nonNullable(): Stream>;\r\n\r\n /**\r\n * Calls the specified callback function for all elements in the stream. The return value of the\r\n * callback function is the accumulated result, and is provided as an argument in the next call to\r\n * the callback function.\r\n *\r\n * @param callbackfn This method calls the function once for each element in the stream, providing\r\n * the previous and current values of the reduction.\r\n * @param initialValue If specified, `initialValue` is used as the initial value to start the\r\n * accumulation. The first call to the function provides this value as an argument instead\r\n * of a stream value.\r\n */\r\n reduce(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\r\n reduce(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\r\n\r\n /**\r\n * Calls the specified callback function for all elements in the stream, in descending order.\r\n * The return value of the callback function is the accumulated result, and is provided as an\r\n * argument in the next call to the callback function.\r\n *\r\n * @param callbackfn This method calls the function once for each element in the stream, providing\r\n * the previous and current values of the reduction.\r\n * @param initialValue If specified, `initialValue` is used as the initial value to start the\r\n * accumulation. The first call to the function provides this value as an argument instead\r\n * of an array value.\r\n */\r\n reduceRight(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\r\n reduceRight(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\r\n\r\n /**\r\n * Returns the value of the first element in the stream that meets the condition, or `undefined`\r\n * if there is no such element.\r\n *\r\n * @param predicate This method calls `predicate` once for each element of the stream, in ascending\r\n * order, until it finds one where `predicate` returns a value which is coercible to the\r\n * Boolean value `true`.\r\n */\r\n find(predicate: (value: T) => value is S): S | undefined;\r\n find(predicate: (value: T) => unknown): T | undefined;\r\n\r\n /**\r\n * Returns the index of the first element in the stream that meets the condition, or `-1`\r\n * if there is no such element.\r\n *\r\n * @param predicate This method calls `predicate` once for each element of the stream, in ascending\r\n * order, until it finds one where `predicate` returns a value which is coercible to the\r\n * Boolean value `true`.\r\n */\r\n findIndex(predicate: (value: T) => unknown): number;\r\n\r\n /**\r\n * Determines whether the stream includes a certain element, returning `true` or `false` as appropriate.\r\n *\r\n * @param searchElement The element to search for.\r\n */\r\n includes(searchElement: T): boolean;\r\n\r\n /**\r\n * Calls a defined callback function on each element of the stream and then flattens the result into\r\n * a new stream. This is identical to a `map` followed by `flat` with depth 1.\r\n *\r\n * @param callbackfn Lazily evaluated function mapping stream elements.\r\n */\r\n flatMap(callbackfn: (value: T) => U | Iterable): Stream;\r\n\r\n /**\r\n * Returns a new stream with all sub-stream or sub-array elements concatenated into it recursively up\r\n * to the specified depth.\r\n *\r\n * @param depth The maximum recursion depth. Defaults to 1.\r\n */\r\n flat(depth?: D): FlatStream;\r\n\r\n /**\r\n * Returns the first element in the stream, or `undefined` if the stream is empty.\r\n */\r\n head(): T | undefined;\r\n\r\n /**\r\n * Returns a stream that skips the first `skipCount` elements from this stream.\r\n *\r\n * @param skipCount The number of elements to skip. If this is larger than the number of elements in\r\n * the stream, an empty stream is returned. Defaults to 1.\r\n */\r\n tail(skipCount?: number): Stream;\r\n\r\n /**\r\n * Returns a stream consisting of the elements of this stream, truncated to be no longer than `maxSize`\r\n * in length.\r\n *\r\n * @param maxSize The number of elements the stream should be limited to\r\n */\r\n limit(maxSize: number): Stream;\r\n\r\n /**\r\n * Returns a stream containing only the distinct elements from this stream.\r\n * Equality is determined with the same rules as a standard `Set`.\r\n *\r\n * @param by A function returning the key used to check equality with a previous stream element.\r\n * If omitted, the stream elements themselves are used for comparison.\r\n */\r\n distinct(by?: (element: T) => Key): Stream;\r\n\r\n /**\r\n * Returns a stream that contains all elements that don't exist in the {@link other} iterable.\r\n * Equality is determined with the same rules as a standard `Set`.\r\n * @param other The elements that should be exluded from this stream.\r\n * @param key A function returning the key used to check quality.\r\n * If omitted, the stream elements themselves are used for comparison.\r\n */\r\n exclude(other: Iterable, key?: (element: T) => Key): Stream;\r\n\r\n}\r\n\r\nexport type FlatStream = {\r\n 'done': Stream,\r\n 'recur': T extends Iterable\r\n ? FlatStream>\r\n : Stream\r\n}[Depth extends 0 ? 'done' : 'recur'];\r\n\r\nexport type MinusOne = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20][N];\r\n\r\n/**\r\n * The default implementation of `Stream` works with two input functions:\r\n * - The first function creates the initial state of an iteration.\r\n * - The second function gets the current state as argument and returns an `IteratorResult`.\r\n */\r\nexport class StreamImpl implements Stream {\r\n protected readonly startFn: () => S;\r\n protected readonly nextFn: (state: S) => IteratorResult;\r\n\r\n constructor(startFn: () => S, nextFn: (state: S) => IteratorResult) {\r\n this.startFn = startFn;\r\n this.nextFn = nextFn;\r\n }\r\n\r\n iterator(): IterableIterator {\r\n const iterator = {\r\n state: this.startFn(),\r\n next: () => this.nextFn(iterator.state),\r\n [Symbol.iterator]: () => iterator\r\n };\r\n return iterator;\r\n }\r\n\r\n [Symbol.iterator](): Iterator {\r\n return this.iterator();\r\n }\r\n\r\n isEmpty(): boolean {\r\n const iterator = this.iterator();\r\n return Boolean(iterator.next().done);\r\n }\r\n\r\n count(): number {\r\n const iterator = this.iterator();\r\n let count = 0;\r\n let next = iterator.next();\r\n while (!next.done) {\r\n count++;\r\n next = iterator.next();\r\n }\r\n return count;\r\n }\r\n\r\n toArray(): T[] {\r\n const result: T[] = [];\r\n const iterator = this.iterator();\r\n let next: IteratorResult;\r\n do {\r\n next = iterator.next();\r\n if (next.value !== undefined) {\r\n result.push(next.value);\r\n }\r\n } while (!next.done);\r\n return result;\r\n }\r\n\r\n toSet(): Set {\r\n return new Set(this);\r\n }\r\n\r\n toMap(keyFn?: (e: T) => K, valueFn?: (e: T) => V): Map {\r\n const entryStream = this.map(element => <[K, V]>[\r\n keyFn ? keyFn(element) : element,\r\n valueFn ? valueFn(element) : element\r\n ]);\r\n return new Map(entryStream);\r\n }\r\n\r\n toString(): string {\r\n return this.join();\r\n }\r\n\r\n concat(other: Iterable): Stream {\r\n return new StreamImpl<{ first: S, firstDone: boolean, iterator: Iterator }, T | T2>(\r\n () => ({ first: this.startFn(), firstDone: false, iterator: other[Symbol.iterator]() }),\r\n state => {\r\n let result: IteratorResult;\r\n if (!state.firstDone) {\r\n do {\r\n result = this.nextFn(state.first);\r\n if (!result.done) {\r\n return result;\r\n }\r\n } while (!result.done);\r\n state.firstDone = true;\r\n }\r\n do {\r\n result = state.iterator.next();\r\n if (!result.done) {\r\n return result;\r\n }\r\n } while (!result.done);\r\n return DONE_RESULT;\r\n }\r\n );\r\n }\r\n\r\n join(separator = ','): string {\r\n const iterator = this.iterator();\r\n let value = '';\r\n let result: IteratorResult;\r\n let addSeparator = false;\r\n do {\r\n result = iterator.next();\r\n if (!result.done) {\r\n if (addSeparator) {\r\n value += separator;\r\n }\r\n value += toString(result.value);\r\n }\r\n addSeparator = true;\r\n } while (!result.done);\r\n return value;\r\n }\r\n\r\n indexOf(searchElement: T, fromIndex = 0): number {\r\n const iterator = this.iterator();\r\n let index = 0;\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (index >= fromIndex && next.value === searchElement) {\r\n return index;\r\n }\r\n next = iterator.next();\r\n index++;\r\n }\r\n return -1;\r\n }\r\n\r\n // In the following definition the '& this' part in the return type is important\r\n // _and_ the order within 'Stream & this' is crucial!\r\n // Otherwise Typescript would infer the type of 'this' as 'StreamImpl & Stream'\r\n // (or ' & Stream') and usages like\r\n // ```\r\n // const stream = new StreamImpl(...);\r\n // ... stream.every() & stream....\r\n // ```\r\n // cannot benefit from '', as Typescript would priorize the signatures\r\n // of 'StreamImpl' (i.e. those of 'Stream') over those of 'Stream'.\r\n // With the order of 'Stream & this' the signatures of 'Stream' get precedence.\r\n every(predicate: (value: T) => value is U): this is Stream & this;\r\n every(predicate: (value: T) => unknown): boolean;\r\n every(predicate: (value: T) => unknown): boolean {\r\n const iterator = this.iterator();\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (!predicate(next.value)) {\r\n return false;\r\n }\r\n next = iterator.next();\r\n }\r\n return true;\r\n }\r\n\r\n some(predicate: (value: T) => unknown): boolean {\r\n const iterator = this.iterator();\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (predicate(next.value)) {\r\n return true;\r\n }\r\n next = iterator.next();\r\n }\r\n return false;\r\n }\r\n\r\n forEach(callbackfn: (value: T, index: number) => void): void {\r\n const iterator = this.iterator();\r\n let index = 0;\r\n let next = iterator.next();\r\n while (!next.done) {\r\n callbackfn(next.value, index);\r\n next = iterator.next();\r\n index++;\r\n }\r\n }\r\n\r\n map(callbackfn: (value: T) => U): Stream {\r\n return new StreamImpl(\r\n this.startFn,\r\n (state) => {\r\n const { done, value } = this.nextFn(state);\r\n if (done) {\r\n return DONE_RESULT;\r\n } else {\r\n return { done: false, value: callbackfn(value) };\r\n }\r\n }\r\n );\r\n }\r\n\r\n // for remarks on the return type definition refer to 'every(...)'\r\n filter(predicate: (value: T) => value is U): Stream & this;\r\n filter(predicate: (value: T) => unknown): Stream & this;\r\n filter(predicate: (value: T) => unknown): Stream {\r\n return new StreamImpl(\r\n this.startFn,\r\n state => {\r\n let result: IteratorResult;\r\n do {\r\n result = this.nextFn(state);\r\n if (!result.done && predicate(result.value)) {\r\n return result;\r\n }\r\n } while (!result.done);\r\n return DONE_RESULT;\r\n }\r\n );\r\n }\r\n\r\n nonNullable(): Stream> {\r\n return this.filter(e => e !== undefined && e !== null) as Stream>;\r\n }\r\n\r\n reduce(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\r\n reduce(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\r\n reduce(callbackfn: (previousValue: U | T, currentValue: T) => U, initialValue?: U): U | T | undefined {\r\n const iterator = this.iterator();\r\n let previousValue: U | T | undefined = initialValue;\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (previousValue === undefined) {\r\n previousValue = next.value;\r\n } else {\r\n previousValue = callbackfn(previousValue, next.value);\r\n }\r\n next = iterator.next();\r\n }\r\n return previousValue;\r\n }\r\n\r\n reduceRight(callbackfn: (previousValue: T, currentValue: T) => T): T | undefined;\r\n reduceRight(callbackfn: (previousValue: U, currentValue: T) => U, initialValue: U): U;\r\n reduceRight(callbackfn: (previousValue: U | T, currentValue: T) => U, initialValue?: U): U | T | undefined {\r\n return this.recursiveReduce(this.iterator(), callbackfn, initialValue);\r\n }\r\n\r\n protected recursiveReduce(iterator: Iterator, callbackfn: (previousValue: U | T, currentValue: T) => U, initialValue?: U): U | T | undefined {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return initialValue;\r\n }\r\n const previousValue = this.recursiveReduce(iterator, callbackfn, initialValue);\r\n if (previousValue === undefined) {\r\n return next.value;\r\n }\r\n return callbackfn(previousValue, next.value);\r\n }\r\n\r\n find(predicate: (value: T) => value is S): S | undefined;\r\n find(predicate: (value: T) => unknown): T | undefined;\r\n find(predicate: (value: T) => unknown): T | undefined {\r\n const iterator = this.iterator();\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (predicate(next.value)) {\r\n return next.value;\r\n }\r\n next = iterator.next();\r\n }\r\n return undefined;\r\n }\r\n\r\n findIndex(predicate: (value: T) => unknown): number {\r\n const iterator = this.iterator();\r\n let index = 0;\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (predicate(next.value)) {\r\n return index;\r\n }\r\n next = iterator.next();\r\n index++;\r\n }\r\n return -1;\r\n }\r\n\r\n includes(searchElement: T): boolean {\r\n const iterator = this.iterator();\r\n let next = iterator.next();\r\n while (!next.done) {\r\n if (next.value === searchElement) {\r\n return true;\r\n }\r\n next = iterator.next();\r\n }\r\n return false;\r\n }\r\n\r\n flatMap(callbackfn: (value: T) => U | Iterable): Stream {\r\n type FlatMapState = { this: S, iterator?: Iterator }\r\n return new StreamImpl(\r\n () => ({ this: this.startFn() }),\r\n (state) => {\r\n do {\r\n if (state.iterator) {\r\n const next = state.iterator.next();\r\n if (next.done) {\r\n state.iterator = undefined;\r\n } else {\r\n return next;\r\n }\r\n }\r\n const { done, value } = this.nextFn(state.this);\r\n if (!done) {\r\n const mapped = callbackfn(value);\r\n if (isIterable(mapped)) {\r\n state.iterator = mapped[Symbol.iterator]();\r\n } else {\r\n return { done: false, value: mapped };\r\n }\r\n }\r\n } while (state.iterator);\r\n return DONE_RESULT;\r\n }\r\n );\r\n }\r\n\r\n flat(depth?: D): FlatStream {\r\n if (depth === undefined) {\r\n depth = 1 as D;\r\n }\r\n if (depth <= 0) {\r\n return this as unknown as FlatStream;\r\n }\r\n const stream = depth > 1 ? this.flat(depth - 1) as unknown as StreamImpl : this;\r\n type FlatMapState = { this: S, iterator?: Iterator }\r\n return new StreamImpl(\r\n () => ({ this: stream.startFn() }),\r\n (state) => {\r\n do {\r\n if (state.iterator) {\r\n const next = state.iterator.next();\r\n if (next.done) {\r\n state.iterator = undefined;\r\n } else {\r\n return next;\r\n }\r\n }\r\n const { done, value } = stream.nextFn(state.this);\r\n if (!done) {\r\n if (isIterable(value)) {\r\n state.iterator = value[Symbol.iterator]() as Iterator;\r\n } else {\r\n return { done: false, value: value };\r\n }\r\n }\r\n } while (state.iterator);\r\n return DONE_RESULT;\r\n }\r\n ) as unknown as FlatStream;\r\n }\r\n\r\n head(): T | undefined {\r\n const iterator = this.iterator();\r\n const result = iterator.next();\r\n if (result.done) {\r\n return undefined;\r\n }\r\n return result.value;\r\n }\r\n\r\n tail(skipCount = 1): Stream {\r\n return new StreamImpl