UNPKG

704 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/webpack/bootstrap","webpack://mermaid/./src/themes/dark/index.scss","webpack://mermaid/./src/themes/default/index.scss","webpack://mermaid/./src/themes/forest/index.scss","webpack://mermaid/./src/themes/neutral/index.scss","webpack://mermaid/./node_modules/css-loader/dist/runtime/api.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/./node_modules/process/browser.js","webpack://mermaid/(webpack)/buildin/module.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/parser/classDiagram.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/parser/flow.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/parser/gantt.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/parser/gitGraph.js","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/themes sync ^\\.\\/.*\\/index\\.scss$","webpack://mermaid/./src/themes/dark/index.scss?3bd3","webpack://mermaid/./src/themes/default/index.scss?54ca","webpack://mermaid/./src/themes/forest/index.scss?3c73","webpack://mermaid/./src/themes/neutral/index.scss?dee9","webpack://mermaid/./src/utils.js","webpack://mermaid/external \"d3\"","webpack://mermaid/external \"dagre-d3-renderer\"","webpack://mermaid/external \"dagre-layout\"","webpack://mermaid/external \"graphlibrary\"","webpack://mermaid/external \"he\"","webpack://mermaid/external \"lodash\"","webpack://mermaid/external \"moment\"","webpack://mermaid/external \"scope-css\""],"names":["relations","classes","addClass","id","methods","members","clear","getClass","getClasses","getRelations","addRelation","relation","logger","debug","JSON","stringify","id1","id2","push","addMembers","className","MembersArr","theClass","substr","cleanupLabel","label","substring","trim","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","parser","yy","classDb","idCache","classCnt","conf","dividerMargin","padding","textHeight","getGraphId","keys","Object","i","length","undefined","insertMarkers","elem","append","attr","edgeCount","drawEdge","path","getRelationType","type","lineData","points","lineFunction","d3","x","d","y","curve","svgPath","url","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","replace","type1","type2","l","p1","Math","floor","p2","ceil","p","title","g","text","bounds","node","getBBox","insert","width","height","drawClass","classDef","info","addTspan","textEl","txt","isFirst","tSpan","classInfo","titleHeight","membersLine","forEach","member","membersBox","methodsLine","method","classBox","setConf","cnf","key","draw","parse","diagram","graphlib","Graph","multigraph","setGraph","isMultiGraph","setDefaultEdgeLabel","setNode","setEdge","dagre","layout","nodes","v","edges","e","w","edge","graph","o","k","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","trace","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","console","warn","relationTitle1","relationTitle2","table","defaultActions","parseError","str","hash","recoverable","error","Error","input","self","stack","tstack","vstack","lstack","recovering","TERROR","EOF","args","slice","call","arguments","lexer","create","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","ranges","options","getPrototypeOf","popStack","n","lex","token","pop","Array","symbol","preErrorSymbol","state","action","a","r","yyval","len","newState","expected","errStr","showPosition","join","match","line","loc","first_line","last_line","first_column","last_column","range","apply","concat","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","split","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","c","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","flex","begin","condition","popState","conditions","topState","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","YYSTATE","Parser","exports","main","commonjsMain","log","process","exit","source","require","readFileSync","normalize","module","argv","vertices","subGraphs","tooltips","subCount","direction","funs","addVertex","style","styles","s","addLink","start","end","linktext","stroke","updateLinkInterpolate","pos","interp","defaultInterpolate","interpolate","updateLink","defaultStyle","utils","isSubstringInArray","setDirection","dir","setClass","ids","setTooltip","tooltip","setClickFun","functionName","element","select","on","setLink","linkStr","link","getTooltip","setClickEvent","bindFunctions","fun","getDirection","getVertices","getEdges","setupToolTips","tooltipElem","_groups","svg","selectAll","el","rect","getBoundingClientRect","transition","duration","html","left","right","top","document","body","scrollTop","classed","addSubGraph","list","uniq","prims","objs","filter","item","indexOf","nodeList","subGraph","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","res","getDepthFirstPos","indexNodes","getSubGraphs","addVertices","vert","styleFromStyleArr","styleStr","arr","vertice","verticeText","classStr","labelTypeStr","htmlLabels","svgLabel","createElementNS","rows","j","tspan","setAttributeNS","setAttribute","textContent","appendChild","radious","_shape","labelType","shape","rx","ry","addEdges","cnt","toString","edgeData","arrowhead","interpolateToCurve","arrowheadStyle","labelpos","flowDb","flow","err","compound","rankdir","marginx","marginy","subG","setParent","Render","dagreD3","render","shapes","question","parent","bbox","h","shapeSvg","map","intersect","point","polygon","rect_left_inv_arrow","rect_right_inv_arrow","arrows","none","normal","marker","util","applyStyle","maxX","minX","maxY","minY","clusterRects","querySelectorAll","clusterEl","xPos","baseVal","value","yPos","cluster","te","labels","dim","insertBefore","firstChild","$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","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","dateFormat","axisFormat","sections","tasks","currentSection","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setDateFormat","setTitle","getTitle","addSection","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","getStartDate","prevTime","re","afterStatement","exec","task","findTaskById","dt","Date","setHours","endTime","moment","isValid","toDate","getEndDate","durationStatement","add","parseId","idStr","compileData","prevTask","dataStr","ds","data","matchFound","active","shift","crit","startTime","parseData","prevTaskId","startData","taskDb","addTask","descr","rawTask","section","processed","raw","taskInfo","addTaskOrg","newTask","description","compileTask","allProcessed","ganttDb","titleTopMargin","barHeight","barGap","topPadding","rightPadding","leftPadding","gridLineStartPadding","fontSize","fontFamily","getElementById","parentElement","offsetWidth","useWidth","taskArray","timeScale","domain","rangeRound","categories","catsUnfiltered","checkUnique","makeGant","pageWidth","pageHeight","gap","colorScale","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","numberSectionStyles","rectangles","secNum","startX","endX","textWidth","taskType","xAxis","tickSize","tickFormat","numOccurances","prevGap","getCount","todayG","today","getCounts","obj","word","commits","head","branches","curBranch","seq","getRandomInt","min","max","random","getId","pool","isfastforwardable","currentCommit","otherCommit","isArray","isReachableFrom","currentSeq","otherSeq","setOptions","rawOptString","message","getOptions","commit","msg","branch","name","merge","otherBranch","checkout","reset","commitRef","ref","parentCount","parseInt","upsert","newval","splice","prettyPrintCommitHistory","commitArr","_","maxBy","each","newCommit","nextCommit","uniqBy","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","orderBy","getCurrentBranch","getHead","allCommitsDict","branchNum","config","nodeSpacing","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","lineColor","leftMargin","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","f","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","isString","size","find","renderLines","branchColor","lineDrawn","ver","gitGraphParser","db","extend","signalType","LINETYPE","ACTIVE_START","actor","ACTIVE_END","unshift","loopText","LOOP_START","LOOP_END","optText","OPT_START","OPT_END","altText","ALT_START","ALT_END","parText","PAR_START","PAR_END","PAR_AND","ALT_ELSE","placement","PLACEMENT","OVER","LEFTOF","RIGHTOF","from","to","SOLID_OPEN","DOTTED_OPEN","SOLID","DOTTED","SOLID_CROSS","DOTTED_CROSS","actors","messages","notes","addActor","old","addMessage","idFrom","idTo","answer","addSignal","messageType","getMessages","getActors","getActor","getActorKeys","NOTE","ARROWTYPE","FILLED","OPEN","addNote","note","titleText","param","sequenceDb","diagramMarginX","diagramMarginY","actorMargin","actorFontSize","actorFontFamily","boxMargin","boxTextMargin","noteMargin","messageMargin","mirrorActors","bottomMarginAdj","activationWidth","textPlacement","startx","stopx","starty","stopy","verticalPos","sequenceItems","activations","init","updateVal","val","updateBounds","_self","updateFn","updateItemBounds","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","svgDraw","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","newLoop","endLoop","loop","addSectionToLoop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","_drawLongText","textObj","getTextObj","textMargin","dy","class","textElem","drawText","drawNote","forceWidth","getNoteRect","rectElem","drawRect","drawMessage","txtCenter","rightAngles","dx","drawActors","actorKeys","drawActor","actorFlowVerticaBounds","reduce","acc","insertArrowHead","insertArrowCrossHead","activeEnd","activationData","drawActivation","loopData","drawLoop","fromBounds","toBounds","fromIdx","toIdx","allBounds","box","actorLines","useMaxWidth","extraVertForTitle","rectData","fill","textData","nText","anchor","span","drawLabel","txtObject","genPoints","cut","labelMargin","actorCnt","center","_drawTextCandidateFunc","labelText","drawLoopLine","idx","defs","byText","content","textAttrs","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","LEVELS","fatal","setLogLevel","level","bind","format","time","mermaidAPI","getConfig","mermaid","sequenceConfig","callback","Node","startOnLoad","initialize","ganttConfig","gantt","getAttribute","now","innerHTML","he","decode","svgCode","contentLoaded","addEventListener","themes","themeName","theme","themeCSS","logLevel","flowchart","sequence","git","graphType","detectType","gitGraphAst","flowParser","sequenceParser","ganttParser","classParser","encodeEntities","innerTxt","isInt","test","decodeEntities","cb","container","querySelector","flowRenderer","style1","createElement","scope","style2","cs","getComputedStyle","font","gitGraphRenderer","sequenceDiagram","sequenceRenderer","assign","ganttRenderer","classRenderer","remove","lvl1Keys","lvl2Keys","defaultCurve","curveName","charAt","toUpperCase"],"mappings":"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eAAe,iBAAiB,oBAAoB,EAAE,oBAAoB,eAAe,iBAAiB,oBAAoB,EAAE,qBAAqB,eAAe,iBAAiB,oBAAoB,EAAE,mBAAmB,eAAe,iBAAiB,oBAAoB,EAAE,8CAA8C,oBAAoB,qBAAqB,EAAE;;;;;;;;;;;;;;ACF/3K;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,uCAAuC,gBAAgB;AACvD,OAAO;AACP;AACA;AACA,KAAK;AACL,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA;AACA;AACA;AACA;;AAEA,eAAe,oBAAoB;AACnC,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA,qDAAqD,cAAc;AACnE;AACA,C;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,IAAI;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/NA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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mBAAO,CAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;;AACA,eAAK,EAAL;AAAQ,mBAAO,EAAP;AACR;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","file":"mermaid.core.js","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[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(window, function() {\nreturn "," \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// 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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: lightgrey; }\\n\\n.edgePath .path {\\n stroke: lightgrey;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #6D6D65 !important;\\n stroke: rgba(255, 255, 255, 0.25) !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #F9FFFE; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #6D6D65;\\n border: 1px solid rgba(255, 255, 255, 0.25);\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #81B1DB;\\n fill: #BDD5EA; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: lightgrey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: lightgrey; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: lightgrey; }\\n\\n#arrowhead {\\n fill: lightgrey; }\\n\\n#crosshead path {\\n fill: lightgrey !important;\\n stroke: lightgrey !important; }\\n\\n.messageText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #81B1DB;\\n fill: #BDD5EA; }\\n\\n.labelText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopText {\\n fill: lightgrey;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #81B1DB; }\\n\\n.note {\\n stroke: rgba(255, 255, 255, 0.25);\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(255, 255, 255, 0.3); }\\n\\n.section2 {\\n fill: #EAE8B9; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle1 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle2 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle3 {\\n fill: #F9FFFE; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #DB5757;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #323D47;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: #323D47;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: #323D47; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #BDD5EA;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: lightgrey; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: lightgrey; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #81B1DB;\\n stroke: rgba(255, 255, 255, 0.5); }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #323D47 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #323D47 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #E83737;\\n fill: #E83737;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #E83737;\\n fill: #81B1DB;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #E83737;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #323D47 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #323D47 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #323D47; }\\n\\ng.classGroup text {\\n fill: purple;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #BDD5EA;\\n stroke: purple; }\\n\\ng.classGroup line {\\n stroke: purple;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #BDD5EA;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: purple;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: purple;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #BDD5EA;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: purple;\\n stroke: purple;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #333333;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #ffffde !important;\\n stroke: #aaaa33 !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #ffffde;\\n border: 1px solid #aaaa33;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #CCCCFF;\\n fill: #ECECFF; }\\n\\n.labelText {\\n fill: black;\\n stroke: none; }\\n\\n.loopText {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #CCCCFF; }\\n\\n.note {\\n stroke: #aaaa33;\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: rgba(102, 102, 255, 0.49); }\\n\\n.section2 {\\n fill: #fff400; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #8a90dd;\\n stroke: #534fbc; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #bfc7ff;\\n stroke: #534fbc; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #bfc7ff;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black; }\\n\\ng.classGroup text {\\n fill: #9370DB;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #ECECFF;\\n stroke: #9370DB; }\\n\\ng.classGroup line {\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #ECECFF;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #9370DB;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #9370DB;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #ECECFF;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #9370DB;\\n stroke: #9370DB;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: green; }\\n\\n.edgePath .path {\\n stroke: green;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: #e8e8e8; }\\n\\n.cluster rect {\\n fill: #cdffb2 !important;\\n stroke: #6eaa49 !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #cdffb2;\\n border: 1px solid #6eaa49;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #13540c;\\n fill: #cde498; }\\n\\ntext.actor {\\n fill: black;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: grey; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #326932;\\n fill: #cde498; }\\n\\n.labelText {\\n fill: black;\\n stroke: none; }\\n\\n.loopText {\\n fill: black;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #326932; }\\n\\n.note {\\n stroke: #6eaa49;\\n fill: #fff5ad; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #6eaa49; }\\n\\n.section2 {\\n fill: #6eaa49; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: lightgrey;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: red;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: black;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: black;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #487e3a;\\n stroke: #13540c; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: black; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: black; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: black !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: grey;\\n fill: lightgrey;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: black !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #ff8888;\\n fill: red;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #ff8888;\\n fill: #cde498;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #ff8888;\\n fill: lightgrey;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: black !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: black !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: black; }\\n\\ng.classGroup text {\\n fill: #13540c;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #cde498;\\n stroke: #13540c; }\\n\\ng.classGroup line {\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #cde498;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #13540c;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #13540c;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #cde498;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #13540c;\\n stroke: #13540c;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"/* Flowchart variables */\\n/* Sequence Diagram variables */\\n/* Gantt chart variables */\\n.label {\\n font-family: 'trebuchet ms', verdana, arial;\\n color: #333; }\\n\\n.node rect,\\n.node circle,\\n.node ellipse,\\n.node polygon {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1px; }\\n\\n.node.clickable {\\n cursor: pointer; }\\n\\n.arrowheadPath {\\n fill: #333333; }\\n\\n.edgePath .path {\\n stroke: #666;\\n stroke-width: 1.5px; }\\n\\n.edgeLabel {\\n background-color: white; }\\n\\n.cluster rect {\\n fill: #eaf2fb !important;\\n stroke: #26a !important;\\n stroke-width: 1px !important; }\\n\\n.cluster text {\\n fill: #333; }\\n\\ndiv.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 12px;\\n background: #eaf2fb;\\n border: 1px solid #26a;\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100; }\\n\\n.actor {\\n stroke: #999;\\n fill: #eee; }\\n\\ntext.actor {\\n fill: #333;\\n stroke: none; }\\n\\n.actor-line {\\n stroke: #666; }\\n\\n.messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n.messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: '2 2';\\n stroke: #333; }\\n\\n#arrowhead {\\n fill: #333; }\\n\\n#crosshead path {\\n fill: #333 !important;\\n stroke: #333 !important; }\\n\\n.messageText {\\n fill: #333;\\n stroke: none; }\\n\\n.labelBox {\\n stroke: #999;\\n fill: #eee; }\\n\\n.labelText {\\n fill: white;\\n stroke: none; }\\n\\n.loopText {\\n fill: white;\\n stroke: none; }\\n\\n.loopLine {\\n stroke-width: 2;\\n stroke-dasharray: '2 2';\\n stroke: #999; }\\n\\n.note {\\n stroke: #777700;\\n fill: #ffa; }\\n\\n.noteText {\\n fill: black;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 14px; }\\n\\n.activation0 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation1 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n.activation2 {\\n fill: #f4f4f4;\\n stroke: #666; }\\n\\n/** Section styling */\\n.section {\\n stroke: none;\\n opacity: 0.2; }\\n\\n.section0 {\\n fill: #80b3e6; }\\n\\n.section2 {\\n fill: #80b3e6; }\\n\\n.section1,\\n.section3 {\\n fill: white;\\n opacity: 0.2; }\\n\\n.sectionTitle0 {\\n fill: #333; }\\n\\n.sectionTitle1 {\\n fill: #333; }\\n\\n.sectionTitle2 {\\n fill: #333; }\\n\\n.sectionTitle3 {\\n fill: #333; }\\n\\n.sectionTitle {\\n text-anchor: start;\\n font-size: 11px;\\n text-height: 14px; }\\n\\n/* Grid and axis */\\n.grid .tick {\\n stroke: #e6e6e6;\\n opacity: 0.3;\\n shape-rendering: crispEdges; }\\n\\n.grid path {\\n stroke-width: 0; }\\n\\n/* Today line */\\n.today {\\n fill: none;\\n stroke: #d42;\\n stroke-width: 2px; }\\n\\n/* Task styling */\\n/* Default task */\\n.task {\\n stroke-width: 2; }\\n\\n.taskText {\\n text-anchor: middle;\\n font-size: 11px; }\\n\\n.taskTextOutsideRight {\\n fill: #333;\\n text-anchor: start;\\n font-size: 11px; }\\n\\n.taskTextOutsideLeft {\\n fill: #333;\\n text-anchor: end;\\n font-size: 11px; }\\n\\n/* Specific task settings for the sections*/\\n.taskText0,\\n.taskText1,\\n.taskText2,\\n.taskText3 {\\n fill: white; }\\n\\n.task0,\\n.task1,\\n.task2,\\n.task3 {\\n fill: #26a;\\n stroke: #1a4d80; }\\n\\n.taskTextOutside0,\\n.taskTextOutside2 {\\n fill: #333; }\\n\\n.taskTextOutside1,\\n.taskTextOutside3 {\\n fill: #333; }\\n\\n/* Active task */\\n.active0,\\n.active1,\\n.active2,\\n.active3 {\\n fill: #eee;\\n stroke: #1a4d80; }\\n\\n.activeText0,\\n.activeText1,\\n.activeText2,\\n.activeText3 {\\n fill: #333 !important; }\\n\\n/* Completed task */\\n.done0,\\n.done1,\\n.done2,\\n.done3 {\\n stroke: #666;\\n fill: #bbb;\\n stroke-width: 2; }\\n\\n.doneText0,\\n.doneText1,\\n.doneText2,\\n.doneText3 {\\n fill: #333 !important; }\\n\\n/* Tasks on the critical line */\\n.crit0,\\n.crit1,\\n.crit2,\\n.crit3 {\\n stroke: #b1361b;\\n fill: #d42;\\n stroke-width: 2; }\\n\\n.activeCrit0,\\n.activeCrit1,\\n.activeCrit2,\\n.activeCrit3 {\\n stroke: #b1361b;\\n fill: #eee;\\n stroke-width: 2; }\\n\\n.doneCrit0,\\n.doneCrit1,\\n.doneCrit2,\\n.doneCrit3 {\\n stroke: #b1361b;\\n fill: #bbb;\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges; }\\n\\n.doneCritText0,\\n.doneCritText1,\\n.doneCritText2,\\n.doneCritText3 {\\n fill: #333 !important; }\\n\\n.activeCritText0,\\n.activeCritText1,\\n.activeCritText2,\\n.activeCritText3 {\\n fill: #333 !important; }\\n\\n.titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: #333; }\\n\\ng.classGroup text {\\n fill: #999;\\n stroke: none;\\n font-family: 'trebuchet ms', verdana, arial;\\n font-size: 10px; }\\n\\ng.classGroup rect {\\n fill: #eee;\\n stroke: #999; }\\n\\ng.classGroup line {\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: #eee;\\n opacity: 0.5; }\\n\\n.classLabel .label {\\n fill: #999;\\n font-size: 10px; }\\n\\n.relation {\\n stroke: #999;\\n stroke-width: 1;\\n fill: none; }\\n\\n#compositionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#compositionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationStart {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#aggregationEnd {\\n fill: #eee;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#dependencyEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionStart {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n#extensionEnd {\\n fill: #999;\\n stroke: #999;\\n stroke-width: 1; }\\n\\n.commit-id,\\n.commit-msg,\\n.branch-label {\\n fill: lightgrey;\\n color: lightgrey; }\\n\", \"\"]);\n\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","\nimport { logger } from '../../logger'\n\nlet relations = []\nlet classes = {}\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addClass = function (id) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = {\n id: id,\n methods: [],\n members: []\n }\n }\n}\n\nexport const clear = function () {\n relations = []\n classes = {}\n}\n\nexport const getClass = function (id) {\n return classes[id]\n}\nexport const getClasses = function () {\n return classes\n}\n\nexport const getRelations = function () {\n return relations\n}\n\nexport const addRelation = function (relation) {\n logger.debug('Adding relation: ' + JSON.stringify(relation))\n addClass(relation.id1)\n addClass(relation.id2)\n relations.push(relation)\n}\n\nexport const addMembers = function (className, MembersArr) {\n const theClass = classes[className]\n if (typeof MembersArr === 'string') {\n if (MembersArr.substr(-1) === ')') {\n theClass.methods.push(MembersArr)\n } else {\n theClass.members.push(MembersArr)\n }\n }\n}\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim()\n } else {\n return label.trim()\n }\n}\n\nexport const lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n}\n\nexport const relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n}\n\nexport default {\n addClass,\n clear,\n getClass,\n getClasses,\n getRelations,\n addRelation,\n addMembers,\n cleanupLabel,\n lineType,\n relationType\n}\n","import dagre from 'dagre-layout'\nimport graphlib from 'graphlibrary'\nimport * as d3 from 'd3'\n\nimport classDb from './classDb'\nimport { logger } from '../../logger'\nimport { parser } from './parser/classDiagram'\n\nparser.yy = classDb\n\nconst idCache = {}\n\nlet classCnt = 0\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10\n}\n\n// Todo optimize\nconst getGraphId = function (label) {\n const keys = Object.keys(idCache)\n\n for (let i = 0; i < keys.length; i++) {\n if (idCache[keys[i]].label === label) {\n return keys[i]\n }\n }\n\n return undefined\n}\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nconst insertMarkers = function (elem) {\n elem.append('defs').append('marker')\n .attr('id', 'extensionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,7 L18,13 V 1 Z')\n\n elem.append('defs').append('marker')\n .attr('id', 'extensionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 1,1 V 13 L18,7 Z') // this is actual shape for arrowhead\n\n elem.append('defs').append('marker')\n .attr('id', 'compositionStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem.append('defs').append('marker')\n .attr('id', 'compositionEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem.append('defs').append('marker')\n .attr('id', 'aggregationStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem.append('defs').append('marker')\n .attr('id', 'aggregationEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')\n\n elem.append('defs').append('marker')\n .attr('id', 'dependencyStart')\n .attr('class', 'extension')\n .attr('refX', 0)\n .attr('refY', 7)\n .attr('markerWidth', 190)\n .attr('markerHeight', 240)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z')\n\n elem.append('defs').append('marker')\n .attr('id', 'dependencyEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 28)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z')\n}\n\nlet edgeCount = 0\nconst drawEdge = function (elem, path, relation) {\n const getRelationType = function (type) {\n switch (type) {\n case classDb.relationType.AGGREGATION:\n return 'aggregation'\n case classDb.relationType.EXTENSION:\n return 'extension'\n case classDb.relationType.COMPOSITION:\n return 'composition'\n case classDb.relationType.DEPENDENCY:\n return 'dependency'\n }\n }\n\n // The data for our line\n const lineData = path.points\n\n // This is the accessor function we talked about above\n const lineFunction = d3.line()\n .x(function (d) {\n return d.x\n })\n .y(function (d) {\n return d.y\n })\n .curve(d3.curveBasis)\n\n const svgPath = elem.append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', 'edge' + edgeCount)\n .attr('class', 'relation')\n let url = ''\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n if (relation.relation.type1 !== 'none') {\n svgPath.attr('marker-start', 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')')\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')')\n }\n\n let x, y\n const l = path.points.length\n if ((l % 2) !== 0) {\n const p1 = path.points[Math.floor(l / 2)]\n const p2 = path.points[Math.ceil(l / 2)]\n x = (p1.x + p2.x) / 2\n y = (p1.y + p2.y) / 2\n } else {\n const p = path.points[Math.floor(l / 2)]\n x = p.x\n y = p.y\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g')\n .attr('class', 'classLabel')\n const label = g.append('text')\n .attr('class', 'label')\n .attr('x', x)\n .attr('y', y)\n .attr('fill', 'red')\n .attr('text-anchor', 'middle')\n .text(relation.title)\n\n window.label = label\n const bounds = label.node().getBBox()\n\n g.insert('rect', ':first-child')\n .attr('class', 'box')\n .attr('x', bounds.x - conf.padding / 2)\n .attr('y', bounds.y - conf.padding / 2)\n .attr('width', bounds.width + conf.padding)\n .attr('height', bounds.height + conf.padding)\n }\n\n edgeCount++\n}\n\nconst drawClass = function (elem, classDef) {\n logger.info('Rendering class ' + classDef)\n\n const addTspan = function (textEl, txt, isFirst) {\n const tSpan = textEl.append('tspan')\n .attr('x', conf.padding)\n .text(txt)\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight)\n }\n }\n\n const id = 'classId' + classCnt\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0\n }\n\n const g = elem.append('g')\n .attr('id', id)\n .attr('class', 'classGroup')\n const title = g.append('text')\n .attr('x', conf.padding)\n .attr('y', conf.textHeight + conf.padding)\n .text(classDef.id)\n\n const titleHeight = title.node().getBBox().height\n\n const membersLine = g.append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2)\n\n const members = g.append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + (conf.dividerMargin) + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText')\n\n let isFirst = true\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst)\n isFirst = false\n })\n\n const membersBox = members.node().getBBox()\n\n const methodsLine = g.append('line') // text label for the x axis\n .attr('x1', 0)\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\n\n const methods = g.append('text') // text label for the x axis\n .attr('x', conf.padding)\n .attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight)\n .attr('fill', 'white')\n .attr('class', 'classText')\n\n isFirst = true\n\n classDef.methods.forEach(function (method) {\n addTspan(methods, method, isFirst)\n isFirst = false\n })\n\n const classBox = g.node().getBBox()\n g.insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', classBox.width + 2 * conf.padding)\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\n\n membersLine.attr('x2', classBox.width + 2 * conf.padding)\n methodsLine.attr('x2', classBox.width + 2 * conf.padding)\n\n classInfo.width = classBox.width + 2 * conf.padding\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin\n\n idCache[id] = classInfo\n classCnt++\n return classInfo\n}\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text)\n\n logger.info('Rendering diagram ' + text)\n\n /// / Fetch the default direction, use TD if none was found\n const diagram = d3.select(`[id=\"${id}\"]`)\n insertMarkers(diagram)\n\n // Layout graph, Create a new directed graph\n const g = new graphlib.Graph({\n multigraph: true\n })\n\n // Set an object for the graph label\n g.setGraph({\n isMultiGraph: true\n })\n\n // Default to assigning a new object as a label for each new edge.\n g.setDefaultEdgeLabel(function () {\n return {}\n })\n\n const classes = classDb.getClasses()\n const keys = Object.keys(classes)\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]]\n const node = drawClass(diagram, classDef)\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n g.setNode(node.id, node)\n logger.info('Org height: ' + node.height)\n }\n\n const relations = classDb.getRelations()\n relations.forEach(function (relation) {\n logger.info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation))\n g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), { relation: relation })\n })\n dagre.layout(g)\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined') {\n logger.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)))\n d3.select('#' + v).attr('transform', 'translate(' + (g.node(v).x - (g.node(v).width / 2)) + ',' + (g.node(v).y - (g.node(v).height / 2)) + ' )')\n }\n })\n g.edges().forEach(function (e) {\n logger.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)))\n drawEdge(diagram, g.edge(e), g.edge(e).relation)\n })\n\n diagram.attr('height', '100%')\n diagram.attr('width', '100%')\n diagram.attr('viewBox', '0 0 ' + (g.graph().width + 20) + ' ' + (g.graph().height + 20))\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,11],$V1=[1,12],$V2=[1,13],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[6,8],$V7=[1,26],$V8=[1,27],$V9=[1,28],$Va=[1,29],$Vb=[1,30],$Vc=[1,31],$Vd=[6,8,13,17,23,26,27,28,29,30,31],$Ve=[6,8,13,17,23,26,27,28,29,30,31,45,46,47],$Vf=[23,45,46,47],$Vg=[23,30,31,45,46,47],$Vh=[23,26,27,28,29,45,46,47],$Vi=[6,8,13],$Vj=[1,46];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"CLASS_DIAGRAM\":5,\"NEWLINE\":6,\"statements\":7,\"EOF\":8,\"statement\":9,\"className\":10,\"alphaNumToken\":11,\"relationStatement\":12,\"LABEL\":13,\"classStatement\":14,\"methodStatement\":15,\"CLASS\":16,\"STRUCT_START\":17,\"members\":18,\"STRUCT_STOP\":19,\"MEMBER\":20,\"SEPARATOR\":21,\"relation\":22,\"STR\":23,\"relationType\":24,\"lineType\":25,\"AGGREGATION\":26,\"EXTENSION\":27,\"COMPOSITION\":28,\"DEPENDENCY\":29,\"LINE\":30,\"DOTTED_LINE\":31,\"commentToken\":32,\"textToken\":33,\"graphCodeTokens\":34,\"textNoTagsToken\":35,\"TAGSTART\":36,\"TAGEND\":37,\"==\":38,\"--\":39,\"PCT\":40,\"DEFAULT\":41,\"SPACE\":42,\"MINUS\":43,\"keywords\":44,\"UNICODE_TEXT\":45,\"NUM\":46,\"ALPHA\":47,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"CLASS_DIAGRAM\",6:\"NEWLINE\",8:\"EOF\",13:\"LABEL\",16:\"CLASS\",17:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"MEMBER\",21:\"SEPARATOR\",23:\"STR\",26:\"AGGREGATION\",27:\"EXTENSION\",28:\"COMPOSITION\",29:\"DEPENDENCY\",30:\"LINE\",31:\"DOTTED_LINE\",34:\"graphCodeTokens\",36:\"TAGSTART\",37:\"TAGEND\",38:\"==\",39:\"--\",40:\"PCT\",41:\"DEFAULT\",42:\"SPACE\",43:\"MINUS\",44:\"keywords\",45:\"UNICODE_TEXT\",46:\"NUM\",47:\"ALPHA\"},\nproductions_: [0,[3,1],[4,4],[7,1],[7,3],[10,2],[10,1],[9,1],[9,2],[9,1],[9,1],[14,2],[14,5],[18,1],[18,2],[15,1],[15,2],[15,1],[15,1],[12,3],[12,4],[12,4],[12,5],[22,3],[22,2],[22,2],[22,1],[24,1],[24,1],[24,1],[24,1],[25,1],[25,1],[32,1],[32,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[33,1],[35,1],[35,1],[35,1],[35,1],[11,1],[11,1],[11,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 6:\n this.$=$$[$0]; \nbreak;\ncase 7:\n yy.addRelation($$[$0]); \nbreak;\ncase 8:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 12:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 13:\n this.$ = [$$[$0]]; \nbreak;\ncase 14:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 15:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 16:\nyy.addMembers($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 17:\nconsole.warn('Member',$$[$0]);\nbreak;\ncase 18:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 19:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 20:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 21:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 22:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 23:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 24:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 25:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 26:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 27:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 28:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 29:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 30:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 31:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 32:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},{8:[1,18]},{6:[1,19],8:[2,3]},o($V6,[2,7],{13:[1,20]}),o($V6,[2,9]),o($V6,[2,10]),o($V6,[2,15],{22:21,24:24,25:25,13:[1,23],23:[1,22],26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc}),{10:32,11:14,45:$V3,46:$V4,47:$V5},o($V6,[2,17]),o($V6,[2,18]),o($Vd,[2,6],{11:14,10:33,45:$V3,46:$V4,47:$V5}),o($Ve,[2,46]),o($Ve,[2,47]),o($Ve,[2,48]),{1:[2,2]},{7:34,9:6,10:10,11:14,12:7,14:8,15:9,16:$V0,20:$V1,21:$V2,45:$V3,46:$V4,47:$V5},o($V6,[2,8]),{10:35,11:14,23:[1,36],45:$V3,46:$V4,47:$V5},{22:37,24:24,25:25,26:$V7,27:$V8,28:$V9,29:$Va,30:$Vb,31:$Vc},o($V6,[2,16]),{25:38,30:$Vb,31:$Vc},o($Vf,[2,26],{24:39,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vg,[2,27]),o($Vg,[2,28]),o($Vg,[2,29]),o($Vg,[2,30]),o($Vh,[2,31]),o($Vh,[2,32]),o($V6,[2,11],{17:[1,40]}),o($Vd,[2,5]),{8:[2,4]},o($Vi,[2,19]),{10:41,11:14,45:$V3,46:$V4,47:$V5},{10:42,11:14,23:[1,43],45:$V3,46:$V4,47:$V5},o($Vf,[2,25],{24:44,26:$V7,27:$V8,28:$V9,29:$Va}),o($Vf,[2,24]),{18:45,20:$Vj},o($Vi,[2,21]),o($Vi,[2,20]),{10:47,11:14,45:$V3,46:$V4,47:$V5},o($Vf,[2,23]),{19:[1,48]},{18:49,19:[2,13],20:$Vj},o($Vi,[2,22]),o($V6,[2,12]),{19:[2,14]}],\ndefaultActions: {2:[2,1],18:[2,2],34:[2,4],49:[2,14]},\nparseError: 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},\nparse: 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 lexer = 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 lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.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 function lex() {\n var token;\n token = tstack.pop() || lexer.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 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 (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.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: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: 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(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.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}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError: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 },\n\n// resets the lexer, sets new input\nsetInput: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 },\n\n// consumes and returns one char from the input\ninput: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\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= 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\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\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 ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\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 },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\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.\nreject: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 }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput: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 },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput: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 },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\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\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 ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n 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 // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n 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; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState: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 },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules: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 },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState: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 },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:return 6;\nbreak;\ncase 2:/* skip whitespace */\nbreak;\ncase 3:return 5;\nbreak;\ncase 4: this.begin(\"struct\"); /*console.log('Starting struct');*/return 17;\nbreak;\ncase 5: /*console.log('Ending struct');*/this.popState(); return 19;\nbreak;\ncase 6:/* nothing */\nbreak;\ncase 7: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 8:return 16;\nbreak;\ncase 9:this.begin(\"string\");\nbreak;\ncase 10:this.popState();\nbreak;\ncase 11:return \"STR\";\nbreak;\ncase 12:return 27;\nbreak;\ncase 13:return 27;\nbreak;\ncase 14:return 29;\nbreak;\ncase 15:return 29;\nbreak;\ncase 16:return 28;\nbreak;\ncase 17:return 26;\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 13;\nbreak;\ncase 21:return 43;\nbreak;\ncase 22:return 'DOT';\nbreak;\ncase 23:return 'PLUS';\nbreak;\ncase 24:return 40;\nbreak;\ncase 25:return 'EQUALS';\nbreak;\ncase 26:return 'EQUALS';\nbreak;\ncase 27:return 47;\nbreak;\ncase 28:return 'PUNCTUATION';\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 45;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 8;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/,/^(?:\\n+)/,/^(?:\\s+)/,/^(?:classDiagram\\b)/,/^(?:[\\{])/,/^(?:\\})/,/^(?:[\\n])/,/^(?:[^\\{\\}\\n]*)/,/^(?:class\\b)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::[^#\\n;]+)/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!\"#$%&'*+,-.`?\\\\_\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"string\":{\"rules\":[10,11],\"inclusive\":false},\"struct\":{\"rules\":[5,6,7],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,8,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import * as d3 from 'd3'\n\nimport { logger } from '../../logger'\nimport utils from '../../utils'\n\nlet vertices = {}\nlet edges = []\nlet classes = []\nlet subGraphs = []\nlet tooltips = {}\nlet subCount = 0\nlet direction\n// Functions to be run after graph rendering\nlet funs = []\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n */\nexport const addVertex = function (id, text, type, style) {\n let txt\n\n if (typeof id === 'undefined') {\n return\n }\n if (id.trim().length === 0) {\n return\n }\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = { id: id, styles: [], classes: [] }\n }\n if (typeof text !== 'undefined') {\n txt = text.trim()\n\n // strip quotes if string starts and exnds with a quote\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1)\n }\n\n vertices[id].text = txt\n }\n if (typeof type !== 'undefined') {\n vertices[id].type = type\n }\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n vertices[id].styles.push(s)\n })\n }\n }\n}\n\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\nexport const addLink = function (start, end, type, linktext) {\n logger.info('Got edge...', start, end)\n const edge = { start: start, end: end, type: undefined, text: '' }\n linktext = type.text\n\n if (typeof linktext !== 'undefined') {\n edge.text = linktext.trim()\n\n // strip quotes if string starts and exnds with a quote\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1)\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type\n edge.stroke = type.stroke\n }\n edges.push(edge)\n}\n\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\nexport const updateLinkInterpolate = function (pos, interp) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp\n } else {\n edges[pos].interpolate = interp\n }\n}\n\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\nexport const updateLink = function (pos, style) {\n if (pos === 'default') {\n edges.defaultStyle = style\n } else {\n if (utils.isSubstringInArray('fill', style) === -1) {\n style.push('fill:none')\n }\n edges[pos].style = style\n }\n}\n\nexport const addClass = function (id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = { id: id, styles: [] }\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n classes[id].styles.push(s)\n })\n }\n }\n}\n\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\nexport const setDirection = function (dir) {\n direction = dir\n}\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className)\n }\n })\n}\n\nconst setTooltip = function (ids, tooltip) {\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[id] = tooltip\n }\n })\n}\n\nconst setClickFun = function (id, functionName) {\n if (typeof functionName === 'undefined') {\n return\n }\n if (typeof vertices[id] !== 'undefined') {\n funs.push(function (element) {\n const elem = d3.select(element).select(`[id=\"${id}\"]`)\n if (elem !== null) {\n elem.on('click', function () {\n window[functionName](id)\n })\n }\n })\n }\n}\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param tooltip Tooltip for the clickable element\n */\nexport const setLink = function (ids, linkStr, tooltip) {\n ids.split(',').forEach(function (id) {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = linkStr\n }\n })\n setTooltip(ids, tooltip)\n setClass(ids, 'clickable')\n}\nexport const getTooltip = function (id) {\n return tooltips[id]\n}\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\nexport const setClickEvent = function (ids, functionName, tooltip) {\n ids.split(',').forEach(function (id) { setClickFun(id, functionName) })\n setTooltip(ids, tooltip)\n setClass(ids, 'clickable')\n}\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element)\n })\n}\nexport const getDirection = function () {\n return direction\n}\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\nexport const getVertices = function () {\n return vertices\n}\n\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\nexport const getEdges = function () {\n return edges\n}\n\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\nexport const getClasses = function () {\n return classes\n}\n\nconst setupToolTips = function (element) {\n let tooltipElem = d3.select('.mermaidTooltip')\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = d3.select('body')\n .append('div')\n .attr('class', 'mermaidTooltip')\n .style('opacity', 0)\n }\n\n const svg = d3.select(element).select('svg')\n\n const nodes = svg.selectAll('g.node')\n nodes\n .on('mouseover', function () {\n const el = d3.select(this)\n const title = el.attr('title')\n // Dont try to draw a tooltip if no data is provided\n if (title === null) {\n return\n }\n const rect = this.getBoundingClientRect()\n\n tooltipElem.transition()\n .duration(200)\n .style('opacity', '.9')\n tooltipElem.html(el.attr('title'))\n .style('left', (rect.left + (rect.right - rect.left) / 2) + 'px')\n .style('top', (rect.top - 14 + document.body.scrollTop) + 'px')\n el.classed('hover', true)\n })\n .on('mouseout', function () {\n tooltipElem.transition()\n .duration(500)\n .style('opacity', 0)\n const el = d3.select(this)\n el.classed('hover', false)\n })\n}\nfuns.push(setupToolTips)\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const clear = function () {\n vertices = {}\n classes = {}\n edges = []\n funs = []\n funs.push(setupToolTips)\n subGraphs = []\n subCount = 0\n tooltips = []\n}\n/**\n *\n * @returns {string}\n */\nexport const defaultStyle = function () {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;'\n}\n\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\nexport const addSubGraph = function (list, title) {\n function uniq (a) {\n const prims = { 'boolean': {}, 'number': {}, 'string': {} }\n const objs = []\n\n return a.filter(function (item) {\n const type = typeof item\n if (item.trim() === '') {\n return false\n }\n if (type in prims) { return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true) } else { return objs.indexOf(item) >= 0 ? false : objs.push(item) }\n })\n }\n\n let nodeList = []\n\n nodeList = uniq(nodeList.concat.apply(nodeList, list))\n\n const subGraph = { id: 'subGraph' + subCount, nodes: nodeList, title: title.trim() }\n subGraphs.push(subGraph)\n subCount = subCount + 1\n return subGraph.id\n}\n\nconst getPosForId = function (id) {\n for (let i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i\n }\n }\n return -1\n}\nlet secCount = -1\nconst posCrossRef = []\nconst indexNodes2 = function (id, pos) {\n const nodes = subGraphs[pos].nodes\n secCount = secCount + 1\n if (secCount > 2000) {\n return\n }\n posCrossRef[secCount] = pos\n // Check if match\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n }\n }\n\n let count = 0\n let posCount = 1\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count])\n // Ignore regular nodes (pos will be -1)\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos)\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n }\n } else {\n posCount = posCount + res.count\n }\n }\n count = count + 1\n }\n\n return {\n result: false,\n count: posCount\n }\n}\n\nexport const getDepthFirstPos = function (pos) {\n return posCrossRef[pos]\n}\nexport const indexNodes = function () {\n secCount = -1\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0)\n }\n}\n\nexport const getSubGraphs = function () {\n return subGraphs\n}\n\nexport default {\n addVertex,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs\n}\n","import graphlib from 'graphlibrary'\nimport * as d3 from 'd3'\n\nimport flowDb from './flowDb'\nimport flow from './parser/flow'\nimport dagreD3 from 'dagre-d3-renderer'\nimport { logger } from '../../logger'\nimport { interpolateToCurve } from '../../utils'\n\nconst conf = {\n}\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n for (let i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]]\n }\n}\n\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\nexport const addVertices = function (vert, g) {\n const keys = Object.keys(vert)\n\n const styleFromStyleArr = function (styleStr, arr) {\n // Create a compound style definition from the style definitions found for the node in the graph definition\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n styleStr = styleStr + arr[i] + ';'\n }\n }\n\n return styleStr\n }\n\n // Iterate through each item in the vertice object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertice = vert[id]\n let verticeText\n\n /**\n * Variable for storing the classes for the vertice\n * @type {string}\n */\n let classStr = ''\n if (vertice.classes.length > 0) {\n classStr = vertice.classes.join(' ')\n }\n\n /**\n * Variable for storing the extracted style for the vertice\n * @type {string}\n */\n let style = ''\n // Create a compound style definition from the style definitions found for the node in the graph definition\n style = styleFromStyleArr(style, vertice.styles)\n\n // Use vertice id as text in the box if no text is provided by the graph definition\n if (typeof vertice.text === 'undefined') {\n verticeText = vertice.id\n } else {\n verticeText = vertice.text\n }\n\n let labelTypeStr = ''\n if (conf.htmlLabels) {\n labelTypeStr = 'html'\n verticeText = verticeText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => `<i class='${s.replace(':', ' ')}'></i>`)\n if (vertice.link) {\n verticeText = '<a href=\"' + vertice.link + '\" rel=\"noopener\">' + verticeText + '</a>'\n }\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text')\n\n const rows = verticeText.split(/<br>/)\n\n for (let j = 0; j < rows.length; j++) {\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', '1')\n tspan.textContent = rows[j]\n svgLabel.appendChild(tspan)\n }\n\n labelTypeStr = 'svg'\n if (vertice.link) {\n const link = document.createElementNS('http://www.w3.org/2000/svg', 'a')\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertice.link)\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener')\n verticeText = link\n } else {\n verticeText = svgLabel\n }\n }\n\n let radious = 0\n let _shape = ''\n // Set the shape based parameters\n switch (vertice.type) {\n case 'round':\n radious = 5\n _shape = 'rect'\n break\n case 'square':\n _shape = 'rect'\n break\n case 'diamond':\n _shape = 'question'\n break\n case 'odd':\n _shape = 'rect_left_inv_arrow'\n break\n case 'odd_right':\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 'group':\n _shape = 'rect'\n // Need to create a text node if using svg labels, see #367\n verticeText = conf.htmlLabels ? '' : document.createElementNS('http://www.w3.org/2000/svg', 'text')\n break\n default:\n _shape = 'rect'\n }\n // Add the node\n g.setNode(vertice.id, { labelType: labelTypeStr, shape: _shape, label: verticeText, rx: radious, ry: radious, 'class': classStr, style: style, id: vertice.id })\n })\n}\n\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\nexport const addEdges = function (edges, g) {\n let cnt = 0\n\n let defaultStyle\n if (typeof edges.defaultStyle !== 'undefined') {\n defaultStyle = edges.defaultStyle.toString().replace(/,/g, ';')\n }\n\n edges.forEach(function (edge) {\n cnt++\n const edgeData = {}\n\n // Set link type for rendering\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none'\n } else {\n edgeData.arrowhead = 'normal'\n }\n\n let style = ''\n if (typeof edge.style !== 'undefined') {\n edge.style.forEach(function (s) {\n style = style + s + ';'\n })\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none'\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle\n }\n break\n case 'dotted':\n style = 'stroke: #333; fill:none;stroke-width:2px;stroke-dasharray:3;'\n break\n case 'thick':\n style = 'stroke: #333; stroke-width: 3.5px;fill:none'\n break\n }\n }\n edgeData.style = style\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, d3.curveLinear)\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, d3.curveLinear)\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, d3.curveLinear)\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333'\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333'\n if (typeof edge.style === 'undefined') {\n edgeData.labelpos = 'c'\n if (conf.htmlLabels) {\n edgeData.labelType = 'html'\n edgeData.label = '<span class=\"edgeLabel\">' + edge.text + '</span>'\n } else {\n edgeData.labelType = 'text'\n edgeData.style = 'stroke: #333; stroke-width: 1.5px;fill:none'\n edgeData.label = edge.text.replace(/<br>/g, '\\n')\n }\n } else {\n edgeData.label = edge.text.replace(/<br>/g, '\\n')\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.start, edge.end, edgeData, cnt)\n })\n}\n\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\nexport const getClasses = function (text) {\n flowDb.clear()\n const parser = flow.parser\n parser.yy = flowDb\n\n // Parse the graph definition\n parser.parse(text)\n return flowDb.getClasses()\n}\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n logger.debug('Drawing flowchart')\n flowDb.clear()\n const parser = flow.parser\n parser.yy = flowDb\n\n // Parse the graph definition\n try {\n parser.parse(text)\n } catch (err) {\n logger.debug('Parsing failed')\n }\n\n // Fetch the default direction, use TD if none was found\n let dir = flowDb.getDirection()\n if (typeof dir === 'undefined') {\n dir = 'TD'\n }\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n })\n .setGraph({\n rankdir: dir,\n marginx: 20,\n marginy: 20\n\n })\n .setDefaultEdgeLabel(function () {\n return {}\n })\n\n let subG\n const subGraphs = flowDb.getSubGraphs()\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i]\n flowDb.addVertex(subG.id, subG.title, 'group', undefined)\n }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const vert = flowDb.getVertices()\n\n const edges = flowDb.getEdges()\n\n let i = 0\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i]\n\n d3.selectAll('cluster').append('text')\n\n for (let j = 0; j < subG.nodes.length; j++) {\n g.setParent(subG.nodes[j], subG.id)\n }\n }\n addVertices(vert, g)\n addEdges(edges, g)\n\n // Create the renderer\n const Render = dagreD3.render\n const render = new Render()\n\n // Add custom shape for rhombus type of boc (decision)\n render.shapes().question = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\n const s = (w + h) * 0.9\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 const shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('rx', 5)\n .attr('ry', 5)\n .attr('transform', 'translate(' + (-s / 2) + ',' + (s * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add custom shape for box with inverted arrow on left side\n render.shapes().rect_left_inv_arrow = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\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 shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('transform', 'translate(' + (-w / 2) + ',' + (h * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add custom shape for box with inverted arrow on right side\n render.shapes().rect_right_inv_arrow = function (parent, bbox, node) {\n const w = bbox.width\n const h = bbox.height\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 shapeSvg = parent.insert('polygon', ':first-child')\n .attr('points', points.map(function (d) {\n return d.x + ',' + d.y\n }).join(' '))\n .attr('transform', 'translate(' + (-w / 2) + ',' + (h * 2 / 4) + ')')\n node.intersect = function (point) {\n return dagreD3.intersect.polygon(node, points, point)\n }\n return shapeSvg\n }\n\n // Add our custom arrow - an empty arrowhead\n render.arrows().none = function normal (parent, id, edge, type) {\n const marker = parent.append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n\n const path = marker.append('path')\n .attr('d', 'M 0 0 L 0 0 L 0 0 z')\n dagreD3.util.applyStyle(path, edge[type + 'Style'])\n }\n\n // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n render.arrows().normal = function normal (parent, id, edge, type) {\n const marker = parent.append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n\n marker.append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowheadPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0')\n }\n\n // Set up an SVG group so that we can translate the final graph.\n const svg = d3.select(`[id=\"${id}\"]`)\n\n // Run the renderer. This is what draws the final graph.\n const element = d3.select('#' + id + ' g')\n render(element, g)\n\n element.selectAll('g.node')\n .attr('title', function () {\n return flowDb.getTooltip(this.id)\n })\n\n const padding = 8\n const width = g.maxX - g.minX + padding * 2\n const height = g.maxY - g.minY + padding * 2\n svg.attr('width', '100%')\n svg.attr('style', `max-width: ${width}px;`)\n svg.attr('viewBox', `0 0 ${width} ${height}`)\n svg.select('g').attr('transform', `translate(${padding - g.minX}, ${padding - g.minY})`)\n\n // Index nodes\n flowDb.indexNodes('subGraph' + i)\n\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i]\n\n if (subG.title !== 'undefined') {\n const clusterRects = document.querySelectorAll('#' + id + ' #' + subG.id + ' rect')\n const clusterEl = document.querySelectorAll('#' + id + ' #' + subG.id)\n\n const xPos = clusterRects[0].x.baseVal.value\n const yPos = clusterRects[0].y.baseVal.value\n const width = clusterRects[0].width.baseVal.value\n const cluster = d3.select(clusterEl[0])\n const te = cluster.append('text')\n te.attr('x', xPos + width / 2)\n te.attr('y', yPos + 14)\n te.attr('fill', 'black')\n te.attr('stroke', 'none')\n te.attr('id', id + 'Text')\n te.style('text-anchor', 'middle')\n\n if (typeof subG.title === 'undefined') {\n te.text('Undef')\n } else {\n te.text(subG.title)\n }\n }\n }\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const labels = document.querySelectorAll('#' + id + ' .edgeLabel .label')\n for (let k = 0; k < labels.length; k++) {\n const label = labels[k]\n\n // Get dimensions of label\n const dim = label.getBBox()\n\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect')\n rect.setAttribute('rx', 0)\n rect.setAttribute('ry', 0)\n rect.setAttribute('width', dim.width)\n rect.setAttribute('height', dim.height)\n rect.setAttribute('style', 'fill:#e8e8e8;')\n\n label.insertBefore(rect, label.firstChild)\n }\n }\n}\n\nexport default {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,3],$V2=[1,5],$V3=[1,8,9,10,11,13,18,30,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,31],$Va=[1,33],$Vb=[1,22],$Vc=[1,34],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,28],$Vi=[1,38],$Vj=[1,40],$Vk=[1,35],$Vl=[1,39],$Vm=[1,45],$Vn=[1,44],$Vo=[1,36],$Vp=[1,37],$Vq=[1,41],$Vr=[1,42],$Vs=[1,43],$Vt=[1,8,9,10,11,13,18,30,32,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$Vu=[1,53],$Vv=[1,52],$Vw=[1,54],$Vx=[1,72],$Vy=[1,80],$Vz=[1,81],$VA=[1,66],$VB=[1,65],$VC=[1,85],$VD=[1,84],$VE=[1,82],$VF=[1,83],$VG=[1,73],$VH=[1,68],$VI=[1,67],$VJ=[1,63],$VK=[1,75],$VL=[1,76],$VM=[1,77],$VN=[1,78],$VO=[1,79],$VP=[1,70],$VQ=[1,69],$VR=[8,9,11],$VS=[8,9,11,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64],$VT=[1,115],$VU=[8,9,10,11,13,15,18,36,38,40,42,46,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,86,88,89,91,92,94,95,96,97,98],$VV=[8,9,10,11,12,13,15,16,17,18,30,32,36,37,38,39,40,41,42,43,46,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,78,81,84,86,88,89,91,92,94,95,96,97,98],$VW=[1,117],$VX=[1,118],$VY=[8,9,10,11,13,18,30,32,46,71,72,73,74,75,81,86,88,89,91,92,94,95,96,97,98],$VZ=[8,9,10,11,12,13,15,16,17,18,30,32,37,39,41,43,46,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65,71,72,73,74,75,78,81,84,86,88,89,91,92,94,95,96,97,98],$V_=[13,18,46,81,86,88,89,91,92,94,95,96,97,98],$V$=[13,18,46,49,65,81,86,88,89,91,92,94,95,96,97,98],$V01=[1,191],$V11=[1,188],$V21=[1,195],$V31=[1,192],$V41=[1,189],$V51=[1,196],$V61=[1,186],$V71=[1,187],$V81=[1,190],$V91=[1,193],$Va1=[1,194],$Vb1=[1,213],$Vc1=[8,9,11,86],$Vd1=[8,9,10,11,46,71,80,81,84,86,88,89,90,91,92];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"mermaidDoc\":3,\"graphConfig\":4,\"document\":5,\"line\":6,\"statement\":7,\"SEMI\":8,\"NEWLINE\":9,\"SPACE\":10,\"EOF\":11,\"GRAPH\":12,\"DIR\":13,\"FirstStmtSeperator\":14,\"TAGEND\":15,\"TAGSTART\":16,\"UP\":17,\"DOWN\":18,\"ending\":19,\"endToken\":20,\"spaceList\":21,\"spaceListNewline\":22,\"verticeStatement\":23,\"separator\":24,\"styleStatement\":25,\"linkStyleStatement\":26,\"classDefStatement\":27,\"classStatement\":28,\"clickStatement\":29,\"subgraph\":30,\"text\":31,\"end\":32,\"vertex\":33,\"link\":34,\"alphaNum\":35,\"SQS\":36,\"SQE\":37,\"PS\":38,\"PE\":39,\"(-\":40,\"-)\":41,\"DIAMOND_START\":42,\"DIAMOND_STOP\":43,\"alphaNumStatement\":44,\"alphaNumToken\":45,\"MINUS\":46,\"linkStatement\":47,\"arrowText\":48,\"TESTSTR\":49,\"--\":50,\"ARROW_POINT\":51,\"ARROW_CIRCLE\":52,\"ARROW_CROSS\":53,\"ARROW_OPEN\":54,\"-.\":55,\"DOTTED_ARROW_POINT\":56,\"DOTTED_ARROW_CIRCLE\":57,\"DOTTED_ARROW_CROSS\":58,\"DOTTED_ARROW_OPEN\":59,\"==\":60,\"THICK_ARROW_POINT\":61,\"THICK_ARROW_CIRCLE\":62,\"THICK_ARROW_CROSS\":63,\"THICK_ARROW_OPEN\":64,\"PIPE\":65,\"textToken\":66,\"STR\":67,\"commentText\":68,\"commentToken\":69,\"keywords\":70,\"STYLE\":71,\"LINKSTYLE\":72,\"CLASSDEF\":73,\"CLASS\":74,\"CLICK\":75,\"textNoTags\":76,\"textNoTagsToken\":77,\"DEFAULT\":78,\"stylesOpt\":79,\"HEX\":80,\"NUM\":81,\"INTERPOLATE\":82,\"commentStatement\":83,\"PCT\":84,\"style\":85,\"COMMA\":86,\"styleComponent\":87,\"ALPHA\":88,\"COLON\":89,\"UNIT\":90,\"BRKT\":91,\"DOT\":92,\"graphCodeTokens\":93,\"PUNCTUATION\":94,\"UNICODE_TEXT\":95,\"PLUS\":96,\"EQUALS\":97,\"MULT\":98,\"TAG_START\":99,\"TAG_END\":100,\"QUOTE\":101,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",8:\"SEMI\",9:\"NEWLINE\",10:\"SPACE\",11:\"EOF\",12:\"GRAPH\",13:\"DIR\",15:\"TAGEND\",16:\"TAGSTART\",17:\"UP\",18:\"DOWN\",30:\"subgraph\",32:\"end\",36:\"SQS\",37:\"SQE\",38:\"PS\",39:\"PE\",40:\"(-\",41:\"-)\",42:\"DIAMOND_START\",43:\"DIAMOND_STOP\",46:\"MINUS\",49:\"TESTSTR\",50:\"--\",51:\"ARROW_POINT\",52:\"ARROW_CIRCLE\",53:\"ARROW_CROSS\",54:\"ARROW_OPEN\",55:\"-.\",56:\"DOTTED_ARROW_POINT\",57:\"DOTTED_ARROW_CIRCLE\",58:\"DOTTED_ARROW_CROSS\",59:\"DOTTED_ARROW_OPEN\",60:\"==\",61:\"THICK_ARROW_POINT\",62:\"THICK_ARROW_CIRCLE\",63:\"THICK_ARROW_CROSS\",64:\"THICK_ARROW_OPEN\",65:\"PIPE\",67:\"STR\",71:\"STYLE\",72:\"LINKSTYLE\",73:\"CLASSDEF\",74:\"CLASS\",75:\"CLICK\",78:\"DEFAULT\",80:\"HEX\",81:\"NUM\",82:\"INTERPOLATE\",84:\"PCT\",86:\"COMMA\",88:\"ALPHA\",89:\"COLON\",90:\"UNIT\",91:\"BRKT\",92:\"DOT\",94:\"PUNCTUATION\",95:\"UNICODE_TEXT\",96:\"PLUS\",97:\"EQUALS\",98:\"MULT\",99:\"TAG_START\",100:\"TAG_END\",101:\"QUOTE\"},\nproductions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,4],[4,4],[4,4],[4,4],[4,4],[19,2],[19,1],[20,1],[20,1],[20,1],[14,1],[14,1],[14,2],[22,2],[22,2],[22,1],[22,1],[21,2],[21,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,5],[7,4],[24,1],[24,1],[24,1],[23,3],[23,1],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,1],[33,2],[35,1],[35,2],[44,1],[44,1],[44,1],[44,1],[34,2],[34,3],[34,3],[34,1],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[48,3],[31,1],[31,2],[31,1],[68,1],[68,2],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[70,1],[76,1],[76,2],[27,5],[27,5],[28,5],[29,5],[29,7],[29,5],[29,7],[25,5],[25,5],[26,5],[26,5],[26,9],[26,9],[26,7],[26,7],[83,3],[79,1],[79,3],[85,1],[85,2],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[69,1],[69,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[77,1],[77,1],[77,1],[77,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1],[93,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n this.$ = [];\nbreak;\ncase 3:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 4: case 57: case 59: case 60: case 92: case 94: case 95: case 108:\nthis.$=$$[$0];\nbreak;\ncase 11:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 12:\n yy.setDirection(\"LR\");this.$ = $$[$0-1];\nbreak;\ncase 13:\n yy.setDirection(\"RL\");this.$ = $$[$0-1];\nbreak;\ncase 14:\n yy.setDirection(\"BT\");this.$ = $$[$0-1];\nbreak;\ncase 15:\n yy.setDirection(\"TB\");this.$ = $$[$0-1];\nbreak;\ncase 30:\nthis.$=$$[$0-1]\nbreak;\ncase 31: case 32: case 33: case 34: case 35:\nthis.$=[];\nbreak;\ncase 36:\nthis.$=yy.addSubGraph($$[$0-1],$$[$0-3]);\nbreak;\ncase 37:\nthis.$=yy.addSubGraph($$[$0-1],undefined);\nbreak;\ncase 41:\n yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = [$$[$0-2],$$[$0]];\nbreak;\ncase 42:\nthis.$ = [$$[$0]];\nbreak;\ncase 43:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 44:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'square');\nbreak;\ncase 45:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 46:\nthis.$ = $$[$0-6];yy.addVertex($$[$0-6],$$[$0-3],'circle');\nbreak;\ncase 47:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 48:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'ellipse');\nbreak;\ncase 49:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 50:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'round');\nbreak;\ncase 51:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 52:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'diamond');\nbreak;\ncase 53:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 54:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'odd');\nbreak;\ncase 55:\nthis.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 56:\nthis.$ = $$[$0-1];yy.addVertex($$[$0-1]);\nbreak;\ncase 58: case 93: case 96: case 109:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 61:\nthis.$='v';\nbreak;\ncase 62:\nthis.$='-';\nbreak;\ncase 63:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 64: case 65:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 66:\nthis.$ = $$[$0];\nbreak;\ncase 67:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 68:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 69:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 70:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"normal\",\"text\":$$[$0-1]};\nbreak;\ncase 71:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 72:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 73:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 74:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"dotted\",\"text\":$$[$0-1]};\nbreak;\ncase 75:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 76:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 77:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 78:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"thick\",\"text\":$$[$0-1]};\nbreak;\ncase 79:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"normal\"};\nbreak;\ncase 80:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"normal\"};\nbreak;\ncase 81:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"normal\"};\nbreak;\ncase 82:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"normal\"};\nbreak;\ncase 83:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"dotted\"};\nbreak;\ncase 84:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"dotted\"};\nbreak;\ncase 85:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"dotted\"};\nbreak;\ncase 86:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"dotted\"};\nbreak;\ncase 87:\nthis.$ = {\"type\":\"arrow\",\"stroke\":\"thick\"};\nbreak;\ncase 88:\nthis.$ = {\"type\":\"arrow_circle\",\"stroke\":\"thick\"};\nbreak;\ncase 89:\nthis.$ = {\"type\":\"arrow_cross\",\"stroke\":\"thick\"};\nbreak;\ncase 90:\nthis.$ = {\"type\":\"arrow_open\",\"stroke\":\"thick\"};\nbreak;\ncase 91:\nthis.$ = $$[$0-1];\nbreak;\ncase 110: case 111:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 113:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0], undefined);\nbreak;\ncase 114:\nthis.$ = $$[$0-6];yy.setClickEvent($$[$0-4], $$[$0-2], $$[$0]) ;\nbreak;\ncase 115:\nthis.$ = $$[$0-4];yy.setLink($$[$0-2], $$[$0], undefined);\nbreak;\ncase 116:\nthis.$ = $$[$0-6];yy.setLink($$[$0-4], $$[$0-2], $$[$0] );\nbreak;\ncase 117:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 118: case 119: case 120:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 121: case 122:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 123: case 124:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 126:\nthis.$ = [$$[$0]]\nbreak;\ncase 127:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 129:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\n}\n},\ntable: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{10:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V3,[2,9]),o($V3,[2,10]),{13:[1,46],15:[1,47],16:[1,48],17:[1,49],18:[1,50]},o($Vt,[2,3]),o($Vt,[2,4]),o($Vt,[2,5]),o($Vt,[2,6]),o($Vt,[2,7]),o($Vt,[2,8]),{8:$Vu,9:$Vv,11:$Vw,24:51},{8:$Vu,9:$Vv,11:$Vw,24:55},{8:$Vu,9:$Vv,11:$Vw,24:56},{8:$Vu,9:$Vv,11:$Vw,24:57},{8:$Vu,9:$Vv,11:$Vw,24:58},{8:$Vu,9:$Vv,11:$Vw,24:59},{8:$Vu,9:$Vv,10:$Vx,11:$Vw,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,24:61,30:$VE,31:60,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VR,[2,42],{34:86,47:87,50:[1,88],51:[1,91],52:[1,92],53:[1,93],54:[1,94],55:[1,89],56:[1,95],57:[1,96],58:[1,97],59:[1,98],60:[1,90],61:[1,99],62:[1,100],63:[1,101],64:[1,102]}),{10:[1,103]},{10:[1,104]},{10:[1,105]},{10:[1,106]},{10:[1,107]},o($VS,[2,55],{45:32,21:113,44:114,10:$VT,13:$V9,15:[1,112],18:$Va,36:[1,108],38:[1,109],40:[1,110],42:[1,111],46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VU,[2,57]),o($VU,[2,59]),o($VU,[2,60]),o($VU,[2,61]),o($VU,[2,62]),o($VV,[2,154]),o($VV,[2,155]),o($VV,[2,156]),o($VV,[2,157]),o($VV,[2,158]),o($VV,[2,159]),o($VV,[2,160]),o($VV,[2,161]),o($VV,[2,162]),o($VV,[2,163]),o($VV,[2,164]),{8:$VW,9:$VX,10:$VT,14:116,21:119},{8:$VW,9:$VX,10:$VT,14:120,21:119},{8:$VW,9:$VX,10:$VT,14:121,21:119},{8:$VW,9:$VX,10:$VT,14:122,21:119},{8:$VW,9:$VX,10:$VT,14:123,21:119},o($Vt,[2,30]),o($Vt,[2,38]),o($Vt,[2,39]),o($Vt,[2,40]),o($Vt,[2,31]),o($Vt,[2,32]),o($Vt,[2,33]),o($Vt,[2,34]),o($Vt,[2,35]),{8:$Vu,9:$Vv,10:$Vx,11:$Vw,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,24:124,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VY,$V4,{5:126}),o($VZ,[2,92]),o($VZ,[2,94]),o($VZ,[2,143]),o($VZ,[2,144]),o($VZ,[2,145]),o($VZ,[2,146]),o($VZ,[2,147]),o($VZ,[2,148]),o($VZ,[2,149]),o($VZ,[2,150]),o($VZ,[2,151]),o($VZ,[2,152]),o($VZ,[2,153]),o($VZ,[2,97]),o($VZ,[2,98]),o($VZ,[2,99]),o($VZ,[2,100]),o($VZ,[2,101]),o($VZ,[2,102]),o($VZ,[2,103]),o($VZ,[2,104]),o($VZ,[2,105]),o($VZ,[2,106]),o($VZ,[2,107]),{13:$V9,18:$Va,33:127,35:29,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V_,[2,66],{48:128,49:[1,129],65:[1,130]}),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:131,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:132,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:133,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V$,[2,79]),o($V$,[2,80]),o($V$,[2,81]),o($V$,[2,82]),o($V$,[2,83]),o($V$,[2,84]),o($V$,[2,85]),o($V$,[2,86]),o($V$,[2,87]),o($V$,[2,88]),o($V$,[2,89]),o($V$,[2,90]),{13:$V9,18:$Va,35:134,44:30,45:32,46:$Vc,80:[1,135],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{78:[1,136],81:[1,137]},{13:$V9,18:$Va,35:139,44:30,45:32,46:$Vc,78:[1,138],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:140,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:141,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:142,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:144,32:$VF,38:[1,143],45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:145,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:146,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:147,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,56]),o($VU,[2,58]),o($VS,[2,29],{21:148,10:$VT}),o($V3,[2,11]),o($V3,[2,21]),o($V3,[2,22]),{9:[1,149]},o($V3,[2,12]),o($V3,[2,13]),o($V3,[2,14]),o($V3,[2,15]),o($VY,$V4,{5:150}),o($VZ,[2,93]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,32:[1,151],33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VR,[2,41]),o($V_,[2,63],{10:[1,152]}),{10:[1,153]},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:154,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,51:[1,155],52:[1,156],53:[1,157],54:[1,158],60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,56:[1,159],57:[1,160],58:[1,161],59:[1,162],60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,61:[1,163],62:[1,164],63:[1,165],64:[1,166],66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,167],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,168]},{10:[1,169]},{10:[1,170]},{10:[1,171]},{10:[1,172],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,173],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:[1,174],13:$V9,18:$Va,44:114,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,37:[1,175],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,31:176,32:$VF,45:71,46:$VG,50:$VH,60:$VI,66:62,67:$VJ,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,39:[1,177],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,41:[1,178],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,43:[1,179],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,37:[1,180],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,28]),o($V3,[2,23]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,18:$Va,23:16,25:17,26:18,27:19,28:20,29:21,30:$Vb,32:[1,181],33:23,35:29,44:30,45:32,46:$Vc,71:$Vd,72:$Ve,73:$Vf,74:$Vg,75:$Vh,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($Vt,[2,37]),o($V_,[2,65]),o($V_,[2,64]),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,45:71,46:$VG,50:$VH,60:$VI,65:[1,182],66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($V_,[2,67]),o($V_,[2,68]),o($V_,[2,69]),o($V_,[2,70]),o($V_,[2,71]),o($V_,[2,72]),o($V_,[2,73]),o($V_,[2,74]),o($V_,[2,75]),o($V_,[2,76]),o($V_,[2,77]),o($V_,[2,78]),{10:$V01,46:$V11,71:$V21,79:183,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:197,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:198,80:$V31,81:$V41,82:[1,199],84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:200,80:$V31,81:$V41,82:[1,201],84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:202,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:203,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{13:$V9,18:$Va,35:204,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:205,44:30,45:32,46:$Vc,67:[1,206],81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,43],{21:207,10:$VT}),{10:$Vx,12:$Vy,13:$Vz,15:$VA,16:$VB,17:$VC,18:$VD,30:$VE,32:$VF,39:[1,208],45:71,46:$VG,50:$VH,60:$VI,66:125,70:74,71:$VK,72:$VL,73:$VM,74:$VN,75:$VO,77:64,78:$VP,81:$Vi,84:$VQ,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},o($VS,[2,49],{21:209,10:$VT}),o($VS,[2,47],{21:210,10:$VT}),o($VS,[2,51],{21:211,10:$VT}),o($VS,[2,53],{21:212,10:$VT}),o($Vt,[2,36]),o([10,13,18,46,81,86,88,89,91,92,94,95,96,97,98],[2,91]),o($VR,[2,117],{86:$Vb1}),o($Vc1,[2,126],{87:214,10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1}),o($Vd1,[2,128]),o($Vd1,[2,130]),o($Vd1,[2,131]),o($Vd1,[2,132]),o($Vd1,[2,133]),o($Vd1,[2,134]),o($Vd1,[2,135]),o($Vd1,[2,136]),o($Vd1,[2,137]),o($Vd1,[2,138]),o($Vd1,[2,139]),o($Vd1,[2,140]),o($VR,[2,118],{86:$Vb1}),o($VR,[2,119],{86:$Vb1}),{10:[1,215]},o($VR,[2,120],{86:$Vb1}),{10:[1,216]},o($VR,[2,110],{86:$Vb1}),o($VR,[2,111],{86:$Vb1}),o($VR,[2,112],{45:32,44:114,13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,113],{45:32,44:114,10:[1,217],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,115],{10:[1,218]}),o($VS,[2,44]),{39:[1,219]},o($VS,[2,50]),o($VS,[2,48]),o($VS,[2,52]),o($VS,[2,54]),{10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,85:220,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},o($Vd1,[2,129]),{13:$V9,18:$Va,35:221,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{13:$V9,18:$Va,35:222,44:30,45:32,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs},{67:[1,223]},{67:[1,224]},o($VS,[2,45],{21:225,10:$VT}),o($Vc1,[2,127],{87:214,10:$V01,46:$V11,71:$V21,80:$V31,81:$V41,84:$V51,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1}),o($VR,[2,123],{45:32,44:114,10:[1,226],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,124],{45:32,44:114,10:[1,227],13:$V9,18:$Va,46:$Vc,81:$Vi,86:$Vj,88:$Vk,89:$Vl,91:$Vm,92:$Vn,94:$Vo,95:$Vp,96:$Vq,97:$Vr,98:$Vs}),o($VR,[2,114]),o($VR,[2,116]),o($VS,[2,46]),{10:$V01,46:$V11,71:$V21,79:228,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},{10:$V01,46:$V11,71:$V21,79:229,80:$V31,81:$V41,84:$V51,85:184,87:185,88:$V61,89:$V71,90:$V81,91:$V91,92:$Va1},o($VR,[2,121],{86:$Vb1}),o($VR,[2,122],{86:$Vb1})],\ndefaultActions: {},\nparseError: 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},\nparse: 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 lexer = 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 lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.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 function lex() {\n var token;\n token = tstack.pop() || lexer.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 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 (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.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: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: 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(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.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}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError: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 },\n\n// resets the lexer, sets new input\nsetInput: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 },\n\n// consumes and returns one char from the input\ninput: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\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= 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\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\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 ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\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 },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\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.\nreject: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 }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput: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 },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput: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 },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\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\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 ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n 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 // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n 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; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState: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 },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules: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 },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState: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 },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* do nothing */\nbreak;\ncase 1:this.begin(\"string\");\nbreak;\ncase 2:this.popState();\nbreak;\ncase 3:return \"STR\";\nbreak;\ncase 4:return 71;\nbreak;\ncase 5:return 78;\nbreak;\ncase 6:return 72;\nbreak;\ncase 7:return 82;\nbreak;\ncase 8:return 73;\nbreak;\ncase 9:return 74;\nbreak;\ncase 10:return 75;\nbreak;\ncase 11:return 12;\nbreak;\ncase 12:return 30;\nbreak;\ncase 13:return 32;\nbreak;\ncase 14:return 13;\nbreak;\ncase 15:return 13;\nbreak;\ncase 16:return 13;\nbreak;\ncase 17:return 13;\nbreak;\ncase 18:return 13;\nbreak;\ncase 19:return 13;\nbreak;\ncase 20:return 81;\nbreak;\ncase 21:return 91;\nbreak;\ncase 22:return 89;\nbreak;\ncase 23:return 8;\nbreak;\ncase 24:return 86;\nbreak;\ncase 25:return 98;\nbreak;\ncase 26:return 16;\nbreak;\ncase 27:return 15;\nbreak;\ncase 28:return 17;\nbreak;\ncase 29:return 18;\nbreak;\ncase 30:return 53;\nbreak;\ncase 31:return 51;\nbreak;\ncase 32:return 52;\nbreak;\ncase 33:return 54;\nbreak;\ncase 34:return 58;\nbreak;\ncase 35:return 56;\nbreak;\ncase 36:return 57;\nbreak;\ncase 37:return 59;\nbreak;\ncase 38:return 58;\nbreak;\ncase 39:return 56;\nbreak;\ncase 40:return 57;\nbreak;\ncase 41:return 59;\nbreak;\ncase 42:return 63;\nbreak;\ncase 43:return 61;\nbreak;\ncase 44:return 62;\nbreak;\ncase 45:return 64;\nbreak;\ncase 46:return 50;\nbreak;\ncase 47:return 55;\nbreak;\ncase 48:return 60;\nbreak;\ncase 49:return 40;\nbreak;\ncase 50:return 41;\nbreak;\ncase 51:return 46;\nbreak;\ncase 52:return 92;\nbreak;\ncase 53:return 96;\nbreak;\ncase 54:return 84;\nbreak;\ncase 55:return 97;\nbreak;\ncase 56:return 97;\nbreak;\ncase 57:return 88;\nbreak;\ncase 58:return 94;\nbreak;\ncase 59:return 95;\nbreak;\ncase 60:return 65;\nbreak;\ncase 61:return 38;\nbreak;\ncase 62:return 39;\nbreak;\ncase 63:return 36;\nbreak;\ncase 64:return 37;\nbreak;\ncase 65:return 42\nbreak;\ncase 66:return 43\nbreak;\ncase 67:return 101;\nbreak;\ncase 68:return 9;\nbreak;\ncase 69:return 10;\nbreak;\ncase 70:return 11;\nbreak;\n}\n},\nrules: [/^(?:%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:click\\b)/,/^(?:graph\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:LR\\b)/,/^(?:RL\\b)/,/^(?:TB\\b)/,/^(?:BT\\b)/,/^(?:TD\\b)/,/^(?:BR\\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:v\\b)/,/^(?:\\s*--[x]\\s*)/,/^(?:\\s*-->\\s*)/,/^(?:\\s*--[o]\\s*)/,/^(?:\\s*---\\s*)/,/^(?:\\s*-\\.-[x]\\s*)/,/^(?:\\s*-\\.->\\s*)/,/^(?:\\s*-\\.-[o]\\s*)/,/^(?:\\s*-\\.-\\s*)/,/^(?:\\s*.-[x]\\s*)/,/^(?:\\s*\\.->\\s*)/,/^(?:\\s*\\.-[o]\\s*)/,/^(?:\\s*\\.-\\s*)/,/^(?:\\s*==[x]\\s*)/,/^(?:\\s*==>\\s*)/,/^(?:\\s*==[o]\\s*)/,/^(?:\\s*==[\\=]\\s*)/,/^(?:\\s*--\\s*)/,/^(?:\\s*-\\.\\s*)/,/^(?:\\s*==\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!\"#$%&'*+,-.`?\\\\_\\/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:\\n+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"string\":{\"rules\":[2,3],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,4,5,6,7,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,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import moment from 'moment'\nimport { logger } from '../../logger'\n\nlet dateFormat = ''\nlet axisFormat = ''\nlet title = ''\nlet sections = []\nlet tasks = []\nlet currentSection = ''\n\nexport const clear = function () {\n sections = []\n tasks = []\n currentSection = ''\n title = ''\n taskCnt = 0\n lastTask = undefined\n lastTaskID = undefined\n rawTasks = []\n}\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt\n}\n\nexport const getAxisFormat = function () {\n return axisFormat\n}\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt\n}\n\nexport const setTitle = function (txt) {\n title = txt\n}\n\nexport const getTitle = function () {\n return title\n}\n\nexport const addSection = function (txt) {\n currentSection = txt\n sections.push(txt)\n}\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks()\n const maxDepth = 10\n let iterationCount = 0\n while (!allItemsPricessed && (iterationCount < maxDepth)) {\n allItemsPricessed = compileTasks()\n iterationCount++\n }\n\n tasks = rawTasks\n\n return tasks\n}\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim()\n\n // Test for after\n const re = /^after\\s+([\\d\\w-]+)/\n const afterStatement = re.exec(str.trim())\n\n if (afterStatement !== null) {\n const task = findTaskById(afterStatement[1])\n\n if (typeof task === 'undefined') {\n const dt = new Date()\n dt.setHours(0, 0, 0, 0)\n return dt\n }\n return task.endTime\n }\n\n // Check for actual date set\n if (moment(str, dateFormat.trim(), true).isValid()) {\n return moment(str, dateFormat.trim(), true).toDate()\n } else {\n logger.debug('Invalid date:' + str)\n logger.debug('With date format:' + dateFormat.trim())\n }\n\n // Default date - now\n return new Date()\n}\n\nconst getEndDate = function (prevTime, dateFormat, str) {\n str = str.trim()\n\n // Check for actual date\n if (moment(str, dateFormat.trim(), true).isValid()) {\n return moment(str, dateFormat.trim()).toDate()\n }\n\n const d = moment(prevTime)\n // Check for length\n const re = /^([\\d]+)([wdhms])/\n const durationStatement = re.exec(str.trim())\n\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n d.add(durationStatement[1], 'seconds')\n break\n case 'm':\n d.add(durationStatement[1], 'minutes')\n break\n case 'h':\n d.add(durationStatement[1], 'hours')\n break\n case 'd':\n d.add(durationStatement[1], 'days')\n break\n case 'w':\n d.add(durationStatement[1], 'weeks')\n break\n }\n return d.toDate()\n }\n // Default date - now\n return d.toDate()\n}\n\nlet taskCnt = 0\nconst parseId = function (idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1\n return 'task' + taskCnt\n }\n return idStr\n}\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length)\n } else {\n ds = dataStr\n }\n\n const data = ds.split(',')\n\n const task = {}\n\n // Get tags like active, done cand crit\n let matchFound = true\n while (matchFound) {\n matchFound = false\n if (data[0].match(/^\\s*active\\s*$/)) {\n task.active = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*done\\s*$/)) {\n task.done = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*crit\\s*$/)) {\n task.crit = true\n data.shift(1)\n matchFound = true\n }\n }\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim()\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId()\n task.startTime = prevTask.endTime\n task.endTime = getEndDate(task.startTime, dateFormat, data[0])\n break\n case 2:\n task.id = parseId()\n task.startTime = getStartDate(undefined, dateFormat, data[0])\n task.endTime = getEndDate(task.startTime, dateFormat, data[1])\n break\n case 3:\n task.id = parseId(data[0])\n task.startTime = getStartDate(undefined, dateFormat, data[1])\n task.endTime = getEndDate(task.startTime, dateFormat, data[2])\n break\n default:\n }\n\n return task\n}\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length)\n } else {\n ds = dataStr\n }\n\n const data = ds.split(',')\n\n const task = {}\n\n // Get tags like active, done cand crit\n let matchFound = true\n while (matchFound) {\n matchFound = false\n if (data[0].match(/^\\s*active\\s*$/)) {\n task.active = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*done\\s*$/)) {\n task.done = true\n data.shift(1)\n matchFound = true\n }\n if (data[0].match(/^\\s*crit\\s*$/)) {\n task.crit = true\n data.shift(1)\n matchFound = true\n }\n }\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim()\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId()\n task.startTime = { type: 'prevTaskEnd', id: prevTaskId }\n task.endTime = { data: data[0] }\n break\n case 2:\n task.id = parseId()\n task.startTime = { type: 'getStartDate', startData: data[0] }\n task.endTime = { data: data[1] }\n break\n case 3:\n task.id = parseId(data[0])\n task.startTime = { type: 'getStartDate', startData: data[1] }\n task.endTime = { data: data[2] }\n break\n default:\n }\n\n return task\n}\n\nlet lastTask\nlet lastTaskID\nlet rawTasks = []\nconst taskDb = {}\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n raw: { data: data },\n task: descr\n }\n const taskInfo = parseData(lastTaskID, data)\n rawTask.raw.startTime = taskInfo.startTime\n rawTask.raw.endTime = taskInfo.endTime\n rawTask.id = taskInfo.id\n rawTask.prevTaskId = lastTaskID\n rawTask.active = taskInfo.active\n rawTask.done = taskInfo.done\n rawTask.crit = taskInfo.crit\n\n const pos = rawTasks.push(rawTask)\n\n lastTaskID = rawTask.id\n // Store cross ref\n taskDb[rawTask.id] = pos - 1\n}\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id]\n return rawTasks[pos]\n}\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr\n }\n const taskInfo = compileData(lastTask, data)\n newTask.startTime = taskInfo.startTime\n newTask.endTime = taskInfo.endTime\n newTask.id = taskInfo.id\n newTask.active = taskInfo.active\n newTask.done = taskInfo.done\n newTask.crit = taskInfo.crit\n lastTask = newTask\n tasks.push(newTask)\n}\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos]\n let startTime = ''\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd':\n const prevTask = findTaskById(task.prevTaskId)\n task.startTime = prevTask.endTime\n break\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData)\n if (startTime) {\n rawTasks[pos].startTime = startTime\n }\n break\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, dateFormat, rawTasks[pos].raw.endTime.data)\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true\n }\n }\n\n return rawTasks[pos].processed\n }\n\n let allProcessed = true\n for (let i = 0; i < rawTasks.length; i++) {\n compileTask(i)\n\n allProcessed = allProcessed && rawTasks[i].processed\n }\n return allProcessed\n}\n\nexport default {\n clear,\n setDateFormat,\n setAxisFormat,\n getAxisFormat,\n setTitle,\n getTitle,\n addSection,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg\n}\n","import * as d3 from 'd3'\n\nimport { parser } from './parser/gantt'\nimport ganttDb from './ganttDb'\n\nparser.yy = ganttDb\n\nconst conf = {\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 fontFamily: '\"Open-Sans\", \"sans-serif\"'\n}\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\nlet w\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text)\n\n const elem = document.getElementById(id)\n w = elem.parentElement.offsetWidth\n\n if (typeof w === 'undefined') {\n w = 1200\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth\n }\n\n const taskArray = parser.yy.getTasks()\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding\n\n elem.setAttribute('height', '100%')\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h)\n const svg = d3.select(`[id=\"${id}\"]`)\n\n // Set timescale\n const timeScale = d3.scaleTime()\n .domain([d3.min(taskArray, function (d) {\n return d.startTime\n }),\n d3.max(taskArray, function (d) {\n return d.endTime\n })])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding])\n\n let categories = []\n\n for (let i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type)\n }\n\n const catsUnfiltered = categories // for vert labels\n\n categories = checkUnique(categories)\n\n makeGant(taskArray, w, h)\n if (typeof conf.useWidth !== 'undefined') {\n elem.setAttribute('width', w)\n }\n\n svg.append('text')\n .text(parser.yy.getTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText')\n\n function makeGant (tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight\n const gap = barHeight + conf.barGap\n const topPadding = conf.topPadding\n const leftPadding = conf.leftPadding\n\n const colorScale = d3.scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(d3.interpolateHcl)\n\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight)\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight)\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale)\n drawToday(leftPadding, topPadding, pageWidth, pageHeight)\n }\n\n function drawRects (theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w, h) {\n svg.append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n return i * theGap + theTopPad - 2\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n return 'section section' + (i % conf.numberSectionStyles)\n }\n }\n return 'section section0'\n })\n\n const rectangles = svg.append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n\n rectangles.append('rect')\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n return timeScale(d.startTime) + theSidePad\n })\n .attr('y', function (d, i) {\n return i * theGap + theTopPad\n })\n .attr('width', function (d) {\n return (timeScale(d.endTime) - timeScale(d.startTime))\n })\n .attr('height', theBarHeight)\n .attr('class', function (d) {\n const res = 'task '\n\n let secNum = 0\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = (i % conf.numberSectionStyles)\n }\n }\n\n if (d.active) {\n if (d.crit) {\n return res + ' activeCrit' + secNum\n } else {\n return res + ' active' + secNum\n }\n }\n\n if (d.done) {\n if (d.crit) {\n return res + ' doneCrit' + secNum\n } else {\n return res + ' done' + secNum\n }\n }\n\n if (d.crit) {\n return res + ' crit' + secNum\n }\n\n return res + ' task' + secNum\n })\n\n rectangles.append('text')\n .text(function (d) {\n return d.task\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n const startX = timeScale(d.startTime)\n const endX = timeScale(d.endTime)\n const textWidth = this.getBBox().width\n\n // Check id text width > width of rectangle\n if (textWidth > (endX - startX)) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5\n } else {\n return endX + theSidePad + 5\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad\n }\n })\n .attr('y', function (d, i) {\n return i * theGap + (conf.barHeight / 2) + (conf.fontSize / 2 - 2) + theTopPad\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime)\n const endX = timeScale(d.endTime)\n const textWidth = this.getBBox().width\n let secNum = 0\n for (let i = 0; i < categories.length; i++) {\n if (d.type === categories[i]) {\n secNum = (i % conf.numberSectionStyles)\n }\n }\n\n let taskType = ''\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum\n } else {\n taskType = 'activeText' + secNum\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum\n } else {\n taskType = taskType + ' doneText' + secNum\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum\n }\n }\n\n // Check id text width > width of rectangle\n if (textWidth > (endX - startX)) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return 'taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType\n } else {\n return 'taskTextOutsideRight taskTextOutside' + secNum + ' ' + taskType\n }\n } else {\n return 'taskText taskText' + secNum + ' ' + taskType\n }\n })\n }\n\n function makeGrid (theSidePad, theTopPad, w, h) {\n let xAxis = d3.axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(d3.timeFormat(parser.yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'))\n\n svg.append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(xAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em')\n }\n\n function vertLabels (theGap, theTopPad) {\n const numOccurances = []\n let prevGap = 0\n\n for (let i = 0; i < categories.length; i++) {\n numOccurances[i] = [categories[i], getCount(categories[i], catsUnfiltered)]\n }\n\n svg.append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append('text')\n .text(function (d) {\n return d[0]\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1]\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad\n }\n } else {\n return d[1] * theGap / 2 + theTopPad\n }\n })\n .attr('class', function (d) {\n for (let i = 0; i < categories.length; i++) {\n if (d[0] === categories[i]) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles)\n }\n }\n return 'sectionTitle'\n })\n }\n\n function drawToday (theSidePad, theTopPad, w, h) {\n const todayG = svg.append('g')\n .attr('class', 'today')\n\n const today = new Date()\n\n todayG.append('line')\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today')\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n function checkUnique (arr) {\n const hash = {}\n const result = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!hash.hasOwnProperty(arr[i])) { // it works with objects! in FF, at least\n hash[arr[i]] = true\n result.push(arr[i])\n }\n }\n return result\n }\n\n // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n function getCounts (arr) {\n let i = arr.length // const to loop over\n const obj = {} // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1 // count occurrences\n }\n return obj\n }\n\n // get specific from everything\n function getCount (word, arr) {\n return getCounts(arr)[word] || 0\n }\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,8,10,11,12,13,14,15],$V1=[1,9],$V2=[1,10],$V3=[1,11],$V4=[1,12],$V5=[1,13];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"gantt\":4,\"document\":5,\"EOF\":6,\"line\":7,\"SPACE\":8,\"statement\":9,\"NL\":10,\"dateFormat\":11,\"axisFormat\":12,\"title\":13,\"section\":14,\"taskTxt\":15,\"taskData\":16,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"gantt\",6:\"EOF\",8:\"SPACE\",10:\"NL\",11:\"dateFormat\",12:\"axisFormat\",13:\"title\",14:\"section\",15:\"taskTxt\",16:\"taskData\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\n this.$ = [] \nbreak;\ncase 3:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 4: case 5:\n this.$ = $$[$0] \nbreak;\ncase 6: case 7:\n this.$=[];\nbreak;\ncase 8:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 9:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 11:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:$V1,12:$V2,13:$V3,14:$V4,15:$V5},o($V0,[2,7],{1:[2,1]}),o($V0,[2,3]),{9:14,11:$V1,12:$V2,13:$V3,14:$V4,15:$V5},o($V0,[2,5]),o($V0,[2,6]),o($V0,[2,8]),o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),{16:[1,15]},o($V0,[2,4]),o($V0,[2,12])],\ndefaultActions: {},\nparseError: 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},\nparse: 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 lexer = 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 lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.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 function lex() {\n var token;\n token = tstack.pop() || lexer.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 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 (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.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: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: 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(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.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}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError: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 },\n\n// resets the lexer, sets new input\nsetInput: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 },\n\n// consumes and returns one char from the input\ninput: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\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= 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\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\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 ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\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 },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\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.\nreject: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 }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput: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 },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput: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 },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\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\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 ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n 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 // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n 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; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState: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 },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules: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 },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState: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 },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 10;\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 11;\nbreak;\ncase 6:return 12;\nbreak;\ncase 7:return 'date';\nbreak;\ncase 8:return 13;\nbreak;\ncase 9:return 14;\nbreak;\ncase 10:return 15;\nbreak;\ncase 11:return 16;\nbreak;\ncase 12:return ':';\nbreak;\ncase 13:return 6;\nbreak;\ncase 14:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import _ from 'lodash'\n\nimport { logger } from '../../logger'\n\nlet commits = {}\nlet head = null\nlet branches = { 'master': head }\nlet curBranch = 'master'\nlet direction = 'LR'\nlet seq = 0\n\nfunction getRandomInt (min, max) {\n return Math.floor(Math.random() * (max - min)) + min\n}\n\nfunction getId () {\n const pool = '0123456789abcdef'\n let id = ''\n for (let i = 0; i < 7; i++) {\n id += pool[getRandomInt(0, 16)]\n }\n return id\n}\n\nfunction isfastforwardable (currentCommit, otherCommit) {\n logger.debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id)\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break\n if (Array.isArray(otherCommit.parent)) {\n logger.debug('In merge commit:', otherCommit.parent)\n return isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) ||\n isfastforwardable(currentCommit, commits[otherCommit.parent[1]])\n } else {\n otherCommit = commits[otherCommit.parent]\n }\n }\n logger.debug(currentCommit.id, otherCommit.id)\n return currentCommit.id === otherCommit.id\n}\n\nfunction isReachableFrom (currentCommit, otherCommit) {\n const currentSeq = currentCommit.seq\n const otherSeq = otherCommit.seq\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit)\n return false\n}\n\nexport const setDirection = function (dir) {\n direction = dir\n}\nlet options = {}\nexport const setOptions = function (rawOptString) {\n logger.debug('options str', rawOptString)\n rawOptString = rawOptString && rawOptString.trim()\n rawOptString = rawOptString || '{}'\n try {\n options = JSON.parse(rawOptString)\n } catch (e) {\n logger.error('error while parsing gitGraph options', e.message)\n }\n}\n\nexport const getOptions = function () {\n return options\n}\n\nexport const commit = function (msg) {\n const commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n }\n head = commit\n commits[commit.id] = commit\n branches[curBranch] = commit.id\n logger.debug('in pushCommit ' + commit.id)\n}\n\nexport const branch = function (name) {\n branches[name] = head != null ? head.id : null\n logger.debug('in createBranch')\n}\n\nexport const merge = function (otherBranch) {\n const currentCommit = commits[branches[curBranch]]\n const otherCommit = commits[branches[otherBranch]]\n if (isReachableFrom(currentCommit, otherCommit)) {\n logger.debug('Already merged')\n return\n }\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch]\n head = commits[branches[curBranch]]\n } else {\n // create merge commit\n const commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n }\n head = commit\n commits[commit.id] = commit\n branches[curBranch] = commit.id\n }\n logger.debug(branches)\n logger.debug('in mergeBranch')\n}\n\nexport const checkout = function (branch) {\n logger.debug('in checkout')\n curBranch = branch\n const id = branches[curBranch]\n head = commits[id]\n}\n\nexport const reset = function (commitRef) {\n logger.debug('in reset', commitRef)\n const ref = commitRef.split(':')[0]\n let parentCount = parseInt(commitRef.split(':')[1])\n let commit = ref === 'HEAD' ? head : commits[branches[ref]]\n logger.debug(commit, parentCount)\n while (parentCount > 0) {\n commit = commits[commit.parent]\n parentCount--\n if (!commit) {\n const err = 'Critical error - unique parent commit not found during reset'\n logger.error(err)\n throw err\n }\n }\n head = commit\n branches[curBranch] = commit.id\n}\n\nfunction upsert (arr, key, newval) {\n const index = arr.indexOf(key)\n if (index === -1) {\n arr.push(newval)\n } else {\n arr.splice(index, 1, newval)\n }\n}\n\nfunction prettyPrintCommitHistory (commitArr) {\n const commit = _.maxBy(commitArr, 'seq')\n let line = ''\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*'\n } else {\n line += '\\t|'\n }\n })\n const label = [line, commit.id, commit.seq]\n _.each(branches, function (value, key) {\n if (value === commit.id) label.push(key)\n })\n logger.debug(label.join(' '))\n if (Array.isArray(commit.parent)) {\n const newCommit = commits[commit.parent[0]]\n upsert(commitArr, commit, newCommit)\n commitArr.push(commits[commit.parent[1]])\n } else if (commit.parent == null) {\n return\n } else {\n const nextCommit = commits[commit.parent]\n upsert(commitArr, commit, nextCommit)\n }\n commitArr = _.uniqBy(commitArr, 'id')\n prettyPrintCommitHistory(commitArr)\n}\n\nexport const prettyPrint = function () {\n logger.debug(commits)\n const node = getCommitsArray()[0]\n prettyPrintCommitHistory([node])\n}\n\nexport const clear = function () {\n commits = {}\n head = null\n branches = { 'master': head }\n curBranch = 'master'\n seq = 0\n}\n\nexport const getBranchesAsObjArray = function () {\n const branchArr = _.map(branches, function (value, key) {\n return { 'name': key, 'commit': commits[value] }\n })\n return branchArr\n}\n\nexport const getBranches = function () { return branches }\nexport const getCommits = function () { return commits }\nexport const getCommitsArray = function () {\n const commitArr = Object.keys(commits).map(function (key) {\n return commits[key]\n })\n commitArr.forEach(function (o) { logger.debug(o.id) })\n return _.orderBy(commitArr, ['seq'], ['desc'])\n}\nexport const getCurrentBranch = function () { return curBranch }\nexport const getDirection = function () { return direction }\nexport const getHead = function () { return head }\n\nexport default {\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n checkout,\n reset,\n prettyPrint,\n clear,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead\n}\n","import _ from 'lodash'\nimport * as d3 from 'd3'\n\nimport db from './gitGraphAst'\nimport gitGraphParser from './parser/gitGraph'\nimport { logger } from '../../logger'\nimport { interpolateToCurve } from '../../utils'\n\nlet allCommitsDict = {}\nlet branchNum\nlet config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n}\nlet apiConfig = {}\nexport const setConf = function (c) {\n apiConfig = c\n}\n\nfunction svgCreateDefs (svg) {\n svg\n .append('defs')\n .append('g')\n .attr('id', 'def-commit')\n .append('circle')\n .attr('r', config.nodeRadius)\n .attr('cx', 0)\n .attr('cy', 0)\n svg.select('#def-commit')\n .append('foreignObject')\n .attr('width', config.nodeLabel.width)\n .attr('height', config.nodeLabel.height)\n .attr('x', config.nodeLabel.x)\n .attr('y', config.nodeLabel.y)\n .attr('class', 'node-label')\n .attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility')\n .append('p')\n .html('')\n}\n\nfunction svgDrawLine (svg, points, colorIdx, interpolate) {\n const curve = interpolateToCurve(interpolate, d3.curveBasis)\n const color = config.branchColors[colorIdx % config.branchColors.length]\n const lineGen = d3.line()\n .x(function (d) {\n return Math.round(d.x)\n })\n .y(function (d) {\n return Math.round(d.y)\n })\n .curve(curve)\n\n svg\n .append('svg:path')\n .attr('d', lineGen(points))\n .style('stroke', color)\n .style('stroke-width', config.lineStrokeWidth)\n .style('fill', 'none')\n}\n\n// Pass in the element and its pre-transform coords\nfunction getElementCoords (element, coords) {\n coords = coords || element.node().getBBox()\n const ctm = element.node().getCTM()\n const xn = ctm.e + coords.x * ctm.a\n const yn = ctm.f + coords.y * ctm.d\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n }\n}\n\nfunction svgDrawLineForCommits (svg, fromId, toId, direction, color) {\n logger.debug('svgDrawLineForCommits: ', fromId, toId)\n const fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'))\n const toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'))\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n const lineStart = { x: fromBbox.left - config.nodeSpacing, y: toBbox.top + toBbox.height / 2 }\n const lineEnd = { x: toBbox.left + toBbox.width, y: toBbox.top + toBbox.height / 2 }\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear')\n svgDrawLine(svg, [\n { x: fromBbox.left, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: fromBbox.top + fromBbox.height / 2 },\n { x: fromBbox.left - config.nodeSpacing / 2, y: lineStart.y },\n lineStart], color)\n } else {\n svgDrawLine(svg, [{\n 'x': fromBbox.left,\n 'y': fromBbox.top + fromBbox.height / 2\n }, {\n 'x': fromBbox.left - config.nodeSpacing / 2,\n 'y': fromBbox.top + fromBbox.height / 2\n }, {\n 'x': fromBbox.left - config.nodeSpacing / 2,\n 'y': toBbox.top + toBbox.height / 2\n }, {\n 'x': toBbox.left + toBbox.width,\n 'y': toBbox.top + toBbox.height / 2\n }], color)\n }\n break\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n const lineStart = { x: toBbox.left + toBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing }\n const lineEnd = { x: toBbox.left + toBbox.width / 2, y: toBbox.top }\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear')\n svgDrawLine(svg, [\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height },\n { x: fromBbox.left + fromBbox.width / 2, y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2 },\n { x: toBbox.left + toBbox.width / 2, y: lineStart.y - config.nodeSpacing / 2 },\n lineStart], color)\n } else {\n svgDrawLine(svg, [{\n 'x': fromBbox.left + fromBbox.width / 2,\n 'y': fromBbox.top + fromBbox.height\n }, {\n 'x': fromBbox.left + fromBbox.width / 2,\n 'y': fromBbox.top + config.nodeSpacing / 2\n }, {\n 'x': toBbox.left + toBbox.width / 2,\n 'y': toBbox.top - config.nodeSpacing / 2\n }, {\n 'x': toBbox.left + toBbox.width / 2,\n 'y': toBbox.top\n }], color)\n }\n break\n }\n}\n\nfunction cloneNode (svg, selector) {\n return svg.select(selector).node().cloneNode(true)\n}\n\nfunction renderCommitHistory (svg, commitid, branches, direction) {\n let commit\n const numCommits = Object.keys(allCommitsDict).length\n if (_.isString(commitid)) {\n do {\n commit = allCommitsDict[commitid]\n logger.debug('in renderCommitHistory', commit.id, commit.seq)\n if (svg.select('#node-' + commitid).size() > 0) {\n return\n }\n svg\n .append(function () {\n return cloneNode(svg, '#def-commit')\n })\n .attr('class', 'commit')\n .attr('id', function () {\n return 'node-' + commit.id\n })\n .attr('transform', function () {\n switch (direction) {\n case 'LR':\n return 'translate(' + (commit.seq * config.nodeSpacing + config.leftMargin) + ', ' +\n (branchNum * config.branchOffset) + ')'\n case 'BT':\n return 'translate(' + (branchNum * config.branchOffset + config.leftMargin) + ', ' +\n ((numCommits - commit.seq) * config.nodeSpacing) + ')'\n }\n })\n .attr('fill', config.nodeFillColor)\n .attr('stroke', config.nodeStrokeColor)\n .attr('stroke-width', config.nodeStrokeWidth)\n\n const branch = _.find(branches, ['commit', commit])\n if (branch) {\n logger.debug('found branch ', branch.name)\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'branch-label')\n .text(branch.name + ', ')\n }\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-id')\n .text(commit.id)\n if (commit.message !== '' && direction === 'BT') {\n svg.select('#node-' + commit.id + ' p')\n .append('xhtml:span')\n .attr('class', 'commit-msg')\n .text(', ' + commit.message)\n }\n commitid = commit.parent\n } while (commitid && allCommitsDict[commitid])\n }\n\n if (_.isArray(commitid)) {\n logger.debug('found merge commmit', commitid)\n renderCommitHistory(svg, commitid[0], branches, direction)\n branchNum++\n renderCommitHistory(svg, commitid[1], branches, direction)\n branchNum--\n }\n}\n\nfunction renderLines (svg, commit, direction, branchColor) {\n branchColor = branchColor || 0\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (_.isString(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor)\n commit.lineDrawn = true\n commit = allCommitsDict[commit.parent]\n } else if (_.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor)\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1)\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1)\n commit.lineDrawn = true\n commit = allCommitsDict[commit.parent[0]]\n }\n }\n}\n\nexport const draw = function (txt, id, ver) {\n try {\n const parser = gitGraphParser.parser\n parser.yy = db\n\n logger.debug('in gitgraph renderer', txt, id, ver)\n // Parse the graph definition\n parser.parse(txt + '\\n')\n\n config = _.extend(config, apiConfig, db.getOptions())\n logger.debug('effective options', config)\n const direction = db.getDirection()\n allCommitsDict = db.getCommits()\n const branches = db.getBranchesAsObjArray()\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset\n config.nodeLabel.width = '100%'\n config.nodeLabel.y = -1 * 2 * config.nodeRadius\n }\n const svg = d3.select(`[id=\"${id}\"]`)\n svgCreateDefs(svg)\n branchNum = 1\n _.each(branches, function (v) {\n renderCommitHistory(svg, v.commit.id, branches, direction)\n renderLines(svg, v.commit, direction)\n branchNum++\n })\n svg.attr('height', function () {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing\n return (branches.length + 1) * config.branchOffset\n })\n } catch (e) {\n logger.error('Error while rendering gitgraph')\n logger.error(e.message)\n }\n}\n\nexport default {\n setConf,\n draw\n}\n","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: 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},\nparse: 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 lexer = 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 lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.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 function lex() {\n var token;\n token = tstack.pop() || lexer.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 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 (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.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: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: 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(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.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}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError: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 },\n\n// resets the lexer, sets new input\nsetInput: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 },\n\n// consumes and returns one char from the input\ninput: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\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= 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\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\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 ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\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 },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\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.\nreject: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 }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput: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 },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput: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 },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\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\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 ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n 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 // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n 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; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState: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 },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules: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 },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState: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 },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][a-zA-Z0-9_]+)/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,4],$V3=[2,4],$V4=[1,9],$V5=[1,11],$V6=[1,12],$V7=[1,14],$V8=[1,15],$V9=[1,17],$Va=[1,18],$Vb=[1,19],$Vc=[1,20],$Vd=[1,21],$Ve=[1,23],$Vf=[1,24],$Vg=[1,4,5,10,15,16,18,20,21,22,23,25,27,28,29,40],$Vh=[1,32],$Vi=[4,5,10,15,16,18,20,21,22,23,25,29,40],$Vj=[4,5,10,15,16,18,20,21,22,23,25,28,29,40],$Vk=[4,5,10,15,16,18,20,21,22,23,25,27,29,40],$Vl=[38,39,40];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"SD\":6,\"document\":7,\"line\":8,\"statement\":9,\"participant\":10,\"actor\":11,\"AS\":12,\"restOfLine\":13,\"signal\":14,\"activate\":15,\"deactivate\":16,\"note_statement\":17,\"title\":18,\"text2\":19,\"loop\":20,\"end\":21,\"opt\":22,\"alt\":23,\"else_sections\":24,\"par\":25,\"par_sections\":26,\"and\":27,\"else\":28,\"note\":29,\"placement\":30,\"over\":31,\"actor_pair\":32,\"spaceList\":33,\",\":34,\"left_of\":35,\"right_of\":36,\"signaltype\":37,\"+\":38,\"-\":39,\"ACTOR\":40,\"SOLID_OPEN_ARROW\":41,\"DOTTED_OPEN_ARROW\":42,\"SOLID_ARROW\":43,\"DOTTED_ARROW\":44,\"SOLID_CROSS\":45,\"DOTTED_CROSS\":46,\"TXT\":47,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",6:\"SD\",10:\"participant\",12:\"AS\",13:\"restOfLine\",15:\"activate\",16:\"deactivate\",18:\"title\",20:\"loop\",21:\"end\",22:\"opt\",23:\"alt\",25:\"par\",27:\"and\",28:\"else\",29:\"note\",31:\"over\",34:\",\",35:\"left_of\",36:\"right_of\",38:\"+\",39:\"-\",40:\"ACTOR\",41:\"SOLID_OPEN_ARROW\",42:\"DOTTED_OPEN_ARROW\",43:\"SOLID_ARROW\",44:\"DOTTED_ARROW\",45:\"SOLID_CROSS\",46:\"DOTTED_CROSS\",47:\"TXT\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,5],[9,3],[9,2],[9,3],[9,3],[9,2],[9,3],[9,4],[9,4],[9,4],[9,4],[26,1],[26,4],[24,1],[24,4],[17,4],[17,4],[33,2],[33,1],[32,3],[32,1],[30,1],[30,1],[14,5],[14,5],[14,4],[11,1],[37,1],[37,1],[37,1],[37,1],[37,1],[37,1],[19,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 3:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 4:\n this.$ = [] \nbreak;\ncase 5:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 6: case 7:\n this.$ = $$[$0] \nbreak;\ncase 8:\n this.$=[];\nbreak;\ncase 9:\n$$[$0-3].description=$$[$0-1]; this.$=$$[$0-3];\nbreak;\ncase 10:\nthis.$=$$[$0-1];\nbreak;\ncase 12:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 13:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 15:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 16:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 17:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:$$[$0-2], signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 18:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:$$[$0-2], signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 19:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:$$[$0-2], signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 21:\n this.$ = $$[$0-3].concat([{type: 'and', parText:$$[$0-1], signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 23:\n this.$ = $$[$0-3].concat([{type: 'else', altText:$$[$0-1], signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 24:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 25:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 28:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 29:\n this.$ = $$[$0]; \nbreak;\ncase 30:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 31:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 32:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 33:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 34:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 35:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 36:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 37:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 38:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 39:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 40:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 41:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 42:\nthis.$ = $$[$0].substring(1).trim().replace(/\\\\n/gm, \"\\n\");\nbreak;\n}\n},\ntable: [{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,10,15,16,18,20,22,23,25,29,40],$V3,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},o($Vg,[2,5]),{9:25,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},o($Vg,[2,7]),o($Vg,[2,8]),{11:26,40:$Vf},{5:[1,27]},{11:28,40:$Vf},{11:29,40:$Vf},{5:[1,30]},{19:31,47:$Vh},{13:[1,33]},{13:[1,34]},{13:[1,35]},{13:[1,36]},{37:37,41:[1,38],42:[1,39],43:[1,40],44:[1,41],45:[1,42],46:[1,43]},{30:44,31:[1,45],35:[1,46],36:[1,47]},o([5,12,34,41,42,43,44,45,46,47],[2,35]),o($Vg,[2,6]),{5:[1,49],12:[1,48]},o($Vg,[2,11]),{5:[1,50]},{5:[1,51]},o($Vg,[2,14]),{5:[1,52]},{5:[2,42]},o($Vi,$V3,{7:53}),o($Vi,$V3,{7:54}),o($Vj,$V3,{24:55,7:56}),o($Vk,$V3,{26:57,7:58}),{11:61,38:[1,59],39:[1,60],40:$Vf},o($Vl,[2,36]),o($Vl,[2,37]),o($Vl,[2,38]),o($Vl,[2,39]),o($Vl,[2,40]),o($Vl,[2,41]),{11:62,40:$Vf},{11:64,32:63,40:$Vf},{40:[2,30]},{40:[2,31]},{13:[1,65]},o($Vg,[2,10]),o($Vg,[2,12]),o($Vg,[2,13]),o($Vg,[2,15]),{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,66],22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[1,67],22:$Vb,23:$Vc,25:$Vd,29:$Ve,40:$Vf},{21:[1,68]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,22],22:$Vb,23:$Vc,25:$Vd,28:[1,69],29:$Ve,40:$Vf},{21:[1,70]},{4:$V4,5:$V5,8:8,9:10,10:$V6,11:22,14:13,15:$V7,16:$V8,17:16,18:$V9,20:$Va,21:[2,20],22:$Vb,23:$Vc,25:$Vd,27:[1,71],29:$Ve,40:$Vf},{11:72,40:$Vf},{11:73,40:$Vf},{19:74,47:$Vh},{19:75,47:$Vh},{19:76,47:$Vh},{34:[1,77],47:[2,29]},{5:[1,78]},o($Vg,[2,16]),o($Vg,[2,17]),o($Vg,[2,18]),{13:[1,79]},o($Vg,[2,19]),{13:[1,80]},{19:81,47:$Vh},{19:82,47:$Vh},{5:[2,34]},{5:[2,24]},{5:[2,25]},{11:83,40:$Vf},o($Vg,[2,9]),o($Vj,$V3,{7:56,24:84}),o($Vk,$V3,{7:58,26:85}),{5:[2,32]},{5:[2,33]},{47:[2,28]},{21:[2,23]},{21:[2,21]}],\ndefaultActions: {5:[2,1],6:[2,2],32:[2,42],46:[2,30],47:[2,31],74:[2,34],75:[2,24],76:[2,25],81:[2,32],82:[2,33],83:[2,28],84:[2,23],85:[2,21]},\nparseError: 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},\nparse: 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 lexer = 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 lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.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 function lex() {\n var token;\n token = tstack.pop() || lexer.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 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 (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.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: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: 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(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.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}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError: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 },\n\n// resets the lexer, sets new input\nsetInput: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 },\n\n// consumes and returns one char from the input\ninput: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\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= 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\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\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 ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\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 },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\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.\nreject: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 }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput: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 },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput: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 },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\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\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 ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n 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 // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n 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; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\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 },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState: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 },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules: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 },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState: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 },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 5;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip same-line whitespace */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:/* skip comments */\nbreak;\ncase 5: this.begin('ID'); return 10; \nbreak;\ncase 6: this.begin('ALIAS'); return 40; \nbreak;\ncase 7: this.popState(); this.popState(); this.begin('LINE'); return 12; \nbreak;\ncase 8: this.popState(); this.popState(); return 5; \nbreak;\ncase 9: this.begin('LINE'); return 20; \nbreak;\ncase 10: this.begin('LINE'); return 22; \nbreak;\ncase 11: this.begin('LINE'); return 23; \nbreak;\ncase 12: this.begin('LINE'); return 28; \nbreak;\ncase 13: this.begin('LINE'); return 25; \nbreak;\ncase 14: this.begin('LINE'); return 27; \nbreak;\ncase 15: this.popState(); return 13; \nbreak;\ncase 16:return 21;\nbreak;\ncase 17:return 35;\nbreak;\ncase 18:return 36;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 29;\nbreak;\ncase 21: this.begin('ID'); return 15; \nbreak;\ncase 22: this.begin('ID'); return 16; \nbreak;\ncase 23:return 18;\nbreak;\ncase 24:return 6;\nbreak;\ncase 25:return 34;\nbreak;\ncase 26:return 5;\nbreak;\ncase 27: yy_.yytext = yy_.yytext.trim(); return 40; \nbreak;\ncase 28:return 43;\nbreak;\ncase 29:return 44;\nbreak;\ncase 30:return 41;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 45;\nbreak;\ncase 33:return 46;\nbreak;\ncase 34:return 47;\nbreak;\ncase 35:return 38;\nbreak;\ncase 36:return 39;\nbreak;\ncase 37:return 5;\nbreak;\ncase 38:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[2,3,15],\"inclusive\":false},\"ALIAS\":{\"rules\":[2,3,7,8],\"inclusive\":false},\"ID\":{\"rules\":[2,3,6],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,3,4,5,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import { logger } from '../../logger'\n\nlet actors = {}\nlet messages = []\nconst notes = []\nlet title = ''\n\nexport const addActor = function (id, name, description) {\n // Don't allow description nulling\n const old = actors[id]\n if (old && name === old.name && description == null) return\n\n // Don't allow null descriptions, either\n if (description == null) description = name\n\n actors[id] = { name: name, description: description }\n}\n\nexport const addMessage = function (idFrom, idTo, message, answer) {\n messages.push({ from: idFrom, to: idTo, message: message, answer: answer })\n}\n\nexport const addSignal = function (idFrom, idTo, message, messageType) {\n logger.debug('Adding message from=' + idFrom + ' to=' + idTo + ' message=' + message + ' type=' + messageType)\n messages.push({ from: idFrom, to: idTo, message: message, type: messageType })\n}\n\nexport const getMessages = function () {\n return messages\n}\n\nexport const getActors = function () {\n return actors\n}\nexport const getActor = function (id) {\n return actors[id]\n}\nexport const getActorKeys = function () {\n return Object.keys(actors)\n}\nexport const getTitle = function () {\n return title\n}\n\nexport const clear = function () {\n actors = {}\n messages = []\n}\n\nexport const 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}\n\nexport const ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n}\n\nexport const PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n}\n\nexport const addNote = function (actor, placement, message) {\n const note = { actor: actor, placement: placement, message: message }\n\n // Coerce actor into a [to, from, ...] array\n const actors = [].concat(actor, actor)\n\n notes.push(note)\n messages.push({ from: actors[0], to: actors[1], message: message, type: LINETYPE.NOTE, placement: placement })\n}\n\nexport const setTitle = function (titleText) {\n title = titleText\n}\n\nexport const apply = function (param) {\n if (param instanceof Array) {\n param.forEach(function (item) {\n apply(item)\n })\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description)\n break\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType)\n break\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType)\n break\n case 'addNote':\n addNote(param.actor, param.placement, param.text)\n break\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType)\n break\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType)\n break\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType)\n break\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType)\n break\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType)\n break\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n case 'setTitle':\n setTitle(param.text)\n break\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType)\n break\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType)\n break\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType)\n break\n }\n }\n}\n\nexport default {\n addActor,\n addMessage,\n addSignal,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getTitle,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setTitle,\n apply\n}\n","import * as d3 from 'd3'\n\nimport svgDraw from './svgDraw'\nimport { logger } from '../../logger'\nimport { parser } from './parser/sequenceDiagram'\nimport sequenceDb from './sequenceDb'\n\nparser.yy = sequenceDb\n\nconst conf = {\n\n diagramMarginX: 50,\n diagramMarginY: 30,\n // Margin between actors\n actorMargin: 50,\n // Width of actor boxes\n width: 150,\n // Height of actor boxes\n height: 65,\n actorFontSize: 14,\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n // Margin around loop boxes\n boxMargin: 10,\n boxTextMargin: 5,\n noteMargin: 10,\n // Space between messages\n messageMargin: 35,\n // mirror actors under diagram\n mirrorActors: false,\n // Depending on css styling this might need adjustment\n // Prolongs the edge of the diagram downwards\n bottomMarginAdj: 1,\n\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'tspan'\n}\n\nexport const bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n\n sequenceItems: [],\n activations: [],\n init: function () {\n this.sequenceItems = []\n this.activations = []\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n }\n this.verticalPos = 0\n },\n updateVal: function (obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val\n } else {\n obj[key] = fun(val, obj[key])\n }\n },\n updateBounds: function (startx, starty, stopx, stopy) {\n const _self = this\n let cnt = 0\n function updateFn (type) {\n return function updateItemBounds (item) {\n cnt++\n // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n const n = _self.sequenceItems.length - cnt + 1\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min)\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max)\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min)\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max)\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min)\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max)\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min)\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max)\n }\n }\n }\n\n this.sequenceItems.forEach(updateFn())\n this.activations.forEach(updateFn('activation'))\n },\n insert: function (startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx)\n const _stopx = Math.max(startx, stopx)\n const _starty = Math.min(starty, stopy)\n const _stopy = Math.max(starty, stopy)\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min)\n this.updateVal(bounds.data, 'starty', _starty, Math.min)\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max)\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max)\n\n this.updateBounds(_startx, _starty, _stopx, _stopy)\n },\n newActivation: function (message, diagram) {\n const actorRect = parser.yy.getActors()[message.from.actor]\n const stackedSize = actorActivations(message.from.actor).length\n const x = actorRect.x + conf.width / 2 + (stackedSize - 1) * conf.activationWidth / 2\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram)\n })\n },\n endActivation: function (message) {\n // find most recent activation for given actor\n const lastActorActivationIdx = this.activations\n .map(function (activation) { return activation.actor })\n .lastIndexOf(message.from.actor)\n const activation = this.activations.splice(lastActorActivationIdx, 1)[0]\n return activation\n },\n newLoop: function (title) {\n this.sequenceItems.push({ startx: undefined, starty: this.verticalPos, stopx: undefined, stopy: undefined, title: title })\n },\n endLoop: function () {\n const loop = this.sequenceItems.pop()\n return loop\n },\n addSectionToLoop: function (message) {\n const loop = this.sequenceItems.pop()\n loop.sections = loop.sections || []\n loop.sectionTitles = loop.sectionTitles || []\n loop.sections.push(bounds.getVerticalPos())\n loop.sectionTitles.push(message)\n this.sequenceItems.push(loop)\n },\n bumpVerticalPos: function (bump) {\n this.verticalPos = this.verticalPos + bump\n this.data.stopy = this.verticalPos\n },\n getVerticalPos: function () {\n return this.verticalPos\n },\n getBounds: function () {\n return this.data\n }\n}\n\nconst _drawLongText = (text, x, y, g, width) => {\n let textHeight = 0\n const lines = text.split(/<br\\/?>/ig)\n for (const line of lines) {\n const textObj = svgDraw.getTextObj()\n textObj.x = x\n textObj.y = y + textHeight\n textObj.textMargin = conf.noteMargin\n textObj.dy = '1em'\n textObj.text = line\n textObj.class = 'noteText'\n const textElem = svgDraw.drawText(g, textObj, width)\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height\n }\n return textHeight\n}\n\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the liost of actors\n * @param description The text in the box\n */\nconst drawNote = function (elem, startx, verticalPos, msg, forceWidth) {\n const rect = svgDraw.getNoteRect()\n rect.x = startx\n rect.y = verticalPos\n rect.width = forceWidth || conf.width\n rect.class = 'note'\n\n let g = elem.append('g')\n const rectElem = svgDraw.drawRect(g, rect)\n\n const textHeight = _drawLongText(msg.message, startx - 4, verticalPos + 24, g, rect.width - conf.noteMargin)\n\n bounds.insert(startx, verticalPos, startx + rect.width, verticalPos + 2 * conf.noteMargin + textHeight)\n rectElem.attr('height', textHeight + 2 * conf.noteMargin)\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin)\n}\n\n/**\n * Draws a message\n * @param elem\n * @param startx\n * @param stopx\n * @param verticalPos\n * @param txtCenter\n * @param msg\n */\nconst drawMessage = function (elem, startx, stopx, verticalPos, msg) {\n const g = elem.append('g')\n const txtCenter = startx + (stopx - startx) / 2\n\n const textElem = g.append('text') // text label for the x axis\n .attr('x', txtCenter)\n .attr('y', verticalPos - 7)\n .style('text-anchor', 'middle')\n .attr('class', 'messageText')\n .text(msg.message)\n\n let textWidth = (textElem._groups || textElem)[0][0].getBBox().width\n\n let line\n if (startx === stopx) {\n if (conf.rightAngles) {\n line = g.append('path').attr('d', `M ${startx},${verticalPos} H ${startx + (conf.width / 2)} V ${verticalPos + 25} H ${startx}`)\n } else {\n line = g.append('path')\n .attr('d', 'M ' + startx + ',' + verticalPos + ' C ' + (startx + 60) + ',' + (verticalPos - 10) + ' ' + (startx + 60) + ',' +\n (verticalPos + 30) + ' ' + startx + ',' + (verticalPos + 20))\n }\n\n bounds.bumpVerticalPos(30)\n const dx = Math.max(textWidth / 2, 100)\n bounds.insert(startx - dx, bounds.getVerticalPos() - 10, stopx + dx, bounds.getVerticalPos())\n } else {\n line = g.append('line')\n line.attr('x1', startx)\n line.attr('y1', verticalPos)\n line.attr('x2', stopx)\n line.attr('y2', verticalPos)\n bounds.insert(startx, bounds.getVerticalPos() - 10, stopx, bounds.getVerticalPos())\n }\n // Make an SVG Container\n // Draw the line\n if (msg.type === parser.yy.LINETYPE.DOTTED || msg.type === parser.yy.LINETYPE.DOTTED_CROSS || msg.type === parser.yy.LINETYPE.DOTTED_OPEN) {\n line.style('stroke-dasharray', ('3, 3'))\n line.attr('class', 'messageLine1')\n } else {\n line.attr('class', 'messageLine0')\n }\n\n let url = ''\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n line.attr('stroke-width', 2)\n line.attr('stroke', 'black')\n line.style('fill', 'none') // remove any fill colour\n if (msg.type === parser.yy.LINETYPE.SOLID || msg.type === parser.yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)')\n }\n\n if (msg.type === parser.yy.LINETYPE.SOLID_CROSS || msg.type === parser.yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)')\n }\n}\n\nexport const drawActors = function (diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n for (let i = 0; i < actorKeys.length; i++) {\n const key = actorKeys[i]\n\n // Add some rendering data to the object\n actors[key].x = i * conf.actorMargin + i * conf.width\n actors[key].y = verticalPos\n actors[key].width = conf.diagramMarginX\n actors[key].height = conf.diagramMarginY\n\n // Draw the box with the attached line\n svgDraw.drawActor(diagram, actors[key].x, verticalPos, actors[key].description, conf)\n bounds.insert(actors[key].x, verticalPos, actors[key].x + conf.width, conf.height)\n }\n\n // Add a margin between the actor boxes and the first arrow\n bounds.bumpVerticalPos(conf.height)\n}\n\nexport const setConf = function (cnf) {\n const keys = Object.keys(cnf)\n\n keys.forEach(function (key) {\n conf[key] = cnf[key]\n })\n}\n\nconst actorActivations = function (actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor\n })\n}\n\nconst actorFlowVerticaBounds = function (actor) {\n // handle multiple stacked activations for same actor\n const actors = parser.yy.getActors()\n const activations = actorActivations(actor)\n\n const left = activations.reduce(function (acc, activation) { return Math.min(acc, activation.startx) }, actors[actor].x + conf.width / 2)\n const right = activations.reduce(function (acc, activation) { return Math.max(acc, activation.stopx) }, actors[actor].x + conf.width / 2)\n return [left, right]\n}\n\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\nexport const draw = function (text, id) {\n parser.yy.clear()\n parser.parse(text + '\\n')\n\n bounds.init()\n const diagram = d3.select(`[id=\"${id}\"]`)\n\n let startx\n let stopx\n let forceWidth\n\n // Fetch data from the parsing\n const actors = parser.yy.getActors()\n const actorKeys = parser.yy.getActorKeys()\n const messages = parser.yy.getMessages()\n const title = parser.yy.getTitle()\n drawActors(diagram, actors, actorKeys, 0)\n\n // The arrow head definition is attached to the svg once\n svgDraw.insertArrowHead(diagram)\n svgDraw.insertArrowCrossHead(diagram)\n\n function activeEnd (msg, verticalPos) {\n const activationData = bounds.endActivation(msg)\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6\n verticalPos += 12\n }\n svgDraw.drawActivation(diagram, activationData, verticalPos, conf, actorActivations(msg.from.actor).length)\n\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos)\n }\n\n // const lastMsg\n\n // Draw the messages/signals\n messages.forEach(function (msg) {\n let loopData\n switch (msg.type) {\n case parser.yy.LINETYPE.NOTE:\n bounds.bumpVerticalPos(conf.boxMargin)\n\n startx = actors[msg.from].x\n stopx = actors[msg.to].x\n\n if (msg.placement === parser.yy.PLACEMENT.RIGHTOF) {\n drawNote(diagram, startx + (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg)\n } else if (msg.placement === parser.yy.PLACEMENT.LEFTOF) {\n drawNote(diagram, startx - (conf.width + conf.actorMargin) / 2, bounds.getVerticalPos(), msg)\n } else if (msg.to === msg.from) {\n // Single-actor over\n drawNote(diagram, startx, bounds.getVerticalPos(), msg)\n } else {\n // Multi-actor over\n forceWidth = Math.abs(startx - stopx) + conf.actorMargin\n drawNote(diagram, (startx + stopx + conf.width - forceWidth) / 2, bounds.getVerticalPos(), msg,\n forceWidth)\n }\n break\n case parser.yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram)\n break\n case parser.yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos())\n break\n case parser.yy.LINETYPE.LOOP_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.LOOP_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'loop', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.OPT_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.OPT_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'opt', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.ALT_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.ALT_ELSE:\n bounds.bumpVerticalPos(conf.boxMargin)\n loopData = bounds.addSectionToLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.ALT_END:\n loopData = bounds.endLoop()\n\n svgDraw.drawLoop(diagram, loopData, 'alt', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.PAR_START:\n bounds.bumpVerticalPos(conf.boxMargin)\n bounds.newLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin + conf.boxTextMargin)\n break\n case parser.yy.LINETYPE.PAR_AND:\n bounds.bumpVerticalPos(conf.boxMargin)\n loopData = bounds.addSectionToLoop(msg.message)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n case parser.yy.LINETYPE.PAR_END:\n loopData = bounds.endLoop()\n svgDraw.drawLoop(diagram, loopData, 'par', conf)\n bounds.bumpVerticalPos(conf.boxMargin)\n break\n default:\n try {\n // lastMsg = msg\n bounds.bumpVerticalPos(conf.messageMargin)\n const fromBounds = actorFlowVerticaBounds(msg.from)\n const toBounds = actorFlowVerticaBounds(msg.to)\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1\n startx = fromBounds[fromIdx]\n stopx = toBounds[toIdx]\n\n const verticalPos = bounds.getVerticalPos()\n drawMessage(diagram, startx, stopx, verticalPos, msg)\n const allBounds = fromBounds.concat(toBounds)\n bounds.insert(Math.min.apply(null, allBounds), verticalPos, Math.max.apply(null, allBounds), verticalPos)\n } catch (e) {\n logger.error('error while drawing message', e)\n }\n }\n })\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2)\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos())\n }\n\n const box = bounds.getBounds()\n\n // Adjust line height of actor lines now that the height of the diagram is known\n logger.debug('For line height fix Querying: #' + id + ' .actor-line')\n const actorLines = d3.selectAll('#' + id + ' .actor-line')\n actorLines.attr('y2', box.stopy)\n\n let height = box.stopy - box.starty + 2 * conf.diagramMarginY\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj\n }\n\n const width = (box.stopx - box.startx) + (2 * conf.diagramMarginX)\n\n if (title) {\n diagram.append('text')\n .text(title)\n .attr('x', ((box.stopx - box.startx) / 2) - (2 * conf.diagramMarginX))\n .attr('y', -25)\n }\n\n if (conf.useMaxWidth) {\n diagram.attr('height', '100%')\n diagram.attr('width', '100%')\n diagram.attr('style', 'max-width:' + (width) + 'px;')\n } else {\n diagram.attr('height', height)\n diagram.attr('width', width)\n }\n const extraVertForTitle = title ? 40 : 0\n diagram.attr('viewBox', (box.startx - conf.diagramMarginX) + ' -' + (conf.diagramMarginY + extraVertForTitle) + ' ' + width + ' ' + (height + extraVertForTitle))\n}\n\nexport default {\n bounds,\n drawActors,\n setConf,\n draw\n}\n","export const drawRect = function (elem, rectData) {\n const rectElem = elem.append('rect')\n rectElem.attr('x', rectData.x)\n rectElem.attr('y', rectData.y)\n rectElem.attr('fill', rectData.fill)\n rectElem.attr('stroke', rectData.stroke)\n rectElem.attr('width', rectData.width)\n rectElem.attr('height', rectData.height)\n rectElem.attr('rx', rectData.rx)\n rectElem.attr('ry', rectData.ry)\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class)\n }\n\n return rectElem\n}\n\nexport const drawText = function (elem, textData, width) {\n // Remove and ignore br:s\n const nText = textData.text.replace(/<br\\/?>/ig, ' ')\n\n const textElem = elem.append('text')\n textElem.attr('x', textData.x)\n textElem.attr('y', textData.y)\n textElem.style('text-anchor', textData.anchor)\n textElem.attr('fill', textData.fill)\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class)\n }\n\n const span = textElem.append('tspan')\n span.attr('x', textData.x + textData.textMargin * 2)\n span.attr('fill', textData.fill)\n span.text(nText)\n\n return textElem\n}\n\nexport const drawLabel = function (elem, txtObject) {\n function genPoints (x, y, width, height, cut) {\n return x + ',' + y + ' ' +\n (x + width) + ',' + y + ' ' +\n (x + width) + ',' + (y + height - cut) + ' ' +\n (x + width - cut * 1.2) + ',' + (y + height) + ' ' +\n (x) + ',' + (y + height)\n }\n const polygon = elem.append('polygon')\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7))\n polygon.attr('class', 'labelBox')\n\n txtObject.y = txtObject.y + txtObject.labelMargin\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin\n drawText(elem, txtObject)\n}\n\nlet actorCnt = -1\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the liost of actors\n * @param description The text in the box\n */\nexport const drawActor = function (elem, left, verticalPos, description, conf) {\n const center = left + (conf.width / 2)\n const g = elem.append('g')\n if (verticalPos === 0) {\n actorCnt++\n g.append('line')\n .attr('id', 'actor' + actorCnt)\n .attr('x1', center)\n .attr('y1', 5)\n .attr('x2', center)\n .attr('y2', 2000)\n .attr('class', 'actor-line')\n .attr('stroke-width', '0.5px')\n .attr('stroke', '#999')\n }\n\n const rect = getNoteRect()\n rect.x = left\n rect.y = verticalPos\n rect.fill = '#eaeaea'\n rect.width = conf.width\n rect.height = conf.height\n rect.class = 'actor'\n rect.rx = 3\n rect.ry = 3\n drawRect(g, rect)\n\n _drawTextCandidateFunc(conf)(description, g,\n rect.x, rect.y, rect.width, rect.height, { 'class': 'actor' }, conf)\n}\n\nexport const anchorElement = function (elem) {\n return elem.append('g')\n}\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem - element to append activation rect\n * @param bounds - activation box bounds\n * @param verticalPos - precise y cooridnate of bottom activation box edge\n */\nexport const drawActivation = function (elem, bounds, verticalPos, conf, actorActivations) {\n const rect = getNoteRect()\n const g = bounds.anchored\n rect.x = bounds.startx\n rect.y = bounds.starty\n rect.class = 'activation' + (actorActivations % 3) // Will evaluate to 0, 1 or 2\n rect.width = bounds.stopx - bounds.startx\n rect.height = verticalPos - bounds.starty\n drawRect(g, rect)\n}\n\n/**\n * Draws an actor in the diagram with the attaced line\n * @param center - The center of the the actor\n * @param pos The position if the actor in the list of actors\n * @param description The text in the box\n */\nexport const drawLoop = function (elem, bounds, labelText, conf) {\n const g = elem.append('g')\n const drawLoopLine = function (startx, starty, stopx, stopy) {\n return g.append('line')\n .attr('x1', startx)\n .attr('y1', starty)\n .attr('x2', stopx)\n .attr('y2', stopy)\n .attr('class', 'loopLine')\n }\n drawLoopLine(bounds.startx, bounds.starty, bounds.stopx, bounds.starty)\n drawLoopLine(bounds.stopx, bounds.starty, bounds.stopx, bounds.stopy)\n drawLoopLine(bounds.startx, bounds.stopy, bounds.stopx, bounds.stopy)\n drawLoopLine(bounds.startx, bounds.starty, bounds.startx, bounds.stopy)\n if (typeof bounds.sections !== 'undefined') {\n bounds.sections.forEach(function (item) {\n drawLoopLine(bounds.startx, item, bounds.stopx, item).style('stroke-dasharray', '3, 3')\n })\n }\n\n let txt = getTextObj()\n txt.text = labelText\n txt.x = bounds.startx\n txt.y = bounds.starty\n txt.labelMargin = 1.5 * 10 // This is the small box that says \"loop\"\n txt.class = 'labelText' // Its size & position are fixed.\n\n drawLabel(g, txt)\n\n txt = getTextObj()\n txt.text = '[ ' + bounds.title + ' ]'\n txt.x = bounds.startx + (bounds.stopx - bounds.startx) / 2\n txt.y = bounds.starty + 1.5 * conf.boxMargin\n txt.anchor = 'middle'\n txt.class = 'loopText'\n\n drawText(g, txt)\n\n if (typeof bounds.sectionTitles !== 'undefined') {\n bounds.sectionTitles.forEach(function (item, idx) {\n if (item !== '') {\n txt.text = '[ ' + item + ' ]'\n txt.y = bounds.sections[idx] + 1.5 * conf.boxMargin\n drawText(g, txt)\n }\n })\n }\n}\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowHead = function (elem) {\n elem.append('defs').append('marker')\n .attr('id', 'arrowhead')\n .attr('refX', 5)\n .attr('refY', 2)\n .attr('markerWidth', 6)\n .attr('markerHeight', 4)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0,0 V 4 L6,2 Z') // this is actual shape for arrowhead\n}\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\nexport const insertArrowCrossHead = function (elem) {\n const defs = elem.append('defs')\n const marker = defs.append('marker')\n .attr('id', 'crosshead')\n .attr('markerWidth', 15)\n .attr('markerHeight', 8)\n .attr('orient', 'auto')\n .attr('refX', 16)\n .attr('refY', 4)\n\n // The arrow\n marker.append('path')\n .attr('fill', 'black')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', ('0, 0'))\n .attr('stroke-width', '1px')\n .attr('d', 'M 9,2 V 6 L16,4 Z')\n\n // The cross\n marker.append('path')\n .attr('fill', 'none')\n .attr('stroke', '#000000')\n .style('stroke-dasharray', ('0, 0'))\n .attr('stroke-width', '1px')\n .attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7')\n // this is actual shape for arrowhead\n}\n\nexport const getTextObj = function () {\n const txt = {\n x: 0,\n y: 0,\n 'fill': 'black',\n 'text-anchor': 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n }\n return txt\n}\n\nexport const getNoteRect = function () {\n const rect = {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n }\n return rect\n}\n\nconst _drawTextCandidateFunc = (function () {\n function byText (content, g, x, y, width, height, textAttrs) {\n const text = g.append('text')\n .attr('x', x + width / 2).attr('y', y + height / 2 + 5)\n .style('text-anchor', 'middle')\n .text(content)\n _setTextAttrs(text, textAttrs)\n }\n\n function byTspan (content, g, x, y, width, height, textAttrs, conf) {\n const { actorFontSize, actorFontFamily } = conf\n\n const lines = content.split(/<br\\/?>/ig)\n for (let i = 0; i < lines.length; i++) {\n const dy = (i * actorFontSize) - (actorFontSize * (lines.length - 1) / 2)\n const text = g.append('text')\n .attr('x', x + width / 2).attr('y', y)\n .style('text-anchor', 'middle')\n .style('font-size', actorFontSize)\n .style('font-family', actorFontFamily)\n text.append('tspan')\n .attr('x', x + width / 2).attr('dy', dy)\n .text(lines[i])\n\n text.attr('y', y + height / 2.0)\n .attr('dominant-baseline', 'central')\n .attr('alignment-baseline', 'central')\n\n _setTextAttrs(text, textAttrs)\n }\n }\n\n function byFo (content, g, x, y, width, height, textAttrs, conf) {\n const s = g.append('switch')\n const f = s.append('foreignObject')\n .attr('x', x).attr('y', y)\n .attr('width', width).attr('height', height)\n\n const text = f.append('div').style('display', 'table')\n .style('height', '100%').style('width', '100%')\n\n text.append('div').style('display', 'table-cell')\n .style('text-align', 'center').style('vertical-align', 'middle')\n .text(content)\n\n byTspan(content, s, x, y, width, height, textAttrs, conf)\n _setTextAttrs(text, textAttrs)\n }\n\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\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : (\n conf.textPlacement === 'old' ? byText : byTspan)\n }\n})()\n\nexport default {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n anchorElement,\n drawActivation,\n drawLoop,\n insertArrowHead,\n insertArrowCrossHead,\n getTextObj,\n getNoteRect\n}\n","import moment from 'moment'\n\nexport const LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n}\n\nexport const logger = {\n debug: () => {},\n info: () => {},\n warn: () => {},\n error: () => {},\n fatal: () => {}\n}\n\nexport const setLogLevel = function (level) {\n logger.debug = () => {}\n logger.info = () => {}\n logger.warn = () => {}\n logger.error = () => {}\n logger.fatal = () => {}\n if (level <= LEVELS.fatal) {\n logger.fatal = console.log.bind(console, '\\x1b[35m', format('FATAL'))\n }\n if (level <= LEVELS.error) {\n logger.error = console.log.bind(console, '\\x1b[31m', format('ERROR'))\n }\n if (level <= LEVELS.warn) {\n logger.warn = console.log.bind(console, `\\x1b[33m`, format('WARN'))\n }\n if (level <= LEVELS.info) {\n logger.info = console.log.bind(console, '\\x1b[34m', format('INFO'))\n }\n if (level <= LEVELS.debug) {\n logger.debug = console.log.bind(console, '\\x1b[32m', format('DEBUG'))\n }\n}\n\nconst format = (level) => {\n const time = moment().format('HH:mm:ss.SSS')\n return `${time} : ${level} : `\n}\n","/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\nimport he from 'he'\n\nimport mermaidAPI from './mermaidAPI'\nimport { logger } from './logger'\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\nconst init = function () {\n const conf = mermaidAPI.getConfig()\n logger.debug('Starting rendering diagrams')\n let nodes\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0]\n }\n\n nodes = arguments[1]\n } else {\n nodes = arguments[0]\n }\n\n // if last argument is a function this is the callback function\n let callback\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1]\n logger.debug('Callback function found')\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback\n logger.debug('Callback function found')\n } else {\n logger.debug('No Callback function found')\n }\n }\n }\n nodes = nodes === undefined ? document.querySelectorAll('.mermaid')\n : typeof nodes === 'string' ? document.querySelectorAll(nodes)\n : nodes instanceof window.Node ? [nodes]\n : nodes // Last case - sequence config was passed pick next\n\n logger.debug('Start On Load before: ' + mermaid.startOnLoad)\n if (typeof mermaid.startOnLoad !== 'undefined') {\n logger.debug('Start On Load inner: ' + mermaid.startOnLoad)\n mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad })\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n mermaidAPI.initialize({ gantt: mermaid.ganttConfig })\n }\n\n let txt\n\n for (let i = 0; i < nodes.length; i++) {\n const element = nodes[i]\n\n /*! Check if previously processed */\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true)\n } else {\n continue\n }\n\n const id = `mermaid-${Date.now()}`\n\n // Fetch the graph definition including tags\n txt = element.innerHTML\n\n // transforms the html to pure text\n txt = he.decode(txt).trim().replace(/<br>/ig, '<br/>')\n\n mermaidAPI.render(id, txt, (svgCode, bindFunctions) => {\n element.innerHTML = svgCode\n if (typeof callback !== 'undefined') {\n callback(id)\n }\n bindFunctions(element)\n }, element)\n }\n}\n\nconst initialize = function (config) {\n logger.debug('Initializing mermaid')\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad\n }\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels\n }\n }\n mermaidAPI.initialize(config)\n}\n\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\nconst contentLoaded = function () {\n let config\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = mermaidAPI.getConfig()\n if (config.startOnLoad) {\n mermaid.init()\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n logger.debug('In start, no config')\n config = mermaidAPI.getConfig()\n if (config.startOnLoad) {\n mermaid.init()\n }\n }\n }\n}\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener('load', function () {\n contentLoaded()\n }, false)\n}\n\nconst mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n\n mermaidAPI,\n parse: mermaidAPI.parse,\n render: mermaidAPI.render,\n\n init,\n initialize,\n\n contentLoaded\n}\n\nexport default mermaid\n","/**\n * ---\n * title: mermaidAPI\n * order: 5\n * ---\n * # mermaidAPI\n * This is the api to be used when handling the integration with the web page instead of using the default integration\n * (mermaid.js).\n *\n * The core of this api is the **render** function that given a graph definitionas text renders the graph/diagram and\n * returns a svg element for the graph. It is is then up to the user of the API to make use of the svg, either insert it\n * somewhere in the page or something completely different.\n*/\nimport * as d3 from 'd3'\nimport scope from 'scope-css'\n\nimport { logger, setLogLevel } from './logger'\nimport utils from './utils'\nimport flowRenderer from './diagrams/flowchart/flowRenderer'\nimport flowParser from './diagrams/flowchart/parser/flow'\nimport flowDb from './diagrams/flowchart/flowDb'\nimport sequenceRenderer from './diagrams/sequence/sequenceRenderer'\nimport sequenceParser from './diagrams/sequence/parser/sequenceDiagram'\nimport sequenceDb from './diagrams/sequence/sequenceDb'\nimport ganttRenderer from './diagrams/gantt/ganttRenderer'\nimport ganttParser from './diagrams/gantt/parser/gantt'\nimport ganttDb from './diagrams/gantt/ganttDb'\nimport classRenderer from './diagrams/class/classRenderer'\nimport classParser from './diagrams/class/parser/classDiagram'\nimport classDb from './diagrams/class/classDb'\nimport gitGraphRenderer from './diagrams/git/gitGraphRenderer'\nimport gitGraphParser from './diagrams/git/parser/gitGraph'\nimport gitGraphAst from './diagrams/git/gitGraphAst'\n\nconst themes = {}\nfor (const themeName of ['default', 'forest', 'dark', 'neutral']) {\n themes[themeName] = require(`./themes/${themeName}/index.scss`)\n}\n\n/**\n * ## Configuration\n * These are the default options which can be overridden with the initialization call as in the example below:\n * ```\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n * ```\n */\nconst config = {\n\n /** theme , the CSS style sheet\n *\n * **theme** - Choose one of the built-in themes: default, forest, dark or neutral. To disable any pre-defined mermaid theme, use \"null\".\n * **themeCSS** - Use your own CSS. This overrides **theme**.\n *```\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n *```\n */\n\n theme: 'default',\n themeCSS: undefined,\n\n /**\n * logLevel , decides the amount of logging to be used.\n * * debug: 1\n * * info: 2\n * * warn: 3\n * * error: 4\n * * fatal: 5\n */\n logLevel: 5,\n\n /**\n * **startOnLoad** - This options controls whether or mermaid starts when the page loads\n */\n startOnLoad: true,\n\n /**\n * **arrowMarkerAbsolute** - This options controls whether or arrow markers in html code will be absolute paths or\n * an anchor, #. This matters if you are using base tag settings.\n */\n arrowMarkerAbsolute: false,\n\n /**\n * ### flowchart\n * *The object containing configurations specific for flowcharts*\n */\n flowchart: {\n /**\n * **htmlLabels** - Flag for setting whether or not a html tag should be used for rendering labels\n * on the edges\n */\n htmlLabels: true,\n\n curve: 'linear'\n },\n\n /**\n * ### sequenceDiagram\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n\n /**\n * **diagramMarginX** - margin to the right and left of the sequence diagram\n */\n diagramMarginX: 50,\n\n /**\n * **diagramMarginY** - margin to the over and under the sequence diagram\n */\n diagramMarginY: 10,\n\n /**\n * **actorMargin** - Margin between actors\n */\n actorMargin: 50,\n\n /**\n * **width** - Width of actor boxes\n */\n width: 150,\n\n /**\n * **height** - Height of actor boxes\n */\n height: 65,\n\n /**\n * **boxMargin** - Margin around loop boxes\n */\n boxMargin: 10,\n\n /**\n * **boxTextMargin** - margin around the text in loop/alt/opt boxes\n */\n boxTextMargin: 5,\n\n /**\n * **noteMargin** - margin around notes\n */\n noteMargin: 10,\n\n /**\n * **messageMargin** - Space between messages\n */\n messageMargin: 35,\n\n /**\n * **mirrorActors** - mirror actors under diagram\n */\n mirrorActors: true,\n\n /**\n * **bottomMarginAdj** - Depending on css styling this might need adjustment.\n * Prolongs the edge of the diagram downwards\n */\n bottomMarginAdj: 1,\n\n /**\n * **useMaxWidth** - when this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used\n */\n useMaxWidth: true,\n\n /**\n * **rightAngles** - this will display arrows that start and begin at the same node as right angles, rather than a curve\n */\n rightAngles: false\n },\n\n /** ### gantt\n * The object containing configurations specific for gantt diagrams*\n */\n gantt: {\n /**\n * **titleTopMargin** - margin top for the text over the gantt diagram\n */\n titleTopMargin: 25,\n\n /**\n * **barHeight** - the height of the bars in the graph\n */\n barHeight: 20,\n\n /**\n * **barGap** - the margin between the different activities in the gantt diagram\n */\n barGap: 4,\n\n /**\n * **topPadding** - margin between title and gantt diagram and between axis and gantt diagram.\n */\n topPadding: 50,\n\n /**\n * **leftPadding** - the space allocated for the section name to the left of the activities.\n */\n leftPadding: 75,\n\n /**\n * **gridLineStartPadding** - Vertical starting position of the grid lines\n */\n gridLineStartPadding: 35,\n\n /**\n * **fontSize** - font size ...\n */\n fontSize: 11,\n\n /**\n * **fontFamily** - font family ...\n */\n fontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n * **numberSectionStyles** - the number of alternating section styles\n */\n numberSectionStyles: 4,\n\n /**\n * **axisFormat** - datetime format of the axis, this might need adjustment to match your locale and preferences\n */\n axisFormat: '%Y-%m-%d'\n },\n class: {},\n git: {}\n}\n\nsetLogLevel(config.logLevel)\n\nfunction parse (text) {\n const graphType = utils.detectType(text)\n let parser\n\n switch (graphType) {\n case 'git':\n parser = gitGraphParser\n parser.parser.yy = gitGraphAst\n break\n case 'flowchart':\n parser = flowParser\n parser.parser.yy = flowDb\n break\n case 'sequence':\n parser = sequenceParser\n parser.parser.yy = sequenceDb\n break\n case 'gantt':\n parser = ganttParser\n parser.parser.yy = ganttDb\n break\n case 'class':\n parser = classParser\n parser.parser.yy = classDb\n break\n }\n\n parser.parser.yy.parseError = (str, hash) => {\n const error = { str, hash }\n throw error\n }\n\n parser.parse(text)\n}\n\nexport const encodeEntities = function (text) {\n let txt = text\n\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1)\n return innerTxt\n })\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s) {\n const innerTxt = s.substring(0, s.length - 1)\n return innerTxt\n })\n\n txt = txt.replace(/#\\w+;/g, function (s) {\n const innerTxt = s.substring(1, s.length - 1)\n\n const isInt = /^\\+?\\d+$/.test(innerTxt)\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß'\n } else {\n return 'fl°' + innerTxt + '¶ß'\n }\n })\n\n return txt\n}\n\nexport const decodeEntities = function (text) {\n let txt = text\n\n txt = txt.replace(/fl°°/g, function () {\n return '&#'\n })\n txt = txt.replace(/fl°/g, function () {\n return '&'\n })\n txt = txt.replace(/¶ß/g, function () {\n return ';'\n })\n\n return txt\n}\n/**\n * ##render\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\nconst render = function (id, txt, cb, container) {\n if (typeof container !== 'undefined') {\n container.innerHTML = ''\n\n d3.select(container).append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g')\n } else {\n const element = document.querySelector('#' + 'd' + id)\n if (element) {\n element.innerHTML = ''\n }\n\n d3.select('body').append('div')\n .attr('id', 'd' + id)\n .append('svg')\n .attr('id', id)\n .attr('width', '100%')\n .attr('xmlns', 'http://www.w3.org/2000/svg')\n .append('g')\n }\n\n window.txt = txt\n txt = encodeEntities(txt)\n\n const element = d3.select('#d' + id).node()\n const graphType = utils.detectType(txt)\n\n // insert inline style into svg\n const svg = element.firstChild\n const firstChild = svg.firstChild\n\n // pre-defined theme\n let style = themes[config.theme]\n if (style === undefined) {\n style = ''\n }\n\n // user provided theme CSS\n if (config.themeCSS !== undefined) {\n style += `\\n${config.themeCSS}`\n }\n\n // classDef\n if (graphType === 'flowchart') {\n const classes = flowRenderer.getClasses(txt)\n for (const className in classes) {\n style += `\\n.${className} > * { ${classes[className].styles.join(' !important; ')} !important; }`\n }\n }\n\n const style1 = document.createElement('style')\n style1.innerHTML = scope(style, `#${id}`)\n svg.insertBefore(style1, firstChild)\n\n const style2 = document.createElement('style')\n const cs = window.getComputedStyle(svg)\n style2.innerHTML = `#${id} {\n color: ${cs.color};\n font: ${cs.font};\n }`\n svg.insertBefore(style2, firstChild)\n\n switch (graphType) {\n case 'git':\n config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n gitGraphRenderer.setConf(config.git)\n gitGraphRenderer.draw(txt, id, false)\n break\n case 'flowchart':\n config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n flowRenderer.setConf(config.flowchart)\n flowRenderer.draw(txt, id, false)\n break\n case 'sequence':\n config.sequence.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n if (config.sequenceDiagram) { // backwards compatibility\n sequenceRenderer.setConf(Object.assign(config.sequence, config.sequenceDiagram))\n console.error('`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.')\n } else {\n sequenceRenderer.setConf(config.sequence)\n }\n sequenceRenderer.draw(txt, id)\n break\n case 'gantt':\n config.gantt.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n ganttRenderer.setConf(config.gantt)\n ganttRenderer.draw(txt, id)\n break\n case 'class':\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute\n classRenderer.setConf(config.class)\n classRenderer.draw(txt, id)\n break\n }\n\n d3.select(`[id=\"${id}\"]`).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml')\n\n let url = ''\n if (config.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search\n url = url.replace(/\\(/g, '\\\\(')\n url = url.replace(/\\)/g, '\\\\)')\n }\n\n // Fix for when the base tag is used\n let svgCode = d3.select('#d' + id).node().innerHTML.replace(/url\\(#arrowhead/g, 'url(' + url + '#arrowhead', 'g')\n\n svgCode = decodeEntities(svgCode)\n\n if (typeof cb !== 'undefined') {\n cb(svgCode, flowDb.bindFunctions)\n } else {\n logger.warn('CB = undefined!')\n }\n\n const node = d3.select('#d' + id).node()\n if (node !== null && typeof node.remove === 'function') {\n d3.select('#d' + id).node().remove()\n }\n\n return svgCode\n}\n\nconst setConf = function (cnf) {\n // Top level initially mermaid, gflow, sequenceDiagram and gantt\n const lvl1Keys = Object.keys(cnf)\n for (let i = 0; i < lvl1Keys.length; i++) {\n if (typeof cnf[lvl1Keys[i]] === 'object' && cnf[lvl1Keys[i]] != null) {\n const lvl2Keys = Object.keys(cnf[lvl1Keys[i]])\n\n for (let j = 0; j < lvl2Keys.length; j++) {\n logger.debug('Setting conf ', lvl1Keys[i], '-', lvl2Keys[j])\n if (typeof config[lvl1Keys[i]] === 'undefined') {\n config[lvl1Keys[i]] = {}\n }\n logger.debug('Setting config: ' + lvl1Keys[i] + ' ' + lvl2Keys[j] + ' to ' + cnf[lvl1Keys[i]][lvl2Keys[j]])\n config[lvl1Keys[i]][lvl2Keys[j]] = cnf[lvl1Keys[i]][lvl2Keys[j]]\n }\n } else {\n config[lvl1Keys[i]] = cnf[lvl1Keys[i]]\n }\n }\n}\n\nfunction initialize (options) {\n logger.debug('Initializing mermaidAPI')\n // Update default config with options supplied at initialization\n if (typeof options === 'object') {\n setConf(options)\n }\n setLogLevel(config.logLevel)\n}\n\nfunction getConfig () {\n return config\n}\n\nconst mermaidAPI = {\n render,\n parse,\n initialize,\n getConfig\n}\n\nexport default mermaidAPI\n","var map = {\n\t\"./dark/index.scss\": \"./src/themes/dark/index.scss\",\n\t\"./default/index.scss\": \"./src/themes/default/index.scss\",\n\t\"./forest/index.scss\": \"./src/themes/forest/index.scss\",\n\t\"./neutral/index.scss\": \"./src/themes/neutral/index.scss\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/themes sync recursive ^\\\\.\\\\/.*\\\\/index\\\\.scss$\";","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","// css-to-string-loader: transforms styles from css-loader to a string output\n\n// Get the styles\nvar styles = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/lib/loader.js!./index.scss\");\n\nif (typeof styles === 'string') {\n // Return an existing string\n module.exports = styles;\n} else {\n // Call the custom toString method from css-loader module\n module.exports = styles.toString();\n}","import * as d3 from 'd3'\n\n/**\n * @function detectType\n * Detects the type of the graph text.\n * ```mermaid\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\nexport const detectType = function (text) {\n text = text.replace(/^\\s*%%.*\\n/g, '\\n')\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence'\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt'\n }\n\n if (text.match(/^\\s*classDiagram/)) {\n return 'class'\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git'\n }\n return 'flowchart'\n}\n\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\nexport const isSubstringInArray = function (str, arr) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i\n }\n return -1\n}\n\nexport const interpolateToCurve = (interpolate, defaultCurve) => {\n if (!interpolate) {\n return defaultCurve\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`\n return d3[curveName] || defaultCurve\n}\n\nexport default {\n detectType,\n isSubstringInArray,\n interpolateToCurve\n}\n","module.exports = require(\"d3\");","module.exports = require(\"dagre-d3-renderer\");","module.exports = require(\"dagre-layout\");","module.exports = require(\"graphlibrary\");","module.exports = require(\"he\");","module.exports = require(\"lodash\");","module.exports = require(\"moment\");","module.exports = require(\"scope-css\");"],"sourceRoot":""}
\No newline at end of file