2024-01-24 23:02:24 +08:00
import { j as Ae , k as ve } from "./chunk-SWZYHCA4.js" ; import { $a as de , F as xe , Fa as he , I as Ge , Ka as ue , b as We , bb as we , c as Ke , db as $e , eb as Ve , fb as qe , gb as Oe , h as ie , hb as Le } from "./chunk-KR7JTV7U.js" ; import { h as ce } from "./chunk-3V74GZ4F.js" ; var wt = ce ( We ( ) , 1 ) , $t = ce ( Ke ( ) , 1 ) , Vt = ce ( Ge ( ) , 1 ) ; var pe = function ( ) { var e = function ( V , i , n , a ) { for ( n = n || { } , a = V . length ; a -- ; n [ V [ a ] ] = i ) ; return n } , t = [ 1 , 3 ] , l = [ 1 , 4 ] , c = [ 1 , 5 ] , u = [ 1 , 6 ] , d = [ 5 , 6 , 8 , 9 , 11 , 13 , 31 , 32 , 33 , 34 , 35 , 36 , 44 , 62 , 63 ] , p = [ 1 , 18 ] , h = [ 2 , 7 ] , o = [ 1 , 22 ] , g = [ 1 , 23 ] , R = [ 1 , 24 ] , A = [ 1 , 25 ] , T = [ 1 , 26 ] , N = [ 1 , 27 ] , v = [ 1 , 20 ] , k = [ 1 , 28 ] , x = [ 1 , 29 ] , F = [ 62 , 63 ] , _e = [ 5 , 8 , 9 , 11 , 13 , 31 , 32 , 33 , 34 , 35 , 36 , 44 , 51 , 53 , 62 , 63 ] , ge = [ 1 , 47 ] , Ee = [ 1 , 48 ] , Re = [ 1 , 49 ] , me = [ 1 , 50 ] , Ie = [ 1 , 51 ] , be = [ 1 , 52 ] , ke = [ 1 , 53 ] , O = [ 53 , 54 ] , M = [ 1 , 64 ] , D = [ 1 , 60 ] , P = [ 1 , 61 ] , Y = [ 1 , 62 ] , U = [ 1 , 63 ] , B = [ 1 , 65 ] , z = [ 1 , 69 ] , j = [ 1 , 70 ] , X = [ 1 , 67 ] , J = [ 1 , 68 ] , m = [ 5 , 8 , 9 , 11 , 13 , 31 , 32 , 33 , 34 , 35 , 36 , 44 , 62 , 63 ] , re = { trace : function ( ) { } , yy : { } , symbols _ : { error : 2 , start : 3 , directive : 4 , NEWLINE : 5 , RD : 6 , diagram : 7 , EOF : 8 , acc _title : 9 , acc _title _value : 10 , acc _descr : 11 , acc _descr _value : 12 , acc _descr _multiline _value : 13 , requirementDef : 14 , elementDef : 15 , relationshipDef : 16 , requirementType : 17 , requirementName : 18 , STRUCT _START : 19 , requirementBody : 20 , ID : 21 , COLONSEP : 22 , id : 23 , TEXT : 24 , text : 25 , RISK : 26 , riskLevel : 27 , VERIFYMTHD : 28 , verifyType : 29 , STRUCT _STOP : 30 , REQUIREMENT : 31 , FUNCTIONAL _REQUIREMENT : 32 , INTERFACE _REQUIREMENT : 33 , PERFORMANCE _REQUIREMENT : 34 , PHYSICAL _REQUIREMENT : 35 , DESIGN _CONSTRAINT : 36 , LOW _RISK : 37 , MED _RISK : 38 , HIGH _RISK : 39 , VERIFY _ANALYSIS : 40 , VERIFY _DEMONSTRATION : 41 , VERIFY _INSPECTION : 42 , VERIFY _TEST : 43 , ELEMENT : 44 , elementName : 45 , elementBody : 46 , TYPE : 47 , type : 48 , DOCREF : 49 , ref : 50 , END _ARROW _L : 51 , relationship : 52 , LINE : 53 , END _ARROW _R : 54 , CONTAINS : 55 , COPIES : 56 , DERIVES : 57 , SATISFIES : 58 , VERIFIES : 59 , REFINES : 60 , TRACES : 61 , unqString : 62 , qString : 63 , $accept : 0 , $end : 1 } , terminals _ : { 2 : "error" , 5 : "NEWLINE" , 6 : "RD" , 8 : "EOF" , 9 : "acc_title" , 10 : "acc_title_value" , 11 : "acc_descr" , 12 : "acc_descr_value" , 13 : "acc_descr_multiline_value" , 19 : "STRUCT_START" , 21 : "ID" , 22 : "COLONSEP" , 24 : "TEXT" , 26 : "RISK" , 28 : "VERIFYMTHD" , 30 : "STRUCT_STOP" , 31 : "REQUIREMENT" , 32 : "FUNCTIONAL_REQUIREMENT" , 33 : "INTERFACE_REQUIREMENT" , 34 : "PERFORMANCE_REQUIREMENT" , 35 : "PHYSICAL_REQUIREMENT" , 36 : "DESIGN_CONSTRAINT" , 37 : "LOW_RISK" , 38 : "MED_RISK" , 39 : "HIGH_RISK" , 40 : "VERIFY_ANALYSIS" , 41 : "VERIFY_DEMONSTRATION" , 42 : "VERIFY_INSPECTION" , 43 : "VERIFY_TEST" , 44 : "ELEMENT" , 47 : "TYPE" , 49 : "DOCREF" , 51 : "END_ARROW_L" , 53 : "LINE" , 54 : "END_ARROW_R" , 55 : "CONTAINS" , 56 : "COPIES" , 57 : "DERIVES" , 58 : "SATISFIES" , 59 : "VERIFIES" , 60 : "REFINES" , 61 : "TRACES" , 62 : "unqString" , 63 : "qString" } , productions _ : [ 0 , [ 3 , 3 ] , [ 3 , 2 ] , [ 3 , 4 ] , [ 4 , 2 ] , [ 4 , 2 ] , [ 4 , 1 ] , [ 7 , 0 ] , [ 7 , 2 ] , [ 7 , 2 ] , [ 7 , 2 ] , [ 7 , 2 ] , [ 7 , 2 ] , [ 14 , 5 ] , [ 20 , 5 ] , [ 20 , 5 ] , [ 20 , 5 ] , [ 20 , 5 ] , [ 20 , 2 ] , [ 20 , 1 ] , [ 17 , 1 ] , [ 17 , 1 ] , [ 17 , 1 ] , [ 17 , 1 ] , [ 17 , 1 ] , [ 17 , 1 ] , [ 27 , 1 ] , [ 27 , 1 ] , [ 27 , 1 ] , [ 29 , 1 ] , [ 29 , 1 ] , [ 29 , 1 ] , [ 29 , 1 ] , [ 15 , 5 ] , [ 46 , 5 ] , [ 46 , 5 ] , [ 46 , 2 ] , [ 46 , 1 ] , [ 16 , 5 ] , [ 16 , 5 ] , [ 52 , 1 ] , [ 52 , 1 ] , [ 52 , 1 ] , [ 52 , 1 ] , [ 52 , 1 ] , [ 52 , 1 ] , [ 52 , 1 ] , [ 18 , 1 ] , [ 18 , 1 ] , [ 23 , 1 ] , [ 23 , 1 ] , [ 25 , 1 ] , [ 25 , 1 ] , [ 45 , 1 ] , [ 45 , 1 ] , [ 48 , 1 ] , [ 48 , 1 ] , [ 50 , 1 ] , [ 50 , 1 ] ] , performAction : function ( i , n , a , r , f , s , W ) { var _ = s . length - 1 ; switch ( f ) { case 4 : this . $ = s [ _ ] . trim ( ) , r . setAccTitle ( this . $ ) ; break ; case 5 : case 6 : this . $ = s [ _ ] . trim ( ) , r . setAccDescription ( this . $ ) ; break ; case 7 : this . $ = [ ] ; break ; case 13 : r . addRequirement ( s [ _ - 3 ] , s [ _ - 4 ] ) ; break ; case 14 : r . setNewReqId ( s [ _ - 2 ] ) ; break ; case 15 : r . setNewReqText ( s [ _ - 2 ] ) ; break ; case 16 : r . setNewReqRisk ( s [ _ - 2 ] ) ; break ; case 17 : r . setNewReqVerifyMethod ( s [ _ - 2 ] ) ; break ; case 20 : this . $ = r . RequirementType . REQUIREMENT ; break ; case 21 : this . $ = r . RequirementType . FUNCTIONAL _REQUIREMENT ; break ; case 22 : this . $ = r . RequirementType . INTERFACE _REQUIREMENT ; break ; case 23 : this . $ = r . RequirementType . PERFORMANCE _REQUIREMENT ; break ; case 24 : this . $ = r . RequirementType . PHYSICAL _REQUIREMENT ; break ; case 25 : this . $ = r . RequirementType . DESIGN _CONSTRAINT ; break ; case 26 : this . $ = r . RiskLevel . LOW _RISK ; break ; case 27 : this . $ = r . RiskLevel . MED _RISK ; break ; case 28 : this . $ = r . RiskLevel . HIGH _RISK ; break ; case 29 : this . $ = r . VerifyType . VERIFY _ANALYSIS ; break ; case 30 : this . $ = r . VerifyType . VERIFY _DEMONSTRATION ; break ; case 31 : this . $ = r . VerifyType . VERIFY _INSPECTION ; break ; case 32 : this . $ = r . VerifyType . VERIFY _TEST ; break ; case 33 : r . addElement ( s [ _ - 3 ] ) ; break ; case 34 : r . setNewElementType ( s [ _ - 2 ] ) ; break ; case 35 : r . setNewElementDocRef ( s [ _ - 2 ]
2023-10-06 00:34:57 +08:00
` +E.showPosition()+ `
Expecting ` +te.join(", ")+", got '"+(this.terminals_[I]||I)+"'":oe="Parse error on line "+(Z+1)+": Unexpected "+(I==Te?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(oe,{text:E.match,token:this.terminals_[I]||I,line:E.yylineno,loc:ae,expected:te})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+I);switch(S[0]){case 1:a.push(I),f.push(E.yytext),s.push(E.yylloc),a.push(S[1]),I=null,Se=E.yyleng,_=E.yytext,Z=E.yylineno,ae=E.yylloc;break;case 2:if(w=this.productions_[S[1]][1],Q. $ =f[f.length-w],Q._ $ ={first_line:s[s.length-(w||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(w||1)].first_column,last_column:s[s.length-1].last_column},Qe&&(Q._ $ .range=[s[s.length-(w||1)].range[0],s[s.length-1].range[1]]),le=this.performAction.apply(Q,[_,Se,Z,L.yy,S[1],f,s].concat(Be)),typeof le!="undefined")return le;w&&(a=a.slice(0,-1*w*2),f=f.slice(0,-1*w),s=s.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),f.push(Q. $ ),s.push(Q._ $ ),Ne=W[a[a.length-2]][a[a.length-1]],a.push(Ne);break;case 3:return!0}}return!0}},Ye=function(){var V={EOF:1,parseError:function(n,a){if(this.yy.parser)this.yy.parser.parseError(n,a);else throw new Error(n)},setInput:function(i,n){return this.yy=n||this.yy||{},this._input=i,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},input:function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var n=i.match(/(?: \r \n ?| \n ).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},unput:function(i){var n=i.length,a=i.split(/(?: \r \n ?| \n )/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var r=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),a.length-1&&(this.yylineno-=a.length-1);var f=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:a?(a.length===r.length?this.yylloc.first_column:0)+r[r.length-a.length].length-a[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(i){this.unput(this.match.slice(i))},pastInput:function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/ \n /g,"")},upcomingInput:function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/ \n /g,"")},showPosition:function(){var i=this.pastInput(),n=new Array(i.length+1).join("-");return i+this.upcomingInput()+ `
` +n+"^"},test_match:function(i,n){var a,r,f;if(this.options.backtrack_lexer&&(f={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&&(f.yylloc.range=this.yylloc.range.slice(0))),r=i[0].match(/(?: \r \n ?| \n ).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/ \r ? \n ?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,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(i[0].length),this.matched+=i[0],a=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var s in f)this[s]=f[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,n,a,r;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),s=0;s<f.length;s++)if(a=this._input.match(this.rules[f[s]]),a&&(!n||a[0].length>n[0].length)){if(n=a,r=s,this.options.backtrack_lexer){if(i=this.test_match(a,f[s]),i!==!1)return i;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(i=this.test_match(n,f[r]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+ ` . Unrecognized text .
` +this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var n=this.next();return n||this.lex()},begin:function(n){this.conditionStack.push(n)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(n){this.begin(n)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(n,a,r,f){switch(r){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return a.yytext=a.yytext.trim(),62}},rules:[/^(?:title \s [^# \n ;]+)/i,/^(?:accTitle \s *: \s *)/i,/^(?:(?! \n ||)*[^ \n ]*)/i,/^(?:accDescr \s *: \s *)/i,/^(?:(?! \n ||)*[^ \n ]*)/i,/^(?:accDescr \s * \{ \s *)/i,/^(?:[ \} ])/i,/^(?:[^ \} ]*)/i,/^(?:( \r ? \n )+)/i,/^(?: \s +)/i,/^(?:#[^ \n ]*)/i,/^(?:%[^ \n ]*)/i,/^(?: $ )/i,/^(?:requirementDiagram \b )/i,/^(?: \{ )/i,/^(?: \} )/i,/^(?::)/i,/^(?:id \b )/i,/^(?:text \b )/i,/^(?:risk \b )/i,/^(?:verifyMethod \b )/i,/^(?:requirement \b )/i,/^(?:functionalRequirement \b )/i,/^(?:interfaceRequirement \b )/i,/^(?:performanceRequirement \b )/i,/^(?:physicalRequirement \b )/i,/^(?:designConstraint \b )/i,/^(?:low \b )/i,/^(?:medium \b )/i,/^(?:high \b )/i,/^(?:analysis \b )/i,/^(?:demonstration \b )/i,/^(?:inspection \b )/i,/^(?:test \b )/i,/^(?:element \b )/i,/^(?:contains \b )/i,/^(?:copies \b )/i,/^(?:derives \b )/i,/^(?:satisfies \b )/i,/^(?:verifies \b )/i,/^(?:refines \b )/i,/^(?:traces \b )/i,/^(?:type \b )/i,/^(?:docref \b )/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[ \w ][^ \r \n \{ \< \> \- \= ]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,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,50],inclusive:!0}}};return V}();re.lexer=Ye;function ne(){this.yy={}}return ne.prototype=re,re.Parser=ne,new ne}();pe.parser=pe;var ze=pe,ye=[],b={},K={},q={},G={},je={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},Xe={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},Je={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Ze={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},et=(e,t)=>(K[e]===void 0&&(K[e]={name:e,type:t,id:b.id,text:b.text,risk:b.risk,verifyMethod:b.verifyMethod}),b={},K[e]),t
marker {
fill : $ { e . relationColor } ;
stroke : $ { e . relationColor } ;
}
marker . cross {
stroke : $ { e . lineColor } ;
}
svg {
font - family : $ { e . fontFamily } ;
font - size : $ { e . fontSize } ;
}
. reqBox {
fill : $ { e . requirementBackground } ;
fill - opacity : 1.0 ;
stroke : $ { e . requirementBorderColor } ;
stroke - width : $ { e . requirementBorderSize } ;
}
. reqTitle , . reqLabel {
fill : $ { e . requirementTextColor } ;
}
. reqLabelBox {
fill : $ { e . relationLabelBackground } ;
fill - opacity : 1.0 ;
}
. req - title - line {
stroke : $ { e . requirementBorderColor } ;
stroke - width : $ { e . requirementBorderSize } ;
}
. relationshipLine {
stroke : $ { e . relationColor } ;
stroke - width : 1 ;
}
. relationshipLabel {
fill : $ { e . relationLabelColor } ;
}
` ,yt=ft,fe={CONTAINS:"contains",ARROW:"arrow"},_t=(e,t)=>{let l=e.append("defs").append("marker").attr("id",fe.CONTAINS+"_line_ending").attr("refX",0).attr("refY",t.line_height/2).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("g");l.append("circle").attr("cx",t.line_height/2).attr("cy",t.line_height/2).attr("r",t.line_height/2).attr("fill","none"),l.append("line").attr("x1",0).attr("x2",t.line_height).attr("y1",t.line_height/2).attr("y2",t.line_height/2).attr("stroke-width",1),l.append("line").attr("y1",0).attr("y2",t.line_height).attr("x1",t.line_height/2).attr("x2",t.line_height/2).attr("stroke-width",1),e.append("defs").append("marker").attr("id",fe.ARROW+"_line_ending").attr("refX",t.line_height).attr("refY",.5*t.line_height).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("path").attr("d", ` M0 , 0
L$ { t . line _height } , $ { t . line _height / 2 }
M$ { t . line _height } , $ { t . line _height / 2 }
L0 , $ { t . line _height } ` ).attr("stroke-width",1)},Fe={ReqMarkers:fe,insertLineEndings:_t},y={},Ce=0,Me=(e,t)=>e.insert("rect","#"+t).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",y.rect_min_width+"px").attr("height",y.rect_min_height+"px"),De=(e,t,l)=>{let c=y.rect_min_width/2,u=e.append("text").attr("class","req reqLabel reqTitle").attr("id",t).attr("x",c).attr("y",y.rect_padding).attr("dominant-baseline","hanging"),d=0;l.forEach(g=>{d==0?u.append("tspan").attr("text-anchor","middle").attr("x",y.rect_min_width/2).attr("dy",0).text(g):u.append("tspan").attr("text-anchor","middle").attr("x",y.rect_min_width/2).attr("dy",y.line_height*.75).text(g),d++});let p=1.5*y.rect_padding,h=d*y.line_height*.75,o=p+h;return e.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",y.rect_min_width).attr("y1",o).attr("y2",o),{titleNode:u,y:o}},Pe=(e,t,l,c)=>{let u=e.append("text").attr("class","req reqLabel").attr("id",t).attr("x",y.rect_padding).attr("y",c).attr("dominant-baseline","hanging"),d=0,p=30,h=[];return l.forEach(o=>{let g=o.length;for(;g>p&&d<3;){let R=o.substring(0,p);o=o.substring(p,o.length),g=o.length,h[h.length]=R,d++}if(d==3){let R=h[h.length-1];h[h.length-1]=R.substring(0,R.length-4)+"..."}else h[h.length]=o;d=0}),h.forEach(o=>{u.append("tspan").attr("x",y.rect_padding).attr("dy",y.line_height).text(o)}),u},gt=(e,t,l,c)=>{let u=t.node().getTotalLength(),d=t.node().getPointAtLength(u*.5),p="rel"+Ce;Ce++;let o=e.append("text").attr("class","req relationshipLabel").attr("id",p).attr("x",d.x).attr("y",d.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(c).node().getBBox();e.insert("rect","#"+p).attr("class","req reqLabelBox").attr("x",d.x-o.width/2).attr("y",d.y-o.height/2).attr("width",o.width).attr("height",o.height).attr("fill","white").attr("fill-opacity","85%")},Et=function(e,t,l,c,u){let d=l.edge(H(t.src),H(t.dst)),p=xe().x(function(o){return o.x}).y(function(o){return o.y}),h=e.insert("path","#"+c).attr("class","er relationshipLine").attr("d",p(d.points)).attr("fill","none");t.type==u.db.Relationships.CONTAINS?h.attr("marker-start","url("+ue.getUrl(y.arrowMarkerAbsolute)+"#"+t.type+"_line_ending)"):(h.attr("stroke-dasharray","10,7"),h.attr("marker-end","url("+ue.getUrl(y.arrowMarkerAbsolute)+"#"+Fe.ReqMarkers.ARROW+"_line_ending)")),gt(e,h,y, ` << $ { t . type } >> ` )},Rt=(e,t,l)=>{Object.keys(e).forEach(c=>{let u=e[c];c=H(c),he.info("Added new requirement: ",c);let d=l.append("g").attr("id",c),p="req-"+c,h=Me(d,p),o=De(d,c+"_title",[ ` << $ { u . type } >> ` , ` $ { u . name } ` ]);Pe(d,c+"_body",[ ` Id : $ { u . id } ` , ` Text : $ { u . text } ` , ` Risk : $ { u . risk } ` , ` Verification : $ { u . verifyMethod } ` ],o.y);let g=h.node().getBBox();t.setNode(c,{width:g.width,height:g.height,shape:"rect",id:c})})},mt=(e,t,l)=>{Object.keys(e).forEach(c=>{let u=e[c],d=H(c),p=l.append("g").attr("id",d),h="element-"+d,o=Me(p,h),g=De(p,h+"_title",["<<Element>>", ` $ { c } ` ]);Pe(p,h+"_body",[ ` Type : $ { u . type || "Not Specified" } ` , ` Doc Ref : $ { u . docRef || "None" } ` ],g.y);let R=o.node().getBBox();t.setNode(d,{width:R.width,height:R.height,shape:"rect",id:d})})},It=(e,t)=>(e.forEach(function(l){let c=H(l.src),u=H(l.dst);t.setEdge(c,u,{relationship:l})}),e),bt=function(e,t){t.nodes().forEach(function(l){l!==void 0&&t.node(l)!==void 0&&(e.select("#"+l),e.select("#"+l).attr("transform","translate("+(t.node(l).x-t.node(l).width/2)+","+(t.node(l).y-t.node(l).height/2)+" )"))})},H=e=>e.replace(/ \s /g,"").replace(/ \. /g,"_"),kt=(e,t,l,c)=>{y=de().requirement;let u=y.securityLevel,d;u==="sandbox"&&(d=ie("#i"+t));let h=(u==="sandbox"?ie(d.nodes()[0].contentDocument.body):ie("body")).select( ` [ id = '${t}' ] ` );Fe.insertLineEndings(h,y);let o=new Ae({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:y.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}}),g=c.db.getRequirements(),R=c.db.getElements(),A=c.db.getRelationships();Rt(g,o,h),mt(R,o,h),It(A,o),ve(o),bt(h,o),A.forEach(function(x){Et(h,x,o,t,c)});let T=y.rect_padding,N=h.node().getBBox(),v=N.width+T*2,k=N.height+T*2;we(h,k,v,y.useMaxWid