{"version":3,"file":"mermaid.core.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,4uCAA4uC;AACvvC,aAAa,yvBAAyvB;AACtwB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,sBAAsB,mCAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,kEAAkE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,mEAAmE,EAAE,QAAQ,sDAAsD,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,oBAAoB,sMAAsM,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,eAAe,UAAU,kHAAkH,gFAAgF,GAAG,8CAA8C,8BAA8B,2BAA2B,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,UAAU,eAAe,wDAAwD,gBAAgB,UAAU,mHAAmH,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,gNAAgN,gBAAgB,wDAAwD,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,oBAAoB,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,4CAA4C,UAAU,EAAE,UAAU,gBAAgB,8CAA8C,EAAE,wDAAwD,eAAe,kCAAkC,iBAAiB,2BAA2B,EAAE,aAAa,EAAE,8CAA8C,eAAe,UAAU,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,2DAA2D,+CAA+C,6BAA6B,WAAW,GAAG,WAAW,EAAE,wBAAwB,yDAAyD,WAAW,8BAA8B,WAAW,8BAA8B,WAAW,iBAAiB,cAAc,gBAAgB,UAAU,4CAA4C,WAAW;AACh1F,iBAAiB,8FAA8F;AAC/G;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,yIAAyI,8BAA8B,mBAAmB,yBAAyB,gIAAgI,oBAAoB,WAAW,yBAAyB,0fAA0f,EAAE,MAAM,YAAY,EAAE;AAC56B,aAAa,iBAAiB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,kBAAkB,kCAAkC,kBAAkB,qCAAqC,SAAS,kCAAkC,WAAW,2CAA2C,YAAY,kCAAkC,aAAa,kCAAkC,WAAW,kCAAkC,YAAY;AACpgB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,wrBAAwrB;AACnsB,aAAa,oWAAoW;AACjX;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,qEAAqE,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,oCAAoC,uDAAuD,kDAAkD,8CAA8C,UAAU,EAAE,gBAAgB,EAAE,UAAU,eAAe,aAAa,EAAE,mCAAmC,EAAE,0BAA0B,uEAAuE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,mCAAmC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kCAAkC,8BAA8B,UAAU,EAAE,0BAA0B,gBAAgB,UAAU,eAAe,6BAA6B,2BAA2B,UAAU,uEAAuE,aAAa;AACxkC,iBAAiB,mEAAmE;AACpF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,gGAAgG,2GAA2G,mCAAmC,cAAc,uCAAuC,aAAa;AACpb,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,UAAU,iDAAiD,YAAY;AACzO,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACpwBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,m1DAAm1D;AAC91D,aAAa,omCAAomC;AACjnC;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8CAA8C,WAAW;AACtG;AACA;AACA,+CAA+C,gDAAgD,WAAW;AAC1G;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,iCAAiC;AACjC;AACA;AACA,mCAAmC,qDAAqD;AACxF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,6CAA6C,UAAU;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AA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A;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,mBAAmB,0xBAA0xB,+zJAA+zJ,UAAU;AACluL,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,WAAW,6BAA6B,QAAQ,6DAA6D,WAAW,gCAAgC,YAAY;AACvjB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AClgCA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,6iBAA6iB;AACxjB,aAAa,kWAAkW;AAC/W;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,aAAa;AACb;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,EAAE,0BAA0B,cAAc,IAAI,GAAG,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,2IAA2I,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,0GAA0G,uKAAuK,UAAU,gBAAgB,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,oBAAoB,gBAAgB,UAAU,iBAAiB,aAAa,EAAE,UAAU,eAAe,UAAU,8BAA8B,UAAU,GAAG,UAAU;AACv5B,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,qBAAqB,8TAA8T,2EAA2E,2BAA2B,2BAA2B,6BAA6B,qDAAqD,2BAA2B,kBAAkB,kBAAkB;AACttB,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,YAAY;AAC/Z,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7vBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW,kCAAkC,WAAW,kCAAkC,YAAY;AACnH,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACvrBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,sPAAsP,mHAAmH;AACpX,aAAa,wGAAwG,2FAA2F;AAChN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,mDAAmD,EAAE,MAAM,EAAE,oDAAoD,EAAE,oDAAoD,YAAY,cAAc,6CAA6C,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,YAAY,kDAAkD,aAAa,KAAK,GAAG,uBAAuB,iCAAiC,0BAA0B,EAAE,UAAU,EAAE,UAAU,0BAA0B,kDAAkD,iBAAiB,gBAAgB,wDAAwD,aAAa,EAAE,UAAU;AAClqB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB;AACrI,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,UAAU,+BAA+B,WAAW,kCAAkC,YAAY;AACrT,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACppBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,6iCAA6iC;AACxjC,aAAa,yrBAAyrB;AACtsB;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,yBAAyB,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,0BAA0B,EAAE,QAAQ,EAAE,8HAA8H,EAAE,uBAAuB,mBAAmB,QAAQ,EAAE,SAAS,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oBAAoB,+HAA+H,gBAAgB,eAAe,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,uDAAuD,EAAE,uDAAuD,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,oGAAoG,UAAU,eAAe,+CAA+C,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,oBAAoB,gBAAgB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,+CAA+C,8BAA8B,UAAU,EAAE,UAAU,EAAE,iCAAiC,4CAA4C,oBAAoB,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,8CAA8C,gBAAgB,4BAA4B,EAAE,6BAA6B,gBAAgB,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,kCAAkC,EAAE,kCAAkC;AAC5qF,iBAAiB,2QAA2Q;AAC5R;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yHAAyH,WAAW,qoBAAqoB;AACh2B,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,cAAc,6BAA6B,UAAU,6BAA6B,WAAW,kCAAkC,YAAY;AAC9V,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC/xBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,m/BAAm/B;AAC9/B,aAAa,kmBAAkmB;AAC/mB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,yBAAyB,gDAAgD;AACzE;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAA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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA,yCAAyC,qBAAqB;AAC9D;AACA,0BAA0B,iBAAiB,oBAAoB;AAC/D;AACA,0BAA0B,iBAAiB;AAC3C;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kEAAkE,iCAAiC,sKAAsK,oRAAoR,qBAAqB,yCAAyC,4IAA4I;AACz6B,aAAa,kBAAkB,gCAAgC,mBAAmB,kCAAkC,kBAAkB,kCAAkC,OAAO,mCAAmC,UAAU,sCAAsC,SAAS,mCAAmC,YAAY;AAC1T,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,khBAAkhB,qJAAqJ;AAClrB,aAAa,iVAAiV,6HAA6H;AAC3d;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,6DAA6D,WAAW;AACxE;AACA;;AAEA,2CAA2C,iCAAiC;AAC5E,iBAAiB,4BAA4B,+DAA+D,WAAW;AACvH;AACA;AACA;;AAEA,sEAAsE;AACtE,iBAAiB,4BAA4B,+DAA+D,WAAW,8DAA8D;AACrL;AACA;AACA;;AAEA,2EAA2E;AAC3E,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA,2GAA2G;AAC3G,kBAAkB;AAClB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA;;AAEA,6GAA6G;AAC7G,iBAAiB,0CAA0C;AAC3D;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,gEAAgE,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,qKAAqK,EAAE,uBAAuB,iCAAiC,4IAA4I,yCAAyC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,0DAA0D,oCAAoC,gIAAgI,gBAAgB,2CAA2C,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,eAAe,UAAU,GAAG,uKAAuK,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,sDAAsD,KAAK,+BAA+B,uKAAuK;AACvrD,iBAAiB,gEAAgE;AACjF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,0BAA0B,0CAA0C;AAC5F;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D;AAC5D;AACA,4DAA4D;AAC5D;AACA,qDAAqD;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA,yCAAyC,sCAAsC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,6IAA6I,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB,ocAAoc,6CAA6C,wBAAwB,WAAW,gLAAgL,oJAAoJ,qBAAqB;AAC9mC,aAAa,QAAQ,kCAAkC,oBAAoB,kCAAkC,kBAAkB,sCAAsC,mBAAmB,sCAAsC,mBAAmB,oCAAoC,WAAW,yEAAyE,qBAAqB,+BAA+B,kBAAkB,qCAAqC,cAAc,kCAAkC,YAAY,+BAA+B,SAAS,qCAAqC,UAAU,kCAAkC,UAAU,6BAA6B,aAAa,+BAA+B,iBAAiB,kCAAkC,eAAe,6BAA6B,UAAU,mEAAmE,OAAO,kCAAkC,YAAY;AAC77B,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACp0BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,8VAA8V;AACzW,aAAa,gMAAgM;AAC7M;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,6EAA6E,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,4CAA4C,wDAAwD,UAAU,gBAAgB,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,aAAa,EAAE,UAAU,EAAE,UAAU;AACrhB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,2FAA2F,2BAA2B,kBAAkB,kBAAk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AAEnZ,SA7GR;;AA+Gb;AACAG,EAAAA,SAAS,EAAE;AACT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiZ,IAAAA,cAAc,EAAE,CAbP;;AAeT;AACJ;AACA;AACA;AACA;AACA;AACA;AACIhZ,IAAAA,UAAU,EAAE,IAtBH;;AAwBT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiZ,IAAAA,WAAW,EAAE,EApCJ;;AAsCT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAlDJ;;AAoDT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI5P,IAAAA,KAAK,EAAE,OA7DE;AA8DT;AACA;AACA/I,IAAAA,OAAO,EAAE,EAhEA;;AAkET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI4Y,IAAAA,WAAW,EAAE,IA9EJ;;AAgFT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA5FR,GAhHE;;AA+Mb;AACAC,EAAAA,QAAQ,EAAE;AACR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EART;;AAUR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBR;;AAmBR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EA1BR;;AA4BR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAnCL;;AAqCR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIpZ,IAAAA,KAAK,EAAE,GA5CC;;AA8CR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EArDA;;AAuDR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIoZ,IAAAA,SAAS,EAAE,EA9DH;;AAgER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CAvEP;;AAyER;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAhFJ;;AAkFR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EAzFP;;AA2FR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QAlGN;;AAoGR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,IA3GN;;AA6GR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,KAtHJ;;AAwHR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,CAnIT;;AAqIR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IA/IL;;AAiJR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KA5JL;;AA8JR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,KArKb;;AAuKR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9KP;;AAgLR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,2BAvLT;;AAyLR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,GA9LT;;AAgMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EAvMN;;AAyMR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,4CAhNR;;AAkNR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GAvNR;;AAyNR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,QAhOH;;AAkOR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EAzOT;;AA2OR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,4CAlPX;;AAoPR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,iBAAiB,EAAE,GAzPX;;AA2PR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,KAhQE;;AAkQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvQL;;AAyQR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9QP;;AAgRR;AACJ;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EArRR;AAuRRC,IAAAA,WAAW,EAAE,uBAAY;AACvB,aAAO;AACL3c,QAAAA,UAAU,EAAE,KAAKqc,iBADZ;AAELO,QAAAA,QAAQ,EAAE,KAAKR,eAFV;AAGLS,QAAAA,UAAU,EAAE,KAAKP;AAHZ,OAAP;AAKD,KA7RO;AA8RRQ,IAAAA,QAAQ,EAAE,oBAAY;AACpB,aAAO;AACL9c,QAAAA,UAAU,EAAE,KAAKic,cADZ;AAELW,QAAAA,QAAQ,EAAE,KAAKZ,YAFV;AAGLa,QAAAA,UAAU,EAAE,KAAKX;AAHZ,OAAP;AAKD,KApSO;AAqSRa,IAAAA,SAAS,EAAE,qBAAY;AACrB,aAAO;AACL/c,QAAAA,UAAU,EAAE,KAAK8b,eADZ;AAELc,QAAAA,QAAQ,EAAE,KAAKf,aAFV;AAGLgB,QAAAA,UAAU,EAAE,KAAKd;AAHZ,OAAP;AAKD;AA3SO,GAhNG;;AA8fb;AACAiB,EAAAA,KAAK,EAAE;AACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAVX;;AAYL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,SAAS,EAAE,EAnBN;;AAqBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,CA5BH;;AA8BL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EArCP;;AAuCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,EA9CT;;AAgDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EAvDR;;AAyDL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,oBAAoB,EAAE,EAhEjB;;AAkEL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIX,IAAAA,QAAQ,EAAE,EAzEL;;AA2EL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIY,IAAAA,eAAe,EAAE,EAlFZ;;AAoFL;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,mBAAmB,EAAE,CA3FhB;;AA6FL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,UAxGP;;AA0GL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI9C,IAAAA,WAAW,EAAE,IAtHR;;AAwHL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI+C,IAAAA,OAAO,EAAE,KAjIJ;AAmILC,IAAAA,QAAQ,EAAEvc;AAnIL,GA/fM;;AAqoBb;AACAwc,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,cAAc,EAAE,EART;;AAUP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAjBT;;AAmBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACI6C,IAAAA,UAAU,EAAE,GA1BL;;AA4BP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIhc,IAAAA,KAAK,EAAE,GAnCA;;AAqCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EA5CD;;AA8CP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIoZ,IAAAA,SAAS,EAAE,EArDJ;;AAuDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CA9DR;;AAgEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAvEL;;AAyEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AChhBA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;UEJA;UACA;UACA;UACA","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/external commonjs \"@braintree/sanitize-url\"","webpack://mermaid/external commonjs \"d3\"","webpack://mermaid/external commonjs \"dagre\"","webpack://mermaid/external commonjs \"dagre-d3\"","webpack://mermaid/external commonjs \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external commonjs \"dompurify\"","webpack://mermaid/external commonjs \"graphlib\"","webpack://mermaid/external commonjs \"khroma\"","webpack://mermaid/external commonjs \"moment-mini\"","webpack://mermaid/external commonjs \"stylis\"","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/class/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/er/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/flowchart/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/gantt/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/git/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/info/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/pie/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/requirement/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/sequence/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/state/parser|fs","webpack://mermaid/ignored|/Users/knuts/source/priv/atlantica/mermaid/src/diagrams/user-journey/parser|fs","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/before-startup","webpack://mermaid/webpack/startup","webpack://mermaid/webpack/after-startup"],"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})(typeof self !== \"undefined\" ? self : this, function() {\nreturn ","/* 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,6],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,12],$V5=[1,11],$V6=[1,15,24],$V7=[1,19],$V8=[1,31],$V9=[1,34],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,44],$Vk=[15,24],$Vl=[1,56],$Vm=[1,57],$Vn=[1,58],$Vo=[1,59],$Vp=[1,60],$Vq=[1,61],$Vr=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],$Vs=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],$Vt=[7,8,9,10,15,18,22,24],$Vu=[47,77,78,79,80],$Vv=[47,54,55,77,78,79,80],$Vw=[47,50,51,52,53,77,78,79,80],$Vx=[15,24,31],$Vy=[1,93];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"directive\":6,\"direction_tb\":7,\"direction_bt\":8,\"direction_rl\":9,\"direction_lr\":10,\"graphConfig\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\"NEWLINE\":15,\":\":16,\"argDirective\":17,\"open_directive\":18,\"type_directive\":19,\"arg_directive\":20,\"close_directive\":21,\"CLASS_DIAGRAM\":22,\"statements\":23,\"EOF\":24,\"statement\":25,\"className\":26,\"alphaNumToken\":27,\"classLiteralName\":28,\"GENERICTYPE\":29,\"relationStatement\":30,\"LABEL\":31,\"classStatement\":32,\"methodStatement\":33,\"annotationStatement\":34,\"clickStatement\":35,\"cssClassStatement\":36,\"CLASS\":37,\"STYLE_SEPARATOR\":38,\"STRUCT_START\":39,\"members\":40,\"STRUCT_STOP\":41,\"ANNOTATION_START\":42,\"ANNOTATION_END\":43,\"MEMBER\":44,\"SEPARATOR\":45,\"relation\":46,\"STR\":47,\"relationType\":48,\"lineType\":49,\"AGGREGATION\":50,\"EXTENSION\":51,\"COMPOSITION\":52,\"DEPENDENCY\":53,\"LINE\":54,\"DOTTED_LINE\":55,\"CALLBACK\":56,\"LINK\":57,\"LINK_TARGET\":58,\"CLICK\":59,\"CALLBACK_NAME\":60,\"CALLBACK_ARGS\":61,\"HREF\":62,\"CSSCLASS\":63,\"commentToken\":64,\"textToken\":65,\"graphCodeTokens\":66,\"textNoTagsToken\":67,\"TAGSTART\":68,\"TAGEND\":69,\"==\":70,\"--\":71,\"PCT\":72,\"DEFAULT\":73,\"SPACE\":74,\"MINUS\":75,\"keywords\":76,\"UNICODE_TEXT\":77,\"NUM\":78,\"ALPHA\":79,\"BQUOTE_STR\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"direction_tb\",8:\"direction_bt\",9:\"direction_rl\",10:\"direction_lr\",15:\"NEWLINE\",16:\":\",18:\"open_directive\",19:\"type_directive\",20:\"arg_directive\",21:\"close_directive\",22:\"CLASS_DIAGRAM\",24:\"EOF\",29:\"GENERICTYPE\",31:\"LABEL\",37:\"CLASS\",38:\"STYLE_SEPARATOR\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"ANNOTATION_START\",43:\"ANNOTATION_END\",44:\"MEMBER\",45:\"SEPARATOR\",47:\"STR\",50:\"AGGREGATION\",51:\"EXTENSION\",52:\"COMPOSITION\",53:\"DEPENDENCY\",54:\"LINE\",55:\"DOTTED_LINE\",56:\"CALLBACK\",57:\"LINK\",58:\"LINK_TARGET\",59:\"CLICK\",60:\"CALLBACK_NAME\",61:\"CALLBACK_ARGS\",62:\"HREF\",63:\"CSSCLASS\",66:\"graphCodeTokens\",68:\"TAGSTART\",69:\"TAGEND\",70:\"==\",71:\"--\",72:\"PCT\",73:\"DEFAULT\",74:\"SPACE\",75:\"MINUS\",76:\"keywords\",77:\"UNICODE_TEXT\",78:\"NUM\",79:\"ALPHA\",80:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.setDirection('TB');\nbreak;\ncase 5:\n yy.setDirection('BT');\nbreak;\ncase 6:\n yy.setDirection('RL');\nbreak;\ncase 7:\n yy.setDirection('LR');\nbreak;\ncase 11:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 12:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 14:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 19: case 20:\n this.$=$$[$0]; \nbreak;\ncase 21:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 22: case 23:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 24:\n yy.addRelation($$[$0]); \nbreak;\ncase 25:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 33:\nyy.addClass($$[$0]);\nbreak;\ncase 34:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 35:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 36:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 37:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 38:\n this.$ = [$$[$0]]; \nbreak;\ncase 39:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 40:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 41:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 42:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 43:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 44:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 45:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 46:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 47:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 48:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 49:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 50:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 51:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 52:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 53:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 54:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 55:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 56:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 57:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 58: case 64:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 59: case 65:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 60: case 68:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 62: case 70:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 63: case 71:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 67:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 72:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[2,8]},o($V6,[2,4]),o($V6,[2,5]),o($V6,[2,6]),o($V6,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:$V7},o([16,21],[2,12]),{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},o($Vk,[2,24],{31:[1,50]}),o($Vk,[2,26]),o($Vk,[2,27]),o($Vk,[2,28]),o($Vk,[2,29]),o($Vk,[2,30]),o($Vk,[2,31]),o($Vk,[2,32]),o($Vk,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq}),{26:62,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,42]),o($Vk,[2,43]),{27:63,77:$Vg,78:$Vh,79:$Vi},{26:64,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:65,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:66,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{47:[1,67]},o($Vr,[2,19],{27:39,28:40,26:68,29:[1,69],77:$Vg,78:$Vh,79:$Vi,80:$Vj}),o($Vr,[2,20],{29:[1,70]}),o($Vs,[2,86]),o($Vs,[2,87]),o($Vs,[2,88]),o([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),o($Vt,[2,9]),{14:71,21:$V7},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,25]),{26:73,27:39,28:40,47:[1,74],77:$Vg,78:$Vh,79:$Vi,80:$Vj},{46:75,48:54,49:55,50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq},o($Vk,[2,41]),{49:76,54:$Vp,55:$Vq},o($Vu,[2,51],{48:77,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vv,[2,52]),o($Vv,[2,53]),o($Vv,[2,54]),o($Vv,[2,55]),o($Vw,[2,56]),o($Vw,[2,57]),o($Vk,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:$Vg,78:$Vh,79:$Vi},o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),{15:[1,86]},{24:[2,18]},o($Vx,[2,44]),{26:87,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:88,27:39,28:40,47:[1,89],77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,50],{48:90,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vu,[2,49]),{27:91,77:$Vg,78:$Vh,79:$Vi},{40:92,44:$Vy},{26:94,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,58],{47:[1,95]}),o($Vk,[2,60],{47:[1,97],58:[1,96]}),o($Vk,[2,64],{47:[1,98],61:[1,99]}),o($Vk,[2,68],{47:[1,101],58:[1,100]}),o($Vk,[2,72]),o($Vt,[2,10]),o($Vx,[2,46]),o($Vx,[2,45]),{26:102,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,48]),o($Vk,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:$Vy},o($Vk,[2,37]),o($Vk,[2,59]),o($Vk,[2,61]),o($Vk,[2,62],{58:[1,106]}),o($Vk,[2,65]),o($Vk,[2,66],{47:[1,107]}),o($Vk,[2,69]),o($Vk,[2,70],{58:[1,108]}),o($Vx,[2,47]),{40:109,44:$Vy},o($Vk,[2,35]),{41:[2,39]},o($Vk,[2,63]),o($Vk,[2,67]),o($Vk,[2,71]),{41:[1,110]},o($Vk,[2,36])],\ndefaultActions: {2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},\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: this.begin('open_directive'); return 18; \nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 10;\nbreak;\ncase 5: this.begin('type_directive'); return 19; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 16; \nbreak;\ncase 7: this.popState(); this.popState(); return 21; \nbreak;\ncase 8:return 20;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 15;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 22;\nbreak;\ncase 14:return 22;\nbreak;\ncase 15: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 39;\nbreak;\ncase 16:return \"EOF_IN_STRUCT\";\nbreak;\ncase 17:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 18: /*console.log('Ending struct');*/this.popState(); return 41;\nbreak;\ncase 19:/* nothing */\nbreak;\ncase 20: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:return 63;\nbreak;\ncase 23:return 56;\nbreak;\ncase 24:return 57;\nbreak;\ncase 25:return 59;\nbreak;\ncase 26:return 42;\nbreak;\ncase 27:return 43;\nbreak;\ncase 28:this.begin(\"generic\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return \"GENERICTYPE\";\nbreak;\ncase 31:this.begin(\"string\");\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:return \"STR\";\nbreak;\ncase 34:this.begin(\"bqstring\");\nbreak;\ncase 35:this.popState();\nbreak;\ncase 36:return \"BQUOTE_STR\";\nbreak;\ncase 37:this.begin(\"href\");\nbreak;\ncase 38:this.popState();\nbreak;\ncase 39:return 62;\nbreak;\ncase 40:this.begin(\"callback_name\");\nbreak;\ncase 41:this.popState();\nbreak;\ncase 42:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 43:return 60;\nbreak;\ncase 44:this.popState();\nbreak;\ncase 45:return 61;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 51;\nbreak;\ncase 51:return 51;\nbreak;\ncase 52:return 53;\nbreak;\ncase 53:return 53;\nbreak;\ncase 54:return 52;\nbreak;\ncase 55:return 50;\nbreak;\ncase 56:return 54;\nbreak;\ncase 57:return 55;\nbreak;\ncase 58:return 31;\nbreak;\ncase 59:return 38;\nbreak;\ncase 60:return 75;\nbreak;\ncase 61:return 'DOT';\nbreak;\ncase 62:return 'PLUS';\nbreak;\ncase 63:return 72;\nbreak;\ncase 64:return 'EQUALS';\nbreak;\ncase 65:return 'EQUALS';\nbreak;\ncase 66:return 79;\nbreak;\ncase 67:return 'PUNCTUATION';\nbreak;\ncase 68:return 78;\nbreak;\ncase 69:return 77;\nbreak;\ncase 70:return 74;\nbreak;\ncase 71:return 24;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[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: {\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[44,45],\"inclusive\":false},\"callback_name\":{\"rules\":[41,42,43],\"inclusive\":false},\"href\":{\"rules\":[38,39],\"inclusive\":false},\"struct\":{\"rules\":[16,17,18,19,20],\"inclusive\":false},\"generic\":{\"rules\":[29,30],\"inclusive\":false},\"bqstring\":{\"rules\":[35,36],\"inclusive\":false},\"string\":{\"rules\":[32,33],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],\"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,5],$V2=[6,9,11,23,41],$V3=[1,17],$V4=[1,20],$V5=[1,25],$V6=[1,26],$V7=[1,27],$V8=[1,28],$V9=[1,37],$Va=[23,38,39],$Vb=[4,6,9,11,23,41],$Vc=[34,35,36,37],$Vd=[22,29],$Ve=[1,55];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"ALPHANUM\":23,\"attribute\":24,\"attributeType\":25,\"attributeName\":26,\"attributeKeyType\":27,\"attributeComment\":28,\"ATTRIBUTE_WORD\":29,\"ATTRIBUTE_KEY\":30,\"COMMENT\":31,\"cardinality\":32,\"relType\":33,\"ZERO_OR_ONE\":34,\"ZERO_OR_MORE\":35,\"ONE_OR_MORE\":36,\"ONLY_ONE\":37,\"NON_IDENTIFYING\":38,\"IDENTIFYING\":39,\"WORD\":40,\"open_directive\":41,\"type_directive\":42,\"arg_directive\":43,\"close_directive\":44,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"ALPHANUM\",29:\"ATTRIBUTE_WORD\",30:\"ATTRIBUTE_KEY\",31:\"COMMENT\",34:\"ZERO_OR_ONE\",35:\"ZERO_OR_MORE\",36:\"ONE_OR_MORE\",37:\"ONLY_ONE\",38:\"NON_IDENTIFYING\",39:\"IDENTIFYING\",40:\"WORD\",41:\"open_directive\",42:\"type_directive\",43:\"arg_directive\",44:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[24,3],[24,3],[24,4],[25,1],[26,1],[27,1],[28,1],[18,3],[32,1],[32,1],[32,1],[32,1],[33,1],[33,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\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 /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 17:\n this.$ = [$$[$0]]; \nbreak;\ncase 18:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 19:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 20:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 23: case 24: case 25:\n this.$=$$[$0]; \nbreak;\ncase 26:\n this.$=$$[$0].replace(/\"/g, ''); \nbreak;\ncase 27:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 28:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 29:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 31:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 32:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 33:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 34:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 35:\n this.$ = $$[$0]; \nbreak;\ncase 36:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 37:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 38:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 39:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,41:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,41:$V1},{13:8,42:[1,9]},{42:[2,36]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,41:$V1},{1:[2,2]},{14:18,15:[1,19],44:$V4},o([15,44],[2,37]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:21,12:4,17:16,23:$V3,41:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:22,32:24,20:[1,23],34:$V5,35:$V6,36:$V7,37:$V8}),o([6,9,11,15,20,23,34,35,36,37,41],[2,16]),{11:[1,29]},{16:30,43:[1,31]},{11:[2,39]},o($V2,[2,5]),{17:32,23:$V3},{21:33,22:[1,34],24:35,25:36,29:$V9},{33:38,38:[1,39],39:[1,40]},o($Va,[2,28]),o($Va,[2,29]),o($Va,[2,30]),o($Va,[2,31]),o($Vb,[2,9]),{14:41,44:$V4},{44:[2,38]},{15:[1,42]},{22:[1,43]},o($V2,[2,14]),{21:44,22:[2,17],24:35,25:36,29:$V9},{26:45,29:[1,46]},{29:[2,23]},{32:47,34:$V5,35:$V6,36:$V7,37:$V8},o($Vc,[2,32]),o($Vc,[2,33]),{11:[1,48]},{19:49,23:[1,51],40:[1,50]},o($V2,[2,13]),{22:[2,18]},o($Vd,[2,19],{27:52,28:53,30:[1,54],31:$Ve}),o([22,29,30,31],[2,24]),{23:[2,27]},o($Vb,[2,10]),o($V2,[2,12]),o($V2,[2,34]),o($V2,[2,35]),o($Vd,[2,20],{28:56,31:$Ve}),o($Vd,[2,21]),o([22,29,31],[2,25]),o($Vd,[2,26]),o($Vd,[2,22])],\ndefaultActions: {5:[2,36],7:[2,2],20:[2,39],31:[2,38],37:[2,23],44:[2,18],47:[2,27]},\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: this.begin('open_directive'); return 41; \nbreak;\ncase 1: this.begin('type_directive'); return 42; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 44; \nbreak;\ncase 4:return 43;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:return 9;\nbreak;\ncase 10:return 40;\nbreak;\ncase 11:return 4;\nbreak;\ncase 12: this.begin(\"block\"); return 20; \nbreak;\ncase 13:/* skip whitespace in block */\nbreak;\ncase 14:return 30\nbreak;\ncase 15:return 29\nbreak;\ncase 16:return 31;\nbreak;\ncase 17:/* nothing */\nbreak;\ncase 18: this.popState(); return 22; \nbreak;\ncase 19:return yy_.yytext[0];\nbreak;\ncase 20:return 34;\nbreak;\ncase 21:return 35;\nbreak;\ncase 22:return 36;\nbreak;\ncase 23:return 37;\nbreak;\ncase 24:return 34;\nbreak;\ncase 25:return 35;\nbreak;\ncase 26:return 36;\nbreak;\ncase 27:return 38;\nbreak;\ncase 28:return 39;\nbreak;\ncase 29:return 38;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 23;\nbreak;\ncase 32:return yy_.yytext[0];\nbreak;\ncase 33:return 6;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"block\":{\"rules\":[13,14,15,16,17,18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33],\"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,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,59],$Vc=[1,45],$Vd=[1,49],$Ve=[1,33],$Vf=[1,34],$Vg=[1,35],$Vh=[1,36],$Vi=[1,37],$Vj=[1,53],$Vk=[1,60],$Vl=[1,48],$Vm=[1,50],$Vn=[1,52],$Vo=[1,56],$Vp=[1,57],$Vq=[1,38],$Vr=[1,39],$Vs=[1,40],$Vt=[1,41],$Vu=[1,58],$Vv=[1,47],$Vw=[1,51],$Vx=[1,54],$Vy=[1,55],$Vz=[1,46],$VA=[1,63],$VB=[1,68],$VC=[1,20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],$VD=[1,72],$VE=[1,71],$VF=[1,73],$VG=[20,21,23,74,75],$VH=[1,94],$VI=[1,99],$VJ=[1,102],$VK=[1,103],$VL=[1,96],$VM=[1,101],$VN=[1,104],$VO=[1,97],$VP=[1,109],$VQ=[1,108],$VR=[1,98],$VS=[1,100],$VT=[1,105],$VU=[1,106],$VV=[1,107],$VW=[1,110],$VX=[20,21,22,23,74,75],$VY=[20,21,22,23,48,74,75],$VZ=[20,21,22,23,40,47,48,50,52,54,56,58,59,60,62,64,66,67,69,74,75,84,88,98,99,102,104,105,115,116,117,118,119,120],$V_=[20,21,23],$V$=[20,21,23,47,59,60,74,75,84,88,98,99,102,104,105,115,116,117,118,119,120],$V01=[1,12,20,21,22,23,24,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],$V11=[47,59,60,84,88,98,99,102,104,105,115,116,117,118,119,120],$V21=[1,143],$V31=[1,151],$V41=[1,152],$V51=[1,153],$V61=[1,154],$V71=[1,138],$V81=[1,139],$V91=[1,135],$Va1=[1,146],$Vb1=[1,147],$Vc1=[1,148],$Vd1=[1,149],$Ve1=[1,150],$Vf1=[1,155],$Vg1=[1,156],$Vh1=[1,141],$Vi1=[1,144],$Vj1=[1,140],$Vk1=[1,137],$Vl1=[20,21,22,23,38,42,47,59,60,79,80,81,82,83,84,88,98,99,102,104,105,111,112,113,114,115,116,117,118,119,120],$Vm1=[1,159],$Vn1=[20,21,22,23,26,47,59,60,84,98,99,102,104,105,115,116,117,118,119,120],$Vo1=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,60,61,63,65,66,68,70,74,75,79,80,81,82,83,84,85,88,98,99,102,104,105,106,107,115,116,117,118,119,120],$Vp1=[12,21,22,24],$Vq1=[22,99],$Vr1=[1,242],$Vs1=[1,237],$Vt1=[1,238],$Vu1=[1,246],$Vv1=[1,243],$Vw1=[1,240],$Vx1=[1,239],$Vy1=[1,241],$Vz1=[1,244],$VA1=[1,245],$VB1=[1,247],$VC1=[1,265],$VD1=[20,21,23,99],$VE1=[20,21,22,23,59,60,79,95,98,99,102,103,104,105,106];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"link\":44,\"node\":45,\"vertex\":46,\"AMP\":47,\"STYLE_SEPARATOR\":48,\"idString\":49,\"PS\":50,\"PE\":51,\"(-\":52,\"-)\":53,\"STADIUMSTART\":54,\"STADIUMEND\":55,\"SUBROUTINESTART\":56,\"SUBROUTINEEND\":57,\"VERTEX_WITH_PROPS_START\":58,\"ALPHA\":59,\"COLON\":60,\"PIPE\":61,\"CYLINDERSTART\":62,\"CYLINDEREND\":63,\"DIAMOND_START\":64,\"DIAMOND_STOP\":65,\"TAGEND\":66,\"TRAPSTART\":67,\"TRAPEND\":68,\"INVTRAPSTART\":69,\"INVTRAPEND\":70,\"linkStatement\":71,\"arrowText\":72,\"TESTSTR\":73,\"START_LINK\":74,\"LINK\":75,\"textToken\":76,\"STR\":77,\"keywords\":78,\"STYLE\":79,\"LINKSTYLE\":80,\"CLASSDEF\":81,\"CLASS\":82,\"CLICK\":83,\"DOWN\":84,\"UP\":85,\"textNoTags\":86,\"textNoTagsToken\":87,\"DEFAULT\":88,\"stylesOpt\":89,\"alphaNum\":90,\"CALLBACKNAME\":91,\"CALLBACKARGS\":92,\"HREF\":93,\"LINK_TARGET\":94,\"HEX\":95,\"numList\":96,\"INTERPOLATE\":97,\"NUM\":98,\"COMMA\":99,\"style\":100,\"styleComponent\":101,\"MINUS\":102,\"UNIT\":103,\"BRKT\":104,\"DOT\":105,\"PCT\":106,\"TAGSTART\":107,\"alphaNumToken\":108,\"idStringToken\":109,\"alphaNumStatement\":110,\"direction_tb\":111,\"direction_bt\":112,\"direction_rl\":113,\"direction_lr\":114,\"PUNCTUATION\":115,\"UNICODE_TEXT\":116,\"PLUS\":117,\"EQUALS\":118,\"MULT\":119,\"UNDERSCORE\":120,\"graphCodeTokens\":121,\"ARROW_CROSS\":122,\"ARROW_POINT\":123,\"ARROW_CIRCLE\":124,\"ARROW_OPEN\":125,\"QUOTE\":126,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",47:\"AMP\",48:\"STYLE_SEPARATOR\",50:\"PS\",51:\"PE\",52:\"(-\",53:\"-)\",54:\"STADIUMSTART\",55:\"STADIUMEND\",56:\"SUBROUTINESTART\",57:\"SUBROUTINEEND\",58:\"VERTEX_WITH_PROPS_START\",59:\"ALPHA\",60:\"COLON\",61:\"PIPE\",62:\"CYLINDERSTART\",63:\"CYLINDEREND\",64:\"DIAMOND_START\",65:\"DIAMOND_STOP\",66:\"TAGEND\",67:\"TRAPSTART\",68:\"TRAPEND\",69:\"INVTRAPSTART\",70:\"INVTRAPEND\",73:\"TESTSTR\",74:\"START_LINK\",75:\"LINK\",77:\"STR\",79:\"STYLE\",80:\"LINKSTYLE\",81:\"CLASSDEF\",82:\"CLASS\",83:\"CLICK\",84:\"DOWN\",85:\"UP\",88:\"DEFAULT\",91:\"CALLBACKNAME\",92:\"CALLBACKARGS\",93:\"HREF\",94:\"LINK_TARGET\",95:\"HEX\",97:\"INTERPOLATE\",98:\"NUM\",99:\"COMMA\",102:\"MINUS\",103:\"UNIT\",104:\"BRKT\",105:\"DOT\",106:\"PCT\",107:\"TAGSTART\",111:\"direction_tb\",112:\"direction_bt\",113:\"direction_rl\",114:\"direction_lr\",115:\"PUNCTUATION\",116:\"UNICODE_TEXT\",117:\"PLUS\",118:\"EQUALS\",119:\"MULT\",120:\"UNDERSCORE\",122:\"ARROW_CROSS\",123:\"ARROW_POINT\",124:\"ARROW_CIRCLE\",125:\"ARROW_OPEN\",126:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,6],[46,4],[46,4],[46,4],[46,8],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[71,1],[72,3],[39,1],[39,2],[39,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[78,1],[86,1],[86,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[96,1],[96,3],[89,1],[89,3],[100,1],[100,2],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[101,1],[76,1],[76,1],[76,1],[76,1],[76,1],[76,1],[87,1],[87,1],[87,1],[87,1],[49,1],[49,2],[90,1],[90,2],[110,1],[110,1],[110,1],[110,1],[43,1],[43,1],[43,1],[43,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,1],[121,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 yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 78: case 80: case 92: case 148: case 150: case 151:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 48:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 49:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 50:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 51:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 52:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 54:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 56:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 60:\nthis.$ = $$[$0-7];yy.addVertex($$[$0-7],$$[$0-1],'rect',undefined,undefined,undefined, Object.fromEntries([[$$[$0-5], $$[$0-3]]]));\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 64:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 70:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 71:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 72: case 73:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 74:\nthis.$ = $$[$0];\nbreak;\ncase 75:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 76:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 77:\nthis.$ = $$[$0-1];\nbreak;\ncase 79: case 93: case 149:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 94: case 95:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 96:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 97: case 105:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 98: case 106:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 99:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 100:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 101: case 107:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 103: case 109:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 104: case 110:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 111:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 112: case 114:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 113:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 115:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 118:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 119: case 121:\nthis.$ = [$$[$0]]\nbreak;\ncase 120: case 122:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 124:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 146:\nthis.$=$$[$0]\nbreak;\ncase 147:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 152:\nthis.$='v';\nbreak;\ncase 153:\nthis.$='-';\nbreak;\ncase 154:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 155:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 156:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 157:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,45:32,46:42,47:$Vb,49:43,59:$Vc,60:$Vd,79:$Ve,80:$Vf,81:$Vg,82:$Vh,83:$Vi,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},{8:61,10:[1,62],15:$VA},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,65],21:[1,66],22:$VB,27:64,30:67},o($VC,[2,11]),o($VC,[2,12]),o($VC,[2,13]),o($VC,[2,14]),o($VC,[2,15]),o($VC,[2,16]),{9:69,20:$VD,21:$VE,23:$VF,44:70,71:74,74:[1,75],75:[1,76]},{9:77,20:$VD,21:$VE,23:$VF},{9:78,20:$VD,21:$VE,23:$VF},{9:79,20:$VD,21:$VE,23:$VF},{9:80,20:$VD,21:$VE,23:$VF},{9:81,20:$VD,21:$VE,23:$VF},{9:83,20:$VD,21:$VE,22:[1,82],23:$VF},o($VC,[2,44]),o($VG,[2,51],{30:84,22:$VB}),{22:[1,85]},{22:[1,86]},{22:[1,87]},{22:[1,88]},{26:$VH,47:$VI,59:$VJ,60:$VK,77:[1,92],84:$VL,90:91,91:[1,89],93:[1,90],98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($VC,[2,154]),o($VC,[2,155]),o($VC,[2,156]),o($VC,[2,157]),o($VX,[2,52],{48:[1,111]}),o($VY,[2,70],{109:123,40:[1,112],47:$Vb,50:[1,113],52:[1,114],54:[1,115],56:[1,116],58:[1,117],59:$Vc,60:$Vd,62:[1,118],64:[1,119],66:[1,120],67:[1,121],69:[1,122],84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz}),o($VZ,[2,146]),o($VZ,[2,171]),o($VZ,[2,172]),o($VZ,[2,173]),o($VZ,[2,174]),o($VZ,[2,175]),o($VZ,[2,176]),o($VZ,[2,177]),o($VZ,[2,178]),o($VZ,[2,179]),o($VZ,[2,180]),o($VZ,[2,181]),o($VZ,[2,182]),o($VZ,[2,183]),o($VZ,[2,184]),o($VZ,[2,185]),o($VZ,[2,186]),{9:124,20:$VD,21:$VE,23:$VF},{11:125,14:[1,126]},o($V_,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,127]},o($V$,[2,34],{30:128,22:$VB}),o($VC,[2,35]),{45:129,46:42,47:$Vb,49:43,59:$Vc,60:$Vd,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},o($V01,[2,45]),o($V01,[2,46]),o($V01,[2,47]),o($V11,[2,74],{72:130,61:[1,132],73:[1,131]}),{22:$V21,24:$V31,26:$V41,38:$V51,39:133,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o([47,59,60,61,73,84,88,98,99,102,104,105,115,116,117,118,119,120],[2,76]),o($VC,[2,36]),o($VC,[2,37]),o($VC,[2,38]),o($VC,[2,39]),o($VC,[2,40]),{22:$V21,24:$V31,26:$V41,38:$V51,39:157,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($Vl1,$V5,{17:158}),o($VG,[2,50],{47:$Vm1}),{26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,90:160,95:[1,161],98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{88:[1,162],96:163,98:[1,164]},{26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,88:[1,165],90:166,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,90:167,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($V_,[2,97],{22:[1,168],92:[1,169]}),o($V_,[2,101],{22:[1,170]}),o($V_,[2,105],{108:95,110:172,22:[1,171],26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW}),o($V_,[2,107],{22:[1,173]}),o($Vn1,[2,148]),o($Vn1,[2,150]),o($Vn1,[2,151]),o($Vn1,[2,152]),o($Vn1,[2,153]),o($Vo1,[2,158]),o($Vo1,[2,159]),o($Vo1,[2,160]),o($Vo1,[2,161]),o($Vo1,[2,162]),o($Vo1,[2,163]),o($Vo1,[2,164]),o($Vo1,[2,165]),o($Vo1,[2,166]),o($Vo1,[2,167]),o($Vo1,[2,168]),o($Vo1,[2,169]),o($Vo1,[2,170]),{47:$Vb,49:174,59:$Vc,60:$Vd,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},{22:$V21,24:$V31,26:$V41,38:$V51,39:175,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:177,42:$V61,47:$VI,50:[1,176],59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:178,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:179,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:180,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{59:[1,181]},{22:$V21,24:$V31,26:$V41,38:$V51,39:182,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:183,42:$V61,47:$VI,59:$VJ,60:$VK,64:[1,184],66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:185,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:186,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:187,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($VZ,[2,147]),o($Vp1,[2,3]),{8:188,15:$VA},{15:[2,7]},o($V4,[2,28]),o($V$,[2,33]),o($VG,[2,48],{30:189,22:$VB}),o($V11,[2,71],{22:[1,190]}),{22:[1,191]},{22:$V21,24:$V31,26:$V41,38:$V51,39:192,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,75:[1,193],76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($Vo1,[2,78]),o($Vo1,[2,80]),o($Vo1,[2,136]),o($Vo1,[2,137]),o($Vo1,[2,138]),o($Vo1,[2,139]),o($Vo1,[2,140]),o($Vo1,[2,141]),o($Vo1,[2,142]),o($Vo1,[2,143]),o($Vo1,[2,144]),o($Vo1,[2,145]),o($Vo1,[2,81]),o($Vo1,[2,82]),o($Vo1,[2,83]),o($Vo1,[2,84]),o($Vo1,[2,85]),o($Vo1,[2,86]),o($Vo1,[2,87]),o($Vo1,[2,88]),o($Vo1,[2,89]),o($Vo1,[2,90]),o($Vo1,[2,91]),{9:196,20:$VD,21:$VE,22:$V21,23:$VF,24:$V31,26:$V41,38:$V51,40:[1,195],42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,197],43:31,45:32,46:42,47:$Vb,49:43,59:$Vc,60:$Vd,79:$Ve,80:$Vf,81:$Vg,82:$Vh,83:$Vi,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},{22:$VB,30:198},{22:[1,199],26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:172,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:[1,200]},{22:[1,201]},{22:[1,202],99:[1,203]},o($Vq1,[2,119]),{22:[1,204]},{22:[1,205],26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:172,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:[1,206],26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:172,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{77:[1,207]},o($V_,[2,99],{22:[1,208]}),{77:[1,209],94:[1,210]},{77:[1,211]},o($Vn1,[2,149]),{77:[1,212],94:[1,213]},o($VX,[2,54],{109:123,47:$Vb,59:$Vc,60:$Vd,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,214],42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:215,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,51:[1,216],59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,53:[1,217],59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,55:[1,218],59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,57:[1,219],59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{60:[1,220]},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,63:[1,221],66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,65:[1,222],66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,39:223,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,224],42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,68:[1,225],70:[1,226],74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,68:[1,228],70:[1,227],74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{9:229,20:$VD,21:$VE,23:$VF},o($VG,[2,49],{47:$Vm1}),o($V11,[2,73]),o($V11,[2,72]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,61:[1,230],66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($V11,[2,75]),o($Vo1,[2,79]),{22:$V21,24:$V31,26:$V41,38:$V51,39:231,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($Vl1,$V5,{17:232}),o($VC,[2,43]),{46:233,47:$Vb,49:43,59:$Vc,60:$Vd,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:234,95:$Vv1,98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:248,95:$Vv1,98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:249,95:$Vv1,97:[1,250],98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:251,95:$Vv1,97:[1,252],98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{98:[1,253]},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:254,95:$Vv1,98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:255,95:$Vv1,98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,90:256,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($V_,[2,98]),{77:[1,257]},o($V_,[2,102],{22:[1,258]}),o($V_,[2,103]),o($V_,[2,106]),o($V_,[2,108],{22:[1,259]}),o($V_,[2,109]),o($VY,[2,55]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,51:[1,260],59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($VY,[2,62]),o($VY,[2,57]),o($VY,[2,58]),o($VY,[2,59]),{59:[1,261]},o($VY,[2,61]),o($VY,[2,63]),{22:$V21,24:$V31,26:$V41,38:$V51,42:$V61,47:$VI,59:$VJ,60:$VK,65:[1,262],66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($VY,[2,65]),o($VY,[2,66]),o($VY,[2,68]),o($VY,[2,67]),o($VY,[2,69]),o($Vp1,[2,4]),o([22,47,59,60,84,88,98,99,102,104,105,115,116,117,118,119,120],[2,77]),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,263],42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,264],43:31,45:32,46:42,47:$Vb,49:43,59:$Vc,60:$Vd,79:$Ve,80:$Vf,81:$Vg,82:$Vh,83:$Vi,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},o($VX,[2,53]),o($V_,[2,111],{99:$VC1}),o($VD1,[2,121],{101:266,22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,95:$Vv1,98:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1}),o($VE1,[2,123]),o($VE1,[2,125]),o($VE1,[2,126]),o($VE1,[2,127]),o($VE1,[2,128]),o($VE1,[2,129]),o($VE1,[2,130]),o($VE1,[2,131]),o($VE1,[2,132]),o($VE1,[2,133]),o($VE1,[2,134]),o($VE1,[2,135]),o($V_,[2,112],{99:$VC1}),o($V_,[2,113],{99:$VC1}),{22:[1,267]},o($V_,[2,114],{99:$VC1}),{22:[1,268]},o($Vq1,[2,120]),o($V_,[2,94],{99:$VC1}),o($V_,[2,95],{99:$VC1}),o($V_,[2,96],{108:95,110:172,26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW}),o($V_,[2,100]),{94:[1,269]},{94:[1,270]},{51:[1,271]},{61:[1,272]},{65:[1,273]},{9:274,20:$VD,21:$VE,23:$VF},o($VC,[2,42]),{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,95:$Vv1,98:$Vw1,100:275,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},o($VE1,[2,124]),{26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,90:276,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,90:277,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,108:95,110:93,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($V_,[2,104]),o($V_,[2,110]),o($VY,[2,56]),{22:$V21,24:$V31,26:$V41,38:$V51,39:278,42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:134,77:$V91,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},o($VY,[2,64]),o($Vl1,$V5,{17:279}),o($VD1,[2,122],{101:266,22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,95:$Vv1,98:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1}),o($V_,[2,117],{108:95,110:172,22:[1,280],26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW}),o($V_,[2,118],{108:95,110:172,22:[1,281],26:$VH,47:$VI,59:$VJ,60:$VK,84:$VL,98:$VM,99:$VN,102:$VO,104:$VP,105:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW}),{22:$V21,24:$V31,26:$V41,38:$V51,41:[1,282],42:$V61,47:$VI,59:$VJ,60:$VK,66:$V71,74:$V81,76:194,78:145,79:$Va1,80:$Vb1,81:$Vc1,82:$Vd1,83:$Ve1,84:$Vf1,85:$Vg1,87:136,88:$Vh1,98:$VM,99:$VN,102:$Vi1,104:$VP,105:$VQ,106:$Vj1,107:$Vk1,108:142,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV,120:$VW},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,283],43:31,45:32,46:42,47:$Vb,49:43,59:$Vc,60:$Vd,79:$Ve,80:$Vf,81:$Vg,82:$Vh,83:$Vi,84:$Vj,88:$Vk,98:$Vl,99:$Vm,102:$Vn,104:$Vo,105:$Vp,109:44,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy,120:$Vz},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:284,95:$Vv1,98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},{22:$Vr1,59:$Vs1,60:$Vt1,79:$Vu1,89:285,95:$Vv1,98:$Vw1,100:235,101:236,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1,106:$VB1},o($VY,[2,60]),o($VC,[2,41]),o($V_,[2,115],{99:$VC1}),o($V_,[2,116],{99:$VC1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],126:[2,7]},\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: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:this.begin(\"string\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:return \"STR\";\nbreak;\ncase 10:return 79;\nbreak;\ncase 11:return 88;\nbreak;\ncase 12:return 80;\nbreak;\ncase 13:return 97;\nbreak;\ncase 14:return 81;\nbreak;\ncase 15:return 82;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 93;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 91;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 92;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 83;\nbreak;\ncase 28:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 29:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 94;\nbreak;\ncase 33:return 94;\nbreak;\ncase 34:return 94;\nbreak;\ncase 35:return 94;\nbreak;\ncase 36: this.popState(); return 25; \nbreak;\ncase 37: this.popState(); return 26; \nbreak;\ncase 38: this.popState(); return 26; \nbreak;\ncase 39: this.popState(); return 26; \nbreak;\ncase 40: this.popState(); return 26; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47:return 111;\nbreak;\ncase 48:return 112;\nbreak;\ncase 49:return 113;\nbreak;\ncase 50:return 114;\nbreak;\ncase 51: return 98;\nbreak;\ncase 52:return 104;\nbreak;\ncase 53:return 48;\nbreak;\ncase 54:return 60;\nbreak;\ncase 55:return 47;\nbreak;\ncase 56:return 20;\nbreak;\ncase 57:return 99;\nbreak;\ncase 58:return 119;\nbreak;\ncase 59:return 75;\nbreak;\ncase 60:return 75;\nbreak;\ncase 61:return 75;\nbreak;\ncase 62:return 74;\nbreak;\ncase 63:return 74;\nbreak;\ncase 64:return 74;\nbreak;\ncase 65:return 52;\nbreak;\ncase 66:return 53;\nbreak;\ncase 67:return 54;\nbreak;\ncase 68:return 55;\nbreak;\ncase 69:return 56;\nbreak;\ncase 70:return 57;\nbreak;\ncase 71:return 58;\nbreak;\ncase 72:return 62;\nbreak;\ncase 73:return 63;\nbreak;\ncase 74:return 102;\nbreak;\ncase 75:return 105;\nbreak;\ncase 76:return 120;\nbreak;\ncase 77:return 117;\nbreak;\ncase 78:return 106;\nbreak;\ncase 79:return 118;\nbreak;\ncase 80:return 118;\nbreak;\ncase 81:return 107;\nbreak;\ncase 82:return 66;\nbreak;\ncase 83:return 85;\nbreak;\ncase 84:return 'SEP';\nbreak;\ncase 85:return 84;\nbreak;\ncase 86:return 59;\nbreak;\ncase 87:return 68;\nbreak;\ncase 88:return 67;\nbreak;\ncase 89:return 70;\nbreak;\ncase 90:return 69;\nbreak;\ncase 91:return 115;\nbreak;\ncase 92:return 116;\nbreak;\ncase 93:return 61;\nbreak;\ncase 94:return 50;\nbreak;\ncase 95:return 51;\nbreak;\ncase 96:return 40;\nbreak;\ncase 97:return 41;\nbreak;\ncase 98:return 64\nbreak;\ncase 99:return 65\nbreak;\ncase 100:return 126;\nbreak;\ncase 101:return 21;\nbreak;\ncase 102:return 22;\nbreak;\ncase 103:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\|)/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[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])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[23,24],\"inclusive\":false},\"callbackname\":{\"rules\":[20,21,22],\"inclusive\":false},\"href\":{\"rules\":[17,18],\"inclusive\":false},\"click\":{\"rules\":[26,27],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":false},\"string\":{\"rules\":[8,9],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],\"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,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,25],$Vd=[1,27],$Ve=[1,30],$Vf=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"section\":20,\"clickStatement\":21,\"taskTxt\":22,\"taskData\":23,\"openDirective\":24,\"typeDirective\":25,\"closeDirective\":26,\":\":27,\"argDirective\":28,\"click\":29,\"callbackname\":30,\"callbackargs\":31,\"href\":32,\"clickStatementDebug\":33,\"open_directive\":34,\"type_directive\":35,\"arg_directive\":36,\"close_directive\":37,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"section\",22:\"taskTxt\",23:\"taskData\",27:\":\",29:\"click\",30:\"callbackname\",31:\"callbackargs\",32:\"href\",34:\"open_directive\",35:\"type_directive\",36:\"arg_directive\",37:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,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 return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 19:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 24:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 25:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 28:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 29:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 30: case 36:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 31: case 32: case 34:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 33: case 35:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 37:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 38:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 39:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 40:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,24:4,34:$V1},{1:[3]},{3:6,4:2,5:$V0,24:4,34:$V1},o($V2,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},{26:28,27:[1,29],37:$Ve},o([27,37],[2,38]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:26,10:31,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),{23:[1,32]},o($V2,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},o($V2,[2,5]),o($V2,[2,19]),o($V2,[2,23],{31:[1,38],32:[1,39]}),o($V2,[2,29],{30:[1,40]}),o($Vf,[2,21]),{26:41,37:$Ve},{37:[2,39]},o($V2,[2,24],{32:[1,42]}),o($V2,[2,25]),o($V2,[2,27],{31:[1,43]}),{11:[1,44]},o($V2,[2,26]),o($V2,[2,28]),o($Vf,[2,22])],\ndefaultActions: {5:[2,37],6:[2,1],30:[2,40],37:[2,39]},\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: this.begin('open_directive'); return 34; \nbreak;\ncase 1: this.begin('type_directive'); return 35; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 27; \nbreak;\ncase 3: this.popState(); this.popState(); return 37; \nbreak;\ncase 4:return 36;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 32;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 31;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 29;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 17;\nbreak;\ncase 30:return 16;\nbreak;\ncase 31:return 18;\nbreak;\ncase 32:return 'date';\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 20;\nbreak;\ncase 35:return 22;\nbreak;\ncase 36:return 23;\nbreak;\ncase 37:return 27;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\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: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"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=[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]*[-_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=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\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 yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\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 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"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,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,20,21,22,23],$V6=[2,5],$V7=[1,6,11,13,20,21,22,23],$V8=[20,21,22],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,24],$Vd=[6,20,21,22,23];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"openDirective\":15,\"typeDirective\":16,\"closeDirective\":17,\":\":18,\"argDirective\":19,\"NEWLINE\":20,\";\":21,\"EOF\":22,\"open_directive\":23,\"type_directive\":24,\"arg_directive\":25,\"close_directive\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",18:\":\",20:\"NEWLINE\",21:\";\",22:\"EOF\",23:\"open_directive\",24:\"type_directive\",25:\"arg_directive\",26:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[15,1],[16,1],[19,1],[17,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 18:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 19:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 20:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},{3:11,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,14]),o($V7,[2,15]),o($V7,[2,16]),{16:14,24:[1,15]},{24:[2,17]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{15:8,9:16,10:17,5:20,1:[2,3],11:$Va,13:$Vb,23:$V4}),o($V5,$V6,{7:21}),{17:22,18:[1,23],26:$Vc},o([18,26],[2,18]),o($V5,[2,6]),{4:25,20:$V1,21:$V2,22:$V3},{12:[1,26]},{14:[1,27]},o($V8,[2,11]),o($V8,$V9,{15:8,9:16,10:17,5:20,1:[2,4],11:$Va,13:$Vb,23:$V4}),o($Vd,[2,12]),{19:28,25:[1,29]},o($Vd,[2,20]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),{17:30,26:$Vc},{26:[2,19]},o($Vd,[2,13])],\ndefaultActions: {9:[2,17],10:[2,1],11:[2,2],29:[2,19]},\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: this.begin('open_directive'); return 23; \nbreak;\ncase 1: this.begin('type_directive'); return 24; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 18; \nbreak;\ncase 3: this.popState(); this.popState(); return 26; \nbreak;\ncase 4:return 25;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"string\"); \nbreak;\ncase 13: this.popState(); \nbreak;\ncase 14: return \"txt\"; \nbreak;\ncase 15:return 6;\nbreak;\ncase 16:return 8;\nbreak;\ncase 17:return \"value\";\nbreak;\ncase 18:return 22;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,15,16,17,18],\"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,3],$V1=[1,5],$V2=[1,17],$V3=[2,10],$V4=[1,21],$V5=[1,22],$V6=[1,23],$V7=[1,24],$V8=[1,25],$V9=[1,26],$Va=[1,19],$Vb=[1,27],$Vc=[1,28],$Vd=[1,31],$Ve=[66,67],$Vf=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],$Vg=[5,6,8,14,35,36,37,38,39,40,48,66,67],$Vh=[1,51],$Vi=[1,52],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[1,56],$Vn=[1,57],$Vo=[57,58],$Vp=[1,69],$Vq=[1,65],$Vr=[1,66],$Vs=[1,67],$Vt=[1,68],$Vu=[1,70],$Vv=[1,74],$Vw=[1,75],$Vx=[1,72],$Vy=[1,73],$Vz=[5,8,14,35,36,37,38,39,40,48,66,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"open_directive\":14,\"type_directive\":15,\"arg_directive\":16,\"close_directive\":17,\"requirementDef\":18,\"elementDef\":19,\"relationshipDef\":20,\"requirementType\":21,\"requirementName\":22,\"STRUCT_START\":23,\"requirementBody\":24,\"ID\":25,\"COLONSEP\":26,\"id\":27,\"TEXT\":28,\"text\":29,\"RISK\":30,\"riskLevel\":31,\"VERIFYMTHD\":32,\"verifyType\":33,\"STRUCT_STOP\":34,\"REQUIREMENT\":35,\"FUNCTIONAL_REQUIREMENT\":36,\"INTERFACE_REQUIREMENT\":37,\"PERFORMANCE_REQUIREMENT\":38,\"PHYSICAL_REQUIREMENT\":39,\"DESIGN_CONSTRAINT\":40,\"LOW_RISK\":41,\"MED_RISK\":42,\"HIGH_RISK\":43,\"VERIFY_ANALYSIS\":44,\"VERIFY_DEMONSTRATION\":45,\"VERIFY_INSPECTION\":46,\"VERIFY_TEST\":47,\"ELEMENT\":48,\"elementName\":49,\"elementBody\":50,\"TYPE\":51,\"type\":52,\"DOCREF\":53,\"ref\":54,\"END_ARROW_L\":55,\"relationship\":56,\"LINE\":57,\"END_ARROW_R\":58,\"CONTAINS\":59,\"COPIES\":60,\"DERIVES\":61,\"SATISFIES\":62,\"VERIFIES\":63,\"REFINES\":64,\"TRACES\":65,\"unqString\":66,\"qString\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"open_directive\",15:\"type_directive\",16:\"arg_directive\",17:\"close_directive\",23:\"STRUCT_START\",25:\"ID\",26:\"COLONSEP\",28:\"TEXT\",30:\"RISK\",32:\"VERIFYMTHD\",34:\"STRUCT_STOP\",35:\"REQUIREMENT\",36:\"FUNCTIONAL_REQUIREMENT\",37:\"INTERFACE_REQUIREMENT\",38:\"PERFORMANCE_REQUIREMENT\",39:\"PHYSICAL_REQUIREMENT\",40:\"DESIGN_CONSTRAINT\",41:\"LOW_RISK\",42:\"MED_RISK\",43:\"HIGH_RISK\",44:\"VERIFY_ANALYSIS\",45:\"VERIFY_DEMONSTRATION\",46:\"VERIFY_INSPECTION\",47:\"VERIFY_TEST\",48:\"ELEMENT\",51:\"TYPE\",53:\"DOCREF\",55:\"END_ARROW_L\",57:\"LINE\",58:\"END_ARROW_R\",59:\"CONTAINS\",60:\"COPIES\",61:\"DERIVES\",62:\"SATISFIES\",63:\"VERIFIES\",64:\"REFINES\",65:\"TRACES\",66:\"unqString\",67:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 7:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 8:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 9:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 10:\n this.$ = [] \nbreak;\ncase 16:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 17:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 18:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 19:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 20:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 23:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 24:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 25:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 29:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 30:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 31:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 32:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 33:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 34:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 36:\n yy.addElement($$[$0-3]) \nbreak;\ncase 37:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 38:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 41:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 42:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 43:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 44:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 45:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 46:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 47:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 49:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1},{1:[3]},{3:7,4:2,5:[1,6],6:$V0,9:4,14:$V1},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:$V0,9:4,14:$V1},{1:[2,2]},{4:16,5:$V2,7:12,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{11:29,12:[1,30],17:$Vd},o([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:$V2,7:33,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:34,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:35,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:36,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:37,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},o($Ve,[2,23]),o($Ve,[2,24]),o($Ve,[2,25]),o($Ve,[2,26]),o($Ve,[2,27]),o($Ve,[2,28]),o($Vf,[2,52]),o($Vf,[2,53]),o($Vg,[2,4]),{13:46,16:[1,47]},o($Vg,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{56:58,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{11:59,17:$Vd},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},o($Vo,[2,43]),o($Vo,[2,44]),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),o($Vo,[2,48]),o($Vo,[2,49]),{58:[1,63]},o($Vg,[2,5]),{5:$Vp,24:64,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:71,51:$Vx,53:$Vy},{27:76,66:$Vb,67:$Vc},{27:77,66:$Vb,67:$Vc},o($Vz,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:$Vp,24:82,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},o($Vz,[2,22]),o($Vz,[2,36]),{26:[1,83]},{26:[1,84]},{5:$Vv,34:$Vw,50:85,51:$Vx,53:$Vy},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),{27:86,66:$Vb,67:$Vc},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},o($Vz,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},o($Vz,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:$Vp,24:111,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:112,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:113,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:114,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:115,51:$Vx,53:$Vy},{5:$Vv,34:$Vw,50:116,51:$Vx,53:$Vy},o($Vz,[2,17]),o($Vz,[2,18]),o($Vz,[2,19]),o($Vz,[2,20]),o($Vz,[2,37]),o($Vz,[2,38])],\ndefaultActions: {5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},\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: this.begin('open_directive'); return 14; \nbreak;\ncase 1: this.begin('type_directive'); return 15; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 17; \nbreak;\ncase 4:return 16;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 8;\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 23;\nbreak;\ncase 12:return 34;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 25;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 30;\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 35;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 59;\nbreak;\ncase 33:return 60;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 51;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 55;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44: this.begin(\"string\"); \nbreak;\ncase 45: this.popState(); \nbreak;\ncase 46: return \"qString\"; \nbreak;\ncase 47: yy_.yytext = yy_.yytext.trim(); return 66;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[45,46],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,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,47],\"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,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,45],$Vp=[1,4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],$Vq=[1,58],$Vr=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,42,46,47,48,49,57,67],$Vs=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,41,42,46,47,48,49,57,67],$Vt=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,42,46,47,48,49,57,67],$Vu=[55,56,57],$Vv=[1,4,5,7,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"activate\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"text2\":31,\"loop\":32,\"end\":33,\"rect\":34,\"opt\":35,\"alt\":36,\"else_sections\":37,\"par\":38,\"par_sections\":39,\"and\":40,\"else\":41,\"note\":42,\"placement\":43,\"over\":44,\"actor_pair\":45,\"links\":46,\"link\":47,\"properties\":48,\"details\":49,\"spaceList\":50,\",\":51,\"left_of\":52,\"right_of\":53,\"signaltype\":54,\"+\":55,\"-\":56,\"ACTOR\":57,\"SOLID_OPEN_ARROW\":58,\"DOTTED_OPEN_ARROW\":59,\"SOLID_ARROW\":60,\"DOTTED_ARROW\":61,\"SOLID_CROSS\":62,\"DOTTED_CROSS\":63,\"SOLID_POINT\":64,\"DOTTED_POINT\":65,\"TXT\":66,\"open_directive\":67,\"type_directive\":68,\"arg_directive\":69,\"close_directive\":70,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"activate\",24:\"deactivate\",30:\"title\",32:\"loop\",33:\"end\",34:\"rect\",35:\"opt\",36:\"alt\",38:\"par\",40:\"and\",41:\"else\",42:\"note\",44:\"over\",46:\"links\",47:\"link\",48:\"properties\",49:\"details\",51:\",\",52:\"left_of\",53:\"right_of\",55:\"+\",56:\"-\",57:\"ACTOR\",58:\"SOLID_OPEN_ARROW\",59:\"DOTTED_OPEN_ARROW\",60:\"SOLID_ARROW\",61:\"DOTTED_ARROW\",62:\"SOLID_CROSS\",63:\"DOTTED_CROSS\",64:\"SOLID_POINT\",65:\"DOTTED_POINT\",66:\"TXT\",67:\"open_directive\",68:\"type_directive\",69:\"arg_directive\",70:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[39,1],[39,4],[37,1],[37,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[50,2],[50,1],[45,3],[45,1],[43,1],[43,1],[21,5],[21,5],[21,4],[17,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[31,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\nyy.enableSequenceNumbers()\nbreak;\ncase 18:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 25:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 26:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$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 27:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 28:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 29:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$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 30:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$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 33:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 35:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 36:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 37:\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 38:\n\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 39:\n\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 40:\n\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 41:\n\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\n \nbreak;\ncase 44:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 45:\n this.$ = $$[$0]; \nbreak;\ncase 46:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 47:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 48:\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 49:\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 50:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 51:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 52:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 53:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 60:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 61:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 62:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 63:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 64:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},o([1,4,5,16,20,22,23,24,30,32,34,35,36,38,42,46,47,48,49,57,67],$V4,{8:11}),{12:12,68:[1,13]},{68:[2,61]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{13:43,14:[1,44],70:$Vo},o([14,70],[2,62]),o($Vp,[2,6]),{6:35,10:46,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},o($Vp,[2,8]),o($Vp,[2,9]),{17:47,57:$Vn},{17:48,57:$Vn},{5:[1,49]},o($Vp,[2,17]),{17:50,57:$Vn},{17:51,57:$Vn},{5:[1,52]},{5:[1,53]},{5:[1,54]},{5:[1,55]},{5:[1,56]},{31:57,66:$Vq},{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vp,[2,31]),{54:64,58:[1,65],59:[1,66],60:[1,67],61:[1,68],62:[1,69],63:[1,70],64:[1,71],65:[1,72]},{43:73,44:[1,74],52:[1,75],53:[1,76]},{17:77,57:$Vn},{17:78,57:$Vn},{17:79,57:$Vn},{17:80,57:$Vn},o([5,18,51,58,59,60,61,62,63,64,65,66],[2,51]),{5:[1,81]},{15:82,69:[1,83]},{5:[2,64]},o($Vp,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vp,[2,16]),{5:[1,88]},{5:[1,89]},o($Vp,[2,20]),o($Vp,[2,21]),o($Vp,[2,22]),o($Vp,[2,23]),o($Vp,[2,24]),{5:[1,90]},{5:[2,60]},o($Vr,$V4,{8:91}),o($Vr,$V4,{8:92}),o($Vr,$V4,{8:93}),o($Vs,$V4,{37:94,8:95}),o($Vt,$V4,{39:96,8:97}),{17:100,55:[1,98],56:[1,99],57:$Vn},o($Vu,[2,52]),o($Vu,[2,53]),o($Vu,[2,54]),o($Vu,[2,55]),o($Vu,[2,56]),o($Vu,[2,57]),o($Vu,[2,58]),o($Vu,[2,59]),{17:101,57:$Vn},{17:103,45:102,57:$Vn},{57:[2,46]},{57:[2,47]},{31:104,66:$Vq},{31:105,66:$Vq},{31:106,66:$Vq},{31:107,66:$Vq},o($Vv,[2,10]),{13:108,70:$Vo},{70:[2,63]},{19:[1,109]},o($Vp,[2,13]),{19:[1,110]},o($Vp,[2,15]),o($Vp,[2,18]),o($Vp,[2,19]),o($Vp,[2,25]),{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,111],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,112],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,113],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{33:[1,114]},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[2,34],34:$Ve,35:$Vf,36:$Vg,38:$Vh,41:[1,115],42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{33:[1,116]},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[2,32],34:$Ve,35:$Vf,36:$Vg,38:$Vh,40:[1,117],42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{17:118,57:$Vn},{17:119,57:$Vn},{31:120,66:$Vq},{31:121,66:$Vq},{31:122,66:$Vq},{51:[1,123],66:[2,45]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vp,[2,26]),o($Vp,[2,27]),o($Vp,[2,28]),o($Vp,[2,29]),{19:[1,127]},o($Vp,[2,30]),{19:[1,128]},{31:129,66:$Vq},{31:130,66:$Vq},{5:[2,50]},{5:[2,36]},{5:[2,37]},{17:131,57:$Vn},o($Vv,[2,11]),o($Vp,[2,12]),o($Vp,[2,14]),o($Vs,$V4,{8:95,37:132}),o($Vt,$V4,{8:97,39:133}),{5:[2,48]},{5:[2,49]},{66:[2,44]},{33:[2,35]},{33:[2,33]}],\ndefaultActions: {7:[2,61],8:[2,1],9:[2,2],10:[2,3],45:[2,64],58:[2,60],75:[2,46],76:[2,47],83:[2,63],104:[2,38],105:[2,39],106:[2,40],107:[2,41],120:[2,50],121:[2,36],122:[2,37],129:[2,48],130:[2,49],131:[2,44],132:[2,35],133:[2,33]},\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: this.begin('open_directive'); return 67; \nbreak;\ncase 1: this.begin('type_directive'); return 68; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 70; \nbreak;\ncase 4:return 69;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: this.begin('ID'); return 20; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 57; \nbreak;\ncase 14: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 15: this.popState(); this.popState(); return 5; \nbreak;\ncase 16: this.begin('LINE'); return 32; \nbreak;\ncase 17: this.begin('LINE'); return 34; \nbreak;\ncase 18: this.begin('LINE'); return 35; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 41; \nbreak;\ncase 21: this.begin('LINE'); return 38; \nbreak;\ncase 22: this.begin('LINE'); return 40; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 33;\nbreak;\ncase 25:return 52;\nbreak;\ncase 26:return 53;\nbreak;\ncase 27:return 46;\nbreak;\ncase 28:return 47;\nbreak;\ncase 29:return 48;\nbreak;\ncase 30:return 49;\nbreak;\ncase 31:return 44;\nbreak;\ncase 32:return 42;\nbreak;\ncase 33: this.begin('ID'); return 23; \nbreak;\ncase 34: this.begin('ID'); return 24; \nbreak;\ncase 35:return 30;\nbreak;\ncase 36:return 7;\nbreak;\ncase 37:return 22;\nbreak;\ncase 38:return 51;\nbreak;\ncase 39:return 5;\nbreak;\ncase 40: yy_.yytext = yy_.yytext.trim(); return 57; \nbreak;\ncase 41:return 60;\nbreak;\ncase 42:return 61;\nbreak;\ncase 43:return 58;\nbreak;\ncase 44:return 59;\nbreak;\ncase 45:return 62;\nbreak;\ncase 46:return 63;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 55;\nbreak;\ncase 51:return 56;\nbreak;\ncase 52:return 5;\nbreak;\ncase 53:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,13],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,14,15],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,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],\"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,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,30],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,32],$Vi=[1,33],$Vj=[1,34],$Vk=[1,35],$Vl=[1,31],$Vm=[1,38],$Vn=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vo=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vp=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vq=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"openDirective\":31,\"typeDirective\":32,\"closeDirective\":33,\":\":34,\"argDirective\":35,\"direction_tb\":36,\"direction_bt\":37,\"direction_rl\":38,\"direction_lr\":39,\"eol\":40,\";\":41,\"EDGE_STATE\":42,\"left_of\":43,\"right_of\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",34:\":\",36:\"direction_tb\",37:\"direction_bt\",38:\"direction_rl\",39:\"direction_lr\",41:\";\",42:\"EDGE_STATE\",43:\"left_of\",44:\"right_of\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 17:\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\n \nbreak;\ncase 23:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 24:\n\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 30:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 31:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 32:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 33:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 36: case 37:\nthis.$=$$[$0];\nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],$V4,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},{33:36,34:[1,37],48:$Vm},o([34,48],[2,41]),o($Vn,[2,6]),{6:28,10:39,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,8]),o($Vn,[2,9]),o($Vn,[2,10],{12:[1,40],13:[1,41]}),o($Vn,[2,14]),{16:[1,42]},o($Vn,[2,16],{18:[1,43]}),{21:[1,44]},o($Vn,[2,20]),o($Vn,[2,21]),o($Vn,[2,22]),o($Vn,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},o($Vn,[2,26]),o($Vn,[2,27]),o($Vo,[2,36]),o($Vo,[2,37]),o($Vn,[2,30]),o($Vn,[2,31]),o($Vn,[2,32]),o($Vn,[2,33]),o($Vp,[2,28]),{35:49,47:[1,50]},o($Vp,[2,43]),o($Vn,[2,7]),o($Vn,[2,11]),{11:51,22:$Vb,42:$Vl},o($Vn,[2,15]),o($Vq,$V4,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:$Vm},{48:[2,42]},o($Vn,[2,12],{12:[1,57]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,58],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},o($Vp,[2,29]),o($Vn,[2,13]),o($Vn,[2,17]),o($Vq,$V4,{8:62}),o($Vn,[2,24]),o($Vn,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,63],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,19])],\ndefaultActions: {7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},\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 36;\nbreak;\ncase 1:return 37;\nbreak;\ncase 2:return 38;\nbreak;\ncase 3:return 39;\nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 34; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 20:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 21:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 22:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 23:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 24:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 25:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 26: return 36;\nbreak;\ncase 27: return 37;\nbreak;\ncase 28: return 38;\nbreak;\ncase 29: return 39;\nbreak;\ncase 30: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 31:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 32:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 35:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 38: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 39:/* nothing */\nbreak;\ncase 40: this.begin('NOTE'); return 27; \nbreak;\ncase 41: this.popState();this.pushState('NOTE_ID');return 43;\nbreak;\ncase 42: this.popState();this.pushState('NOTE_ID');return 44;\nbreak;\ncase 43: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 44:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 45:/**/\nbreak;\ncase 46: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 47:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 48: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 49: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 50: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 51: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 52: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 53: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 54: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 42;\nbreak;\ncase 55: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 56: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 57:return 13;\nbreak;\ncase 58:return 26;\nbreak;\ncase 59:return 5;\nbreak;\ncase 60:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[47],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[44,45,46],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[49,50],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[48],\"inclusive\":false},\"NOTE\":{\"rules\":[41,42,43],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[32],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[33,34],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,20,21,22,23,24,25,30,31,35,36,37],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],\"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,5],$V2=[6,9,11,17,18,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"section\":18,\"taskName\":19,\"taskData\":20,\"open_directive\":21,\"type_directive\":22,\"arg_directive\":23,\"close_directive\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"section\",19:\"taskName\",20:\"taskData\",21:\"open_directive\",22:\"type_directive\",23:\"arg_directive\",24:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\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 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 15:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 16:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 17:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 18:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],\ndefaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},\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: this.begin('open_directive'); return 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"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 { assignWithDepth } from './utils';\nimport { log } from './logger';\nimport theme from './themes';\nimport config from './defaultConfig';\n\n// debugger;\n\nexport const defaultConfig = Object.freeze(config);\n\nlet siteConfig = assignWithDepth({}, defaultConfig);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth({}, defaultConfig);\n\nexport const updateCurrentConfig = (siteCfg, _directives) => {\n // start with config beeing the siteConfig\n let cfg = assignWithDepth({}, siteCfg);\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n\n // Join directives\n let sumOfDirectives = {};\n for (let i = 0; i < _directives.length; i++) {\n const d = _directives[i];\n sanitize(d);\n\n // Apply the data from the directive where the the overrides the themeVaraibles\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\n }\n\n cfg = assignWithDepth(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme) {\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\n const themeVariables = assignWithDepth(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n\n currentConfig = cfg;\n return cfg;\n};\n\n/**\n * ## setSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls\n * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig)\n * will reset siteConfig and currentConfig to the defaultConfig Note: currentConfig is set in this\n * function *Default value: At default, will mirror Global Config**\n *\n * @param conf - The base currentConfig to use as siteConfig\n * @returns {object} - The siteConfig\n */\nexport const setSiteConfig = (conf) => {\n siteConfig = assignWithDepth({}, defaultConfig);\n siteConfig = assignWithDepth(siteConfig, conf);\n\n if (conf.theme) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n currentConfig = updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n\nexport const saveConfigFromInitilize = (conf) => {\n configFromInitialize = assignWithDepth({}, conf);\n};\n\nexport const updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n\n return siteConfig;\n};\n/**\n * ## getSiteConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------------------- | ----------- | -------------------------------- |\n * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig |\n *\n * **Notes**: Returns **any** values in siteConfig.\n *\n * @returns {object} - The siteConfig\n */\nexport const getSiteConfig = () => {\n return assignWithDepth({}, siteConfig);\n};\n/**\n * ## setConfig\n *\n * | Function | Description | Type | Values |\n * | ------------- | ------------------------------------- | ----------- | --------------------------------------- |\n * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array |\n *\n * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure\n * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the\n * corresponding siteConfig value.\n *\n * @param {any} conf - The potential currentConfig\n * @returns {any} - The currentConfig merged with the sanitized conf\n */\nexport const setConfig = (conf) => {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n\n assignWithDepth(currentConfig, conf);\n\n return getConfig();\n};\n\n/**\n * ## getConfig\n *\n * | Function | Description | Type | Return Values |\n * | --------- | ------------------------- | ----------- | ------------------------------ |\n * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config |\n *\n * **Notes**: Returns **any** the currentConfig\n *\n * @returns {any} - The currentConfig\n */\nexport const getConfig = () => {\n return assignWithDepth({}, currentConfig);\n};\n/**\n * ## sanitize\n *\n * | Function | Description | Type | Values |\n * | -------- | -------------------------------------- | ----------- | ------ |\n * | sanitize | Sets the siteConfig to desired values. | Put Request | None |\n *\n * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies\n * options in-place\n *\n * @param {any} options - The potential setConfig parameter\n */\nexport const sanitize = (options) => {\n // Checking that options are not in the list of excluded options\n Object.keys(siteConfig.secure).forEach((key) => {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n log.debug(\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\n options[siteConfig.secure[key]]\n );\n delete options[siteConfig.secure[key]];\n }\n });\n\n // Check that there no attempts of prototype pollution\n Object.keys(options).forEach((key) => {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n });\n // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svgs with inline script tags\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'string') {\n if (\n options[key].indexOf('<') > -1 ||\n options[key].indexOf('>') > -1 ||\n options[key].indexOf('url(data:') > -1\n ) {\n delete options[key];\n }\n }\n if (typeof options[key] === 'object') {\n sanitize(options[key]);\n }\n });\n};\n\n/**\n * Pushes in a directive to the configuration\n *\n * @param {object} directive The directive to push in\n */\nexport const addDirective = (directive) => {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n }\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n\n/**\n * ## reset\n *\n * | Function | Description | Type | Required | Values |\n * | -------- | ---------------------------- | ----------- | -------- | ------ |\n * | reset | Resets currentConfig to conf | Put Request | Required | None |\n *\n * ## conf\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------------------------------------------- | ---------- | -------- | -------------------------------------------- |\n * | conf | base set of values, which currentConfig coul be **reset** to. | Dictionary | Required | Any Values, with respect to the secure Array |\n *\n * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`)\n */\nexport const reset = () => {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(siteConfig, directives);\n};\n","import intersectRect from './intersect/intersect-rect';\nimport { log } from '../logger';\nimport createLabel from './createLabel';\nimport { select } from 'd3';\nimport { getConfig } from '../config';\nimport { evaluate } from '../diagrams/common/common';\n\nconst rect = (parent, node) => {\n log.trace('Creating subgraph rect for ', node.id, node);\n\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))\n .attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n log.trace('Data ', node, JSON.stringify(node));\n // center the rect around its coordinate\n rect\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - width / 2)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width)\n .attr('height', node.height + padding);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y - node.height / 2 + node.padding / 3) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * Non visiable cluster where the note is group with its\n *\n * @param {any} parent\n * @param {any} node\n * @returns {any} ShapeSvg\n */\nconst noteGroup = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding)\n .attr('fill', 'none');\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\n const innerRect = shapeSvg.append('rect');\n\n const text = label\n .node()\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\n\n // Get the size of the label\n let bbox = text.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n\n // center the rect around its coordinate\n rect\n .attr('class', 'outer')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding)\n .attr('width', width + padding)\n .attr('height', node.height + padding);\n innerRect\n .attr('class', 'inner')\n .attr('x', node.x - width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\n .attr('width', width + padding)\n .attr('height', node.height + padding - bbox.height - 3);\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' +\n (node.x - bbox.width / 2) +\n ', ' +\n (node.y -\n node.height / 2 -\n node.padding / 3 +\n (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) +\n ')'\n );\n\n const rectBox = rect.node().getBBox();\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst divider = (parent, node) => {\n // Add outer g element\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\n\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n\n // center the rect around its coordinate\n rect\n .attr('class', 'divider')\n .attr('x', node.x - node.width / 2 - halfPadding)\n .attr('y', node.y - node.height / 2)\n .attr('width', node.width + padding)\n .attr('height', node.height + padding);\n\n const rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function (point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\n\nlet clusterElems = {};\n\nexport const insertCluster = (elem, node) => {\n log.trace('Inserting cluster');\n const shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nexport const getClusterTitleWidth = (elem, node) => {\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n const width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\n\nexport const clear = () => {\n clusterElems = {};\n};\n\nexport const positionCluster = (node) => {\n log.info('Position cluster (' + node.id + ', ' + node.x + ', ' + node.y + ')');\n const el = clusterElems[node.id];\n\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { getConfig } from '../config';\nimport { sanitizeText, evaluate } from '../diagrams/common/common';\n\nconst sanitizeTxt = (txt) => sanitizeText(txt, getConfig());\n\n/**\n * @param dom\n * @param styleFn\n */\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\n/**\n * @param {any} node\n * @returns {SVGForeignObjectElement} Node\n */\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n const div = fo.append('xhtml:div');\n\n const label = node.label;\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html(\n '' +\n label +\n ''\n );\n\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || '';\n if (typeof vertexText === 'object') vertexText = vertexText[0];\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\n log.info('vertexText' + vertexText);\n const node = {\n isNode,\n label: vertexText.replace(\n /fa[lrsb]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace('fill:', 'color:'),\n };\n let vertexNode = addHtmlLabel(node);\n // vertexNode.parentNode.removeChild(vertexNode);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n let rows = [];\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\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', '0');\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\n\nexport default createLabel;\n","import { log } from '../logger'; // eslint-disable-line\nimport createLabel from './createLabel';\nimport { line, curveBasis, select } from 'd3';\nimport { getConfig } from '../config';\nimport utils from '../utils';\nimport { evaluate } from '../diagrams/common/common';\n\nlet edgeLabels = {};\nlet terminalLabels = {};\n\nexport const clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\n\nexport const insertEdgeLabel = (elem, edge) => {\n // Create the actual text element\n const labelElement = createLabel(edge.label, edge.labelStyle);\n\n // Create outer g, edgeLabel, this will be positioned after graph layout\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\n\n // Create inner g, label, this will be positioned now for centering the text\n const label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement);\n\n // Center the label\n let bbox = labelElement.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n // Make element accessible by id for positioning\n edgeLabels[edge.id] = edgeLabel;\n\n // Update the abstract data of the edge with the new information about its width and height\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n let fo;\n if (edge.startLabelLeft) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n // Create the actual text element\n const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n // Create the actual text element\n const endLabelElement = createLabel(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n};\n\n/**\n * @param {any} fo\n * @param {any} value\n */\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + 'px';\n fo.style.height = '12px';\n }\n}\n\nexport const positionEdgeLabel = (edge, paths) => {\n log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // // debugger;\n const pos = utils.calcLabelPosition(path);\n log.info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ') abc78');\n // x = pos.x;\n // y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n 'start_right',\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n // debugger;\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\n x = pos.x;\n y = pos.y;\n }\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n }\n};\n\n// const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nconst outsideNode = (node, point) => {\n // log.warn('Checking bounds ', node, point);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point.x - x);\n const dy = Math.abs(point.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\n\nexport const intersection = (node, outsidePoint, insidePoint) => {\n log.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n\n const dx = Math.abs(x - insidePoint.x);\n // const dy = Math.abs(y - insidePoint.y);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n\n // const edges = {\n // x1: x - w,\n // x2: x + w,\n // y1: y - h,\n // y2: y + h\n // };\n\n // if (\n // outsidePoint.x === edges.x1 ||\n // outsidePoint.x === edges.x2 ||\n // outsidePoint.y === edges.y1 ||\n // outsidePoint.y === edges.y2\n // ) {\n // log.warn('abc89 calc equals on edge', outsidePoint, edges);\n // return outsidePoint;\n // }\n\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n // log.warn();\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = (R * q) / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\n };\n\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n\n return res;\n } else {\n // Intersection onn sides of rect\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n let q = (Q * r) / R;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n\n return { x: _x, y: _y };\n }\n};\n/**\n * This function will page a path and node where the last point(s) in the path is inside the node\n * and return an update path ending by the border of the node.\n *\n * @param {Array} _points\n * @param {any} boundryNode\n * @returns {Array} Points\n */\nconst cutPathAtIntersect = (_points, boundryNode) => {\n log.warn('abc88 cutPathAtIntersect', _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point) => {\n // const node = clusterDb[edge.toCluster].node;\n log.info('abc88 checking point', point, boundryNode);\n\n // check if point is inside the boundry rect\n if (!outsideNode(boundryNode, point) && !isInside) {\n // First point inside the rect found\n // Calc the intersection coord between the point anf the last opint ouside the rect\n const inter = intersection(boundryNode, lastPointOutside, point);\n log.warn('abc88 inside', point, lastPointOutside, inter);\n log.warn('abc88 intersection', inter);\n\n // // Check case where the intersection is the same as the last point\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n });\n // // if (!pointPresent) {\n if (!points.find((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n log.warn('abc88 no intersect', inter, points);\n }\n // points.push(inter);\n isInside = true;\n } else {\n // Outside\n log.warn('abc88 outside', point, lastPointOutside);\n lastPointOutside = point;\n // points.push(point);\n if (!isInside) points.push(point);\n }\n });\n log.warn('abc88 returning points', points);\n return points;\n};\n\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n log.info('abc88 InsertEdge: ', edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n 'Last point',\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info('to cluster abc88', clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n // log.trace('edge', edge);\n // points = [];\n // let lastPointOutside; // = edge.points[0];\n // let isInside = false;\n // edge.points.forEach(point => {\n // const node = clusterDb[edge.toCluster].node;\n // log.warn('checking from', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.trace('inside', edge.toCluster, point, lastPointOutside);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // points.push(inter);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // isInside = true;\n // } else {\n // // outtside\n // lastPointOutside = point;\n // if (!isInside) points.push(point);\n // }\n // });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n log.info('from cluster abc88', clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n // log.warn('edge', edge);\n // log.warn('from cluster', clusterDb[edge.fromCluster], points);\n // const updatedPoints = [];\n // let lastPointOutside = edge.points[edge.points.length - 1];\n // let isInside = false;\n // for (let i = points.length - 1; i >= 0; i--) {\n // const point = points[i];\n // const node = clusterDb[edge.fromCluster].node;\n // log.warn('checking to', edge.fromCluster, point, node);\n\n // if (!outsideNode(node, point) && !isInside) {\n // log.warn('inside', edge.fromCluster, point, node);\n\n // // First point inside the rect\n // const inter = intersection(node, lastPointOutside, point);\n // log.warn('intersect', intersection(node, lastPointOutside, point));\n // let pointPresent = false;\n // points.forEach(p => {\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\n // });\n // // if (!pointPresent) {\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\n // updatedPoints.unshift(inter);\n // log.warn('Adding point -updated = ', updatedPoints);\n // } else {\n // log.warn('no intersect', inter, points);\n // }\n // // points.push(insterection);\n // isInside = true;\n // } else {\n // // at the outside\n // // if (!isInside) updatedPoints.unshift(point);\n // updatedPoints.unshift(point);\n // log.warn('Outside point', point, updatedPoints);\n // }\n // lastPointOutside = point;\n // }\n // points = updatedPoints;\n // points = edge.points;\n pointsHasChanged = true;\n }\n\n // The data for our line\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n\n // This is the accessor function we talked about above\n let curve;\n // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n if (diagramType === 'graph' || diagramType === 'flowchart') {\n curve = edge.curve || curveBasis;\n } else {\n curve = curveBasis;\n }\n // curve = curveLinear;\n const lineFunction = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curve);\n\n // Contruct stroke classes based on properties\n let strokeClasses;\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n default:\n strokeClasses = '';\n }\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n const svgPath = elem\n .append('path')\n .attr('d', lineFunction(lineData))\n .attr('id', edge.id)\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\n .attr('style', edge.style);\n\n // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n let url = '';\n if (getConfig().state.arrowMarkerAbsolute) {\n url =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n log.info('arrowTypeStart', edge.arrowTypeStart);\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n default:\n }\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n default:\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n","import dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport insertMarkers from './markers';\nimport { updateNodeBounds } from './shapes/util';\nimport {\n clear as clearGraphlib,\n clusterDb,\n adjustClustersAndEdges,\n findNonClusterChild,\n sortNodesByHierarchy,\n} from './mermaid-graphlib';\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\nimport { insertCluster, clear as clearClusters } from './clusters';\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\nimport { log } from '../logger';\n\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\n log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace('Dir in recursive render - dir:', dir);\n\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n if (!graph.nodes()) {\n log.info('No nodes found for', graph);\n } else {\n log.info('Recursive render XXX', graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace('Recursive edges', graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n const nodes = elem.insert('g').attr('class', 'nodes');\n\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n graph.nodes().forEach(function (v) {\n const node = graph.node(v);\n if (typeof parentCluster !== 'undefined') {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n // data.clusterPositioning = true;\n log.info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n log.info('Cluster identified', v, node.width, graph.node(v));\n const o = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info('Node bounds (abc123)', v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n\n log.warn('Recursive render complete ', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n log.info('Cluster - the non recursive path XXX', v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n // insertCluster(clusters, graph.node(v));\n } else {\n log.info('Node - the non recursive path', v, node.id, node);\n insertNode(nodes, graph.node(v), dir);\n }\n }\n });\n\n // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\n\n // Check if link is either from or to a cluster\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n\n graph.edges().forEach(function (e) {\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n log.info('#############################################');\n log.info('### Layout ###');\n log.info('#############################################');\n log.info(graph);\n dagre.layout(graph);\n log.info('Graph after layout:', graphlib.json.write(graph));\n // Move the nodes to the correct place\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function (v) {\n const node = graph.node(v);\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n log.info(\n 'Position ' + v + ': (' + node.x,\n ',' + node.y,\n ') width: ',\n node.width,\n ' height: ',\n node.height\n );\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n\n positionNode(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n\n // Move the edge labels to the correct place after layout\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\n positionEdgeLabel(edge, paths);\n });\n\n graph.nodes().forEach(function (v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === 'group') {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\n\nexport const render = (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clearNodes();\n clearEdges();\n clearClusters();\n clearGraphlib();\n\n log.warn('Graph at first:', graphlib.json.write(graph));\n adjustClustersAndEdges(graph);\n log.warn('Graph after:', graphlib.json.write(graph));\n // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\n recursiveRender(elem, graph, diagramtype);\n};\n\n// const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n","/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\nimport node from './intersect-node.js';\nimport circle from './intersect-circle.js';\nimport ellipse from './intersect-ellipse.js';\nimport polygon from './intersect-polygon.js';\nimport rect from './intersect-rect.js';\n\nexport default {\n node,\n circle,\n ellipse,\n polygon,\n rect,\n};\n","import intersectEllipse from './intersect-ellipse';\n\n/**\n * @param node\n * @param rx\n * @param point\n */\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n\nexport default intersectCircle;\n","/**\n * @param node\n * @param rx\n * @param ry\n * @param point\n */\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n\nexport default intersectEllipse;\n","/**\n * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect.\n *\n * @param p1\n * @param p2\n * @param q1\n * @param q2\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\n/**\n * @param r1\n * @param r2\n */\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\nexport default intersectLine;\n","module.exports = intersectNode;\n\n/**\n * @param node\n * @param point\n */\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nimport intersectLine from './intersect-line';\n\nexport default intersectPolygon;\n\n/**\n * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming\n * that it has the shape specified by polygon.\n *\n * @param node\n * @param polyPoints\n * @param point\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n","const intersectRect = (node, point) => {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n};\n\nexport default intersectRect;\n","/** Setup arrow head and define the marker. The result is appended to the svg. */\n\nimport { log } from '../logger';\n\n// Only add the number of markers that the diagram needs\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\n\nconst extension = (elem, type, id) => {\n log.trace('Making markers for ', id);\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionStart')\n .attr('class', 'marker extension ' + type)\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\n .append('defs')\n .append('marker')\n .attr('id', type + '-extensionEnd')\n .attr('class', 'marker extension ' + type)\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\nconst composition = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionStart')\n .attr('class', 'marker composition ' + type)\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\n .append('defs')\n .append('marker')\n .attr('id', type + '-compositionEnd')\n .attr('class', 'marker composition ' + type)\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};\nconst aggregation = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationStart')\n .attr('class', 'marker aggregation ' + type)\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\n .append('defs')\n .append('marker')\n .attr('id', type + '-aggregationEnd')\n .attr('class', 'marker aggregation ' + type)\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};\nconst dependency = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyStart')\n .attr('class', 'marker dependency ' + type)\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\n .append('defs')\n .append('marker')\n .attr('id', type + '-dependencyEnd')\n .attr('class', 'marker dependency ' + type)\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};\nconst point = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-pointEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n elem\n .append('marker')\n .attr('id', type + '-pointStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 0)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 12)\n .attr('markerHeight', 12)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst circle = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-circleEnd')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 11)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-circleStart')\n .attr('class', 'marker ' + type)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', -1)\n .attr('refY', 5)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('circle')\n .attr('cx', '5')\n .attr('cy', '5')\n .attr('r', '5')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n};\nconst cross = (elem, type) => {\n elem\n .append('marker')\n .attr('id', type + '-crossEnd')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', 12)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n\n elem\n .append('marker')\n .attr('id', type + '-crossStart')\n .attr('class', 'marker cross ' + type)\n .attr('viewBox', '0 0 11 11')\n .attr('refX', -1)\n .attr('refY', 5.2)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', 11)\n .attr('markerHeight', 11)\n .attr('orient', 'auto')\n .append('path')\n // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\n .attr('class', 'arrowMarkerPath')\n .style('stroke-width', 2)\n .style('stroke-dasharray', '1,0');\n};\nconst barb = (elem, type) => {\n elem\n .append('defs')\n .append('marker')\n .attr('id', type + '-barbEnd')\n .attr('refX', 19)\n .attr('refY', 7)\n .attr('markerWidth', 20)\n .attr('markerHeight', 14)\n .attr('markerUnits', 'strokeWidth')\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n point,\n circle,\n cross,\n barb,\n};\nexport default insertMarkers;\n","/** Decorates with functions required by mermaids dagre-wrapper. */\nimport { log } from '../logger';\nimport graphlib from 'graphlib';\n\nexport let clusterDb = {};\nlet decendants = {};\nlet parents = {};\n\nexport const clear = () => {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nconst isDecendant = (id, ancenstorId) => {\n // if (id === ancenstorId) return true;\n\n log.trace(\n 'In isDecendant',\n ancenstorId,\n ' ',\n id,\n ' = ',\n decendants[ancenstorId].indexOf(id) >= 0\n );\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n\n return false;\n};\n\nconst edgeInCluster = (edge, clusterId) => {\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n log.info('Edge is ', edge);\n // Edges to/from the cluster is not in the cluster, they are in the parent\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n log.debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n log.info('Here ');\n\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n\n return false;\n};\n\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n 'Copying children of ',\n clusterId,\n 'root',\n rootId,\n 'data',\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n\n // Include cluster node if it is not the root\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n log.debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n log.debug(\n 'Not Setting parent for node=',\n node,\n 'cluster!==rootId',\n clusterId !== rootId,\n 'node!==clusterId',\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug('Copying Edges', edges);\n edges.forEach((edge) => {\n log.info('Edge', edge);\n const data = graph.edge(edge.v, edge.w, edge.name);\n log.info('Edge data', data, rootId);\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n 'Skipping copy of edge ',\n edge.v,\n '-->',\n edge.w,\n ' rootId: ',\n rootId,\n ' clusterId:',\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug('Removing node', node);\n graph.removeNode(node);\n });\n};\nexport const extractDecendants = (id, graph) => {\n // log.debug('Extracting ', id);\n const children = graph.children(id);\n let res = [].concat(children);\n\n for (let i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n *\n * @param graph\n */\nexport const validate = (graph) => {\n const edges = graph.edges();\n log.trace('Edges: ', edges);\n for (let i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n if (graph.children(edges[i].w).length > 0) {\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n return true;\n};\n\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n *\n * @param {Finds a} id\n * @param {any} graph\n */\nexport const findNonClusterChild = (id, graph) => {\n // const node = graph.node(id);\n log.trace('Searching', id);\n // const children = graph.children(id).reverse();\n const children = graph.children(id); //.reverse();\n log.trace('Searching children of id ', id, children);\n if (children.length < 1) {\n log.trace('This is a valid node', id);\n return id;\n }\n for (let i = 0; i < children.length; i++) {\n const _id = findNonClusterChild(children[i], graph);\n if (_id) {\n log.trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n // If the cluster has no external connections\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n\n // Return the replacement node\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\n\nexport const adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug('Opting out, no graph ');\n return;\n } else {\n log.debug('Opting in, graph ');\n }\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n 'Cluster identified',\n id,\n ' Replacement id in edges: ',\n findNonClusterChild(id, graph)\n );\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n\n // Check incoming and outgoing edges for each cluster\n graph.nodes().forEach(function (id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug('Cluster identified', id, decendants);\n edges.forEach((edge) => {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n\n const d1 = isDecendant(edge.v, id);\n const d2 = isDecendant(edge.w, id);\n\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n if (d1 ^ d2) {\n log.warn('Edge: ', edge, ' leaves cluster ', id);\n log.warn('Decendants of XXX ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug('Not a cluster ', id, decendants);\n }\n });\n\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n graph.edges().forEach(function (e) {\n const edge = graph.edge(e);\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n\n let v = e.v;\n let w = e.w;\n // Check if link is either from or to a cluster\n log.warn(\n 'Fix XXX',\n clusterDb,\n 'ids:',\n e.v,\n e.w,\n 'Translateing: ',\n clusterDb[e.v],\n ' --- ',\n clusterDb[e.w]\n );\n if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n log.warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn('Adjusted Graph', graphlib.json.write(graph));\n extractor(graph, 0);\n\n log.trace(clusterDb);\n\n // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\n\nexport const extractor = (graph, depth) => {\n log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\n if (depth > 10) {\n log.error('Bailing out');\n return;\n }\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n let nodes = graph.nodes();\n let hasChildren = false;\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n log.debug('Done, no node has children', graph.nodes());\n return;\n }\n // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n log.debug('Nodes = ', nodes, depth);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n log.debug(\n 'Extracting node',\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children('D'),\n ' Depth ',\n depth\n );\n // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n if (!clusterDb[node]) {\n // Skip if the node is not a cluster\n log.debug('Not a cluster', node, depth);\n // break;\n } else if (\n !clusterDb[node].externalConnections &&\n // !graph.parent(node) &&\n graph.children(node) &&\n graph.children(node).length > 0\n ) {\n log.warn(\n 'Cluster without external connections, without a parent and with children',\n node,\n depth\n );\n\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\n if (clusterDb[node]) {\n if (clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir);\n }\n }\n\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: dir, // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n log.warn('Old graph before copy', graphlib.json.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph,\n });\n log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph));\n log.debug('Old graph after copy', graphlib.json.write(graph));\n } else {\n log.warn(\n 'Cluster ** ',\n node,\n ' **not meeting the criteria !externalConnections:',\n !clusterDb[node].externalConnections,\n ' no parent: ',\n !graph.parent(node),\n ' children ',\n graph.children(node) && graph.children(node).length > 0,\n graph.children('D'),\n depth\n );\n log.debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n log.warn('New list of nodes', nodes);\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const data = graph.node(node);\n log.warn(' Now next level', node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) return [];\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = result.concat(sorted);\n });\n\n return result;\n};\n\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\n","import { select } from 'd3';\nimport { log } from '../logger'; // eslint-disable-line\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\nimport { getConfig } from '../config';\nimport intersect from './intersect/index.js';\nimport createLabel from './createLabel';\nimport note from './shapes/note';\nimport { parseMember } from '../diagrams/class/svgDraw';\nimport { evaluate } from '../diagrams/common/common';\n\nconst question = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 },\n ];\n\n log.info('Question main (Circle)');\n\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n updateNodeBounds(node, questionElem);\n\n node.intersect = function (point) {\n log.warn('Intersect called');\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst choice = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 },\n ];\n\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n );\n // center the circle around its coordinate\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\n node.width = 28;\n node.height = 28;\n\n node.intersect = function (point) {\n return intersect.circle(node, 14, point);\n };\n\n return shapeSvg;\n};\n\nconst hexagon = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n updateNodeBounds(node, hex);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_left_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_right = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst lean_left = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (2 * h) / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - (2 * h) / 6, y: -h },\n { x: -h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: (-2 * h) / 6, y: 0 },\n { x: w + (2 * h) / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst inv_trapezoid = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + (2 * h) / 6, y: -h },\n { x: (-2 * h) / 6, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst rect_right_inv_arrow = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst cylinder = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n\n const shape =\n 'M 0,' +\n ry +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n -w +\n ' 0 l 0,' +\n h +\n ' a ' +\n rx +\n ',' +\n ry +\n ' 0,0,0 ' +\n w +\n ' 0 l 0,' +\n -h;\n\n const el = shapeSvg\n .attr('label-offset-y', ry)\n .insert('path', ':first-child')\n .attr('style', node.style)\n .attr('d', shape)\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n const pos = intersect.rect(node, point);\n const x = pos.x - node.x;\n\n if (\n rx != 0 &&\n (Math.abs(x) < node.width / 2 ||\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\n ) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n let y = ry * ry * (1 - (x * x) / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nconst rect = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.trace('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect\n .attr('class', 'basic label-container')\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', totalWidth)\n .attr('height', totalHeight);\n\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect, node.props.borders, totalWidth, totalHeight);\n propKeys.delete('borders');\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/**\n * @param rect\n * @param borders\n * @param totalWidth\n * @param totalHeight\n */\nfunction applyNodePropertyBorders(rect, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length);\n strokeDashArray.push(0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0);\n strokeDashArray.push(length);\n };\n if (borders.includes('t')) {\n log.debug('add top border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('r')) {\n log.debug('add right border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes('b')) {\n log.debug('add bottom border');\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes('l')) {\n log.debug('add left border');\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect.attr('stroke-dasharray', strokeDashArray.join(' '));\n}\n\nconst rectWithTitle = (parent, node) => {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n // const innerRect = shapeSvg.insert('rect');\n const innerLine = shapeSvg.insert('line');\n\n const label = shapeSvg.insert('g').attr('class', 'label');\n\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\n\n let title = '';\n if (typeof text2 === 'object') {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\n\n const text = label.node().appendChild(createLabel(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n log.info('Text 2', text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label\n .node()\n .appendChild(\n createLabel(textRows.join ? textRows.join('
') : textRows, node.labelStyle, true, true)\n );\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n // bbox = label.getBBox();\n // log.info(descr);\n const halfPadding = node.padding / 2;\n select(descr).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n ', ' +\n (titleBox.height + halfPadding + 5) +\n ')'\n );\n select(text).attr(\n 'transform',\n 'translate( ' +\n // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n ', ' +\n 0 +\n ')'\n );\n // Get the size of the label\n\n // Bounding box for title and text\n bbox = label.node().getBBox();\n\n // Center the label\n label.attr(\n 'transform',\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n innerLine\n .attr('class', 'divider')\n .attr('x1', -bbox.width / 2 - halfPadding)\n .attr('x2', bbox.width / 2 + halfPadding)\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst stadium = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n\n // add the rect\n const rect = shapeSvg\n .insert('rect', ':first-child')\n .attr('style', node.style)\n .attr('rx', h / 2)\n .attr('ry', h / 2)\n .attr('x', -w / 2)\n .attr('y', -h / 2)\n .attr('width', w)\n .attr('height', h);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst circle = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle\n .attr('style', node.style)\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('r', bbox.width / 2 + halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n log.info('Circle main');\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nconst subroutine = (parent, node) => {\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\n\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 },\n ];\n\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr('style', node.style);\n updateNodeBounds(node, el);\n\n node.intersect = function (point) {\n return intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nconst start = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const circle = shapeSvg.insert('circle', ':first-child');\n\n // center the circle around its coordinate\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n\n let width = 70;\n let height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n const shape = shapeSvg\n .append('rect')\n .attr('x', (-1 * width) / 2)\n .attr('y', (-1 * height) / 2)\n .attr('width', width)\n .attr('height', height)\n .attr('class', 'fork-join');\n\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst end = (parent, node) => {\n const shapeSvg = parent\n .insert('g')\n .attr('class', 'node default')\n .attr('id', node.domId || node.id);\n const innerCircle = shapeSvg.insert('circle', ':first-child');\n const circle = shapeSvg.insert('circle', ':first-child');\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n\n updateNodeBounds(node, circle);\n\n node.intersect = function (point) {\n return intersect.circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n\n let classes;\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the title label and insert it after the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n const topLine = shapeSvg.insert('line');\n const bottomLine = shapeSvg.insert('line');\n let maxWidth = 0;\n let maxHeight = rowPadding;\n\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n\n // 1. Create the labels\n const interfaceLabelText = node.classData.annotations[0]\n ? '«' + node.classData.annotations[0] + '»'\n : '';\n const interfaceLabel = labelContainer\n .node()\n .appendChild(createLabel(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n let classTitleString = node.classData.id;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += '<' + node.classData.type + '>';\n } else {\n classTitleString += '<' + node.classData.type + '>';\n }\n }\n const classTitleLabel = labelContainer\n .node()\n .appendChild(createLabel(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr('class', 'classTitle');\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr('width', classTitleBBox.width);\n dv.attr('height', classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = parseMember(str);\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, '>');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = parseMember(str);\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, '>');\n }\n const lbl = labelContainer\n .node()\n .appendChild(\n createLabel(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n\n classMethods.push(lbl);\n });\n\n maxHeight += lineHeight;\n\n // 2. Position the labels\n\n // position the interface label\n if (hasInterface) {\n let diffX = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n 'transform',\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n // Positin the class title label\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n 'transform',\n 'translate( ' +\n ((-1 * maxWidth) / 2 + diffX) +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n\n topLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' +\n -maxWidth / 2 +\n ', ' +\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\n ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n\n verticalPos += lineHeight;\n bottomLine\n .attr('class', 'divider')\n .attr('x1', -maxWidth / 2 - halfPadding)\n .attr('x2', maxWidth / 2 + halfPadding)\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n\n verticalPos += lineHeight;\n\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n 'transform',\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n //\n // let bbox;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = interfaceLabel.children[0];\n // const dv = select(interfaceLabel);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // bbox = labelContainer.getBBox();\n\n // log.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\n\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // log.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect\n .attr('class', 'outer title-state')\n .attr('x', -maxWidth / 2 - halfPadding)\n .attr('y', -(maxHeight / 2) - halfPadding)\n .attr('width', maxWidth + node.padding)\n .attr('height', maxHeight + node.padding);\n\n // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nconst shapes = {\n question,\n rect,\n rectWithTitle,\n choice,\n circle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box,\n};\n\nlet nodeElems = {};\n\nexport const insertNode = (elem, node, dir) => {\n let newEl;\n let el;\n\n // Add link when appropriate\n if (node.link) {\n newEl = elem\n .insert('svg:a')\n .attr('xlink:href', node.link)\n .attr('target', node.linkTarget || '_blank');\n el = shapes[node.shape](newEl, node, dir);\n } else {\n el = shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n};\nexport const setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nexport const clear = () => {\n nodeElems = {};\n};\n\nexport const positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n 'Transforming node',\n node.diff,\n node,\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n 'transform',\n 'translate(' +\n (node.x + diff - node.width / 2) +\n ', ' +\n (node.y - node.height / 2 - padding) +\n ')'\n );\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n return diff;\n};\n","import { updateNodeBounds, labelHelper } from './util';\nimport { log } from '../../logger'; // eslint-disable-line\nimport intersect from '../intersect/index.js';\n\nconst note = (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\n\n log.info('Classes = ', node.classes);\n // add the rect\n const rect = shapeSvg.insert('rect', ':first-child');\n\n rect\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2 - halfPadding)\n .attr('y', -bbox.height / 2 - halfPadding)\n .attr('width', bbox.width + node.padding)\n .attr('height', bbox.height + node.padding);\n\n updateNodeBounds(node, rect);\n\n node.intersect = function (point) {\n return intersect.rect(node, point);\n };\n\n return shapeSvg;\n};\n\nexport default note;\n","import createLabel from '../createLabel';\nimport { getConfig } from '../../config';\nimport { decodeEntities } from '../../mermaidAPI';\nimport { select } from 'd3';\nimport { evaluate, sanitizeText } from '../../diagrams/common/common';\nexport const labelHelper = (parent, node, _classes, isNode) => {\n let classes;\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n }\n // Add outer g element\n const shapeSvg = parent\n .insert('g')\n .attr('class', classes)\n .attr('id', node.domId || node.id);\n\n // Create the label and insert it after the rect\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n\n const labelText = typeof node.labelText === 'string' ? node.labelText : node.labelText[0];\n\n const text = label\n .node()\n .appendChild(\n createLabel(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n\n // Get the size of the label\n let bbox = text.getBBox();\n\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n const halfPadding = node.padding / 2;\n\n // Center the label\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n\n return { shapeSvg, bbox, halfPadding, label };\n};\n\nexport const updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\n\n/**\n * @param parent\n * @param w\n * @param h\n * @param points\n */\nexport function insertPolygonShape(parent, w, h, points) {\n return parent\n .insert('polygon', ':first-child')\n .attr(\n 'points',\n points\n .map(function (d) {\n return d.x + ',' + d.y;\n })\n .join(' ')\n )\n .attr('class', 'label-container')\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n","import theme from './themes';\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click\n * here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**
 mermaid.initialize({ flowchart:{ htmlLabels: false } }); 
\n *\n * **Example 2:**
  
\n *\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults).\n * A description of each option follows below.\n *\n * @name Configuration\n */\nconst config = {\n /**\n * Theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".
 \"theme\": \"forest\",\n   * \"themeCSS\": \".node rect { fill: red; }\" 
\n */\n theme: 'default',\n themeVariables: theme['default'].getThemeVariables(),\n themeCSS: undefined,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 50000,\n darkMode: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | ------------- |\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 1, 2, 3, 4, 5 |\n *\n * **Notes:**\n *\n * - Debug: 1\n * - Info: 2\n * - Warn: 3\n * - Error: 4\n * - Fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------- |\n * | securitylevel | Level of trust for parsed diagram | string | Required | 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click\n * functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered *secure* and can only be changed\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n *\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * deterministic. This is the default behaviour.\n *\n * **Notes**:\n *\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless\n * content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /** The object containing configurations specific for flowcharts */\n flowchart: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n * vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n * spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * 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 * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-d3',\n },\n\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n mirrorActors: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:** Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n * **Notes:** **Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: \"'Open-Sans\", \"sans-serif\"'\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:** Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:** Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:** Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:** Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 20.\n */\n labelBoxHeight: 20,\n\n messageFont: function () {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight,\n };\n },\n noteFont: function () {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight,\n };\n },\n actorFont: function () {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight,\n };\n },\n },\n\n /** The object containing configurations specific for gantt diagrams */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ------------------ |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | --------------------------- | ---- | -------- | ---------------- |\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * 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 * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ----------- |\n * | topAxis | See notes | Boolean | 4 | True, False |\n *\n * **Notes:** when this flag is set date labels will be added to the top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n\n useWidth: undefined,\n },\n\n /** The object containing configurations specific for journey diagrams */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * 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 * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff'],\n },\n class: {\n arrowMarkerAbsolute: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * 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 * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes**:\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n git: {\n arrowMarkerAbsolute: false,\n\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * 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 * Default value: true\n */\n useMaxWidth: true,\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * 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 * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: 'dagre-wrapper',\n },\n\n /** The object containing configurations specific for entity relationship diagrams */\n er: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:** Expressed in pixels. Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Expressed in pixels Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------------------------------------------- | ------- | -------- | ------------------ |\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding betweentext in an entity box and the enclosing box borders,\n * expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for pie diagrams */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n },\n\n /** The object containing configurations specific for req diagrams */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20,\n },\n};\n\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n\nconst keyify = (obj, prefix = '') =>\n Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], '')];\n }\n return [...res, prefix + el];\n }, []);\n\nexport const configKeys = keyify(config, '');\nexport default config;\n","import { select } from 'd3';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport common from '../common/common';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\n\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\n\nlet relations = [];\nlet classes = {};\nlet classCounter = 0;\n\nlet funs = [];\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, configApi.getConfig());\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nconst splitClassNameAndType = function (id) {\n let genericType = '';\n let className = id;\n\n if (id.indexOf('~') > 0) {\n let split = id.split('~');\n className = split[0];\n\n genericType = common.sanitizeText(split[1], configApi.getConfig());\n }\n\n return { className: className, type: genericType };\n};\n\n/**\n * Function called by parser when a node definition has been found.\n *\n * @param id\n * @public\n */\nexport const addClass = function (id) {\n let classId = splitClassNameAndType(id);\n // Only add class if not exists\n if (typeof classes[classId.className] !== 'undefined') return;\n\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,\n };\n\n classCounter++;\n};\n\n/**\n * Function to lookup domId from id in the graph definition.\n *\n * @param id\n * @public\n */\nexport const lookUpDomId = function (id) {\n const classKeys = Object.keys(classes);\n for (let i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\n\nexport const clear = function () {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\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 log.debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n\n relation.relationTitle1 = common.sanitizeText(\n relation.relationTitle1.trim(),\n configApi.getConfig()\n );\n\n relation.relationTitle2 = common.sanitizeText(\n relation.relationTitle2.trim(),\n configApi.getConfig()\n );\n\n relations.push(relation);\n};\n\n/**\n * Adds an annotation to the specified class Annotations mark special properties of the given type\n * (like 'interface' or 'service')\n *\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\nexport const addAnnotation = function (className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n\n/**\n * Adds a member to the specified class\n *\n * @param className The class name\n * @param member The full name of the member. If the member is enclosed in <> it is\n * treated as an annotation If the member is ending with a closing bracket ) it is treated as a\n * method Otherwise the member will be treated as a normal property\n * @public\n */\nexport const addMember = function (className, member) {\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n const memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // Remove leading and trailing brackets\n // theClass.annotations.push(memberString.substring(2, memberString.length - 2));\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(')') > 0) {\n theClass.methods.push(sanitizeText(memberString));\n } else if (memberString) {\n theClass.members.push(sanitizeText(memberString));\n }\n }\n};\n\nexport const addMembers = function (className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\n\nexport const cleanupLabel = function (label) {\n if (label.substring(0, 1) === ':') {\n return common.sanitizeText(label.substr(1).trim(), configApi.getConfig());\n } else {\n return sanitizeText(label.trim());\n }\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setCssClass = function (ids, className) {\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].cssClasses.push(className);\n }\n });\n};\n\n/**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param tooltip Tooltip to add\n */\nconst setTooltip = function (ids, tooltip) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n classes[id].tooltip = common.sanitizeText(tooltip, config);\n }\n });\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\nexport const setLink = function (ids, linkStr, target) {\n const config = configApi.getConfig();\n ids.split(',').forEach(function (_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n if (typeof classes[id] !== 'undefined') {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (typeof target === 'string') {\n classes[id].linkTarget = target;\n } else {\n classes[id].linkTarget = '_blank';\n }\n }\n });\n setCssClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, 'clickable');\n};\n\nconst setClickFunc = function (domId, functionName, functionArgs) {\n const config = configApi.getConfig();\n let id = domId;\n let elemId = lookUpDomId(id);\n\n if (config.securityLevel !== 'loose') {\n return;\n }\n if (typeof functionName === 'undefined') {\n return;\n }\n if (typeof classes[id] !== 'undefined') {\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(elemId);\n }\n\n funs.push(function () {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n 'click',\n function () {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\n\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\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\nconst setupToolTips = function (element) {\n let tooltipElem = select('.mermaidTooltip');\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n const svg = select(element).select('svg');\n\n const nodes = svg.selectAll('g.node');\n nodes\n .on('mouseover', function () {\n const el = 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().duration(200).style('opacity', '.9');\n tooltipElem\n .html(el.attr('title'))\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n })\n .on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n const el = select(this);\n el.classed('hover', false);\n });\n};\nfuns.push(setupToolTips);\n\nlet direction = 'TB';\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n addAnnotation,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n setTooltip,\n lookUpDomId,\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { getConfig } from '../../config';\nimport { render } from '../../dagre-wrapper/index.js';\n// import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\nimport { curveLinear } from 'd3';\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\nimport common from '../common/common';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n *\n * @param {Object<\n * string,\n * { cssClasses: string[]; text: string; id: string; type: string; domId: string }\n * >} classes\n * Object containing the vertices.\n * @param {SVGGElement} g The graph that is to be drawn.\n */\nexport const addClasses = function (classes, g) {\n // const svg = select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(classes);\n log.info('keys:', keys);\n log.info(classes);\n\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n keys.forEach(function (id) {\n const vertex = classes[id];\n\n /**\n * Variable for storing the classes for the vertex\n *\n * @type {string}\n */\n let cssClassStr = '';\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\n }\n // if (vertex.classes.length > 0) {\n // classStr = vertex.classes.join(' ');\n // }\n\n const styles = { labelStyle: '' }; //getStylesFromArray(vertex.styles);\n\n // Use vertex id as text in the box if no text is provided by the graph definition\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\n\n // We create a SVG label, either by delegating to addHtmlLabel or manually\n // let vertexNode;\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\n // const node = {\n // label: vertexText.replace(\n // /fa[lrsb]?:fa-[\\w-]+/g,\n // s => ``\n // )\n // };\n // vertexNode = addHtmlLabel(svg, node).node();\n // vertexNode.parentNode.removeChild(vertexNode);\n // } else {\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n\n // const rows = vertexText.split(common.lineBreakRegex);\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 // vertexNode = svgLabel;\n // }\n\n let radious = 0;\n let _shape = '';\n // Set the shape based parameters\n switch (vertex.type) {\n case 'class':\n _shape = 'class_box';\n break;\n default:\n _shape = 'class_box';\n }\n // Add the node\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n domId: vertex.domId,\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n\n log.info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: getConfig().flowchart.padding,\n });\n });\n};\n\n/**\n * Add edges to graph based on parsed graph defninition\n *\n * @param relations\n * @param {object} g The graph object\n */\nexport const addRelations = function (relations, g) {\n let cnt = 0;\n\n let defaultStyle;\n let defaultLabelStyle;\n\n // if (typeof relations.defaultStyle !== 'undefined') {\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\n // defaultStyle = defaultStyles.style;\n // defaultLabelStyle = defaultStyles.labelStyle;\n // }\n\n relations.forEach(function (edge) {\n cnt++;\n const edgeData = {};\n //Set relationship style and line type\n edgeData.classes = 'relation';\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\n\n edgeData.id = 'id' + cnt;\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 log.info(edgeData, edge);\n //Set edge extra labels\n //edgeData.startLabelLeft = edge.relationTitle1;\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2;\n //edgeData.endLabelRight = edge.relationTitle2;\n\n //Set relation arrow types\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\n let style = '';\n let labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n style = 'fill:none';\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\n edgeData.curve = interpolateToCurve(relations.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n\n edge.text = edge.title;\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 edgeData.labelpos = 'c';\n\n if (getConfig().flowchart.htmlLabels) {\n // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = '' + edge.text + '';\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n // Add the edge to the graph\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\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/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n log.info('Drawing class - ', id);\n classDb.clear();\n // const parser = classDb.parser;\n // parser.yy = classDb;\n\n // Parse the graph definition\n // try {\n parser.parse(text);\n // } catch (err) {\n // log.debug('Parsing failed');\n // }\n\n // Fetch the default direction, use TD if none was found\n //let dir = 'TD';\n\n const conf = getConfig().flowchart;\n const securityLevel = getConfig().securityLevel;\n log.info('config:', conf);\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n\n // Create the input mermaid.graph\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true,\n })\n .setGraph({\n rankdir: classDb.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8,\n })\n .setDefaultEdgeLabel(function () {\n return {};\n });\n\n // let subG;\n // const subGraphs = flowDb.getSubGraphs();\n // log.info('Subgraphs - ', subGraphs);\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n // log.info('Subgraph - ', subG);\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n // }\n\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n const classes = classDb.getClasses();\n const relations = classDb.getRelations();\n\n log.info(relations);\n // let i = 0;\n // for (i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n\n // 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 addClasses(classes, g, id);\n addRelations(relations, g);\n\n // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n\n // Set up an SVG group so that we can translate the final graph.\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const svg = root.select(`[id=\"${id}\"]`);\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n // Run the renderer. This is what draws the final graph.\n const element = root.select('#' + id + ' g');\n render(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id);\n\n // element.selectAll('g.node').attr('title', function() {\n // return flowDb.getTooltip(this.id);\n // });\n\n const padding = 8;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n log.debug(\n `new ViewBox 0 0 ${width} ${height}`,\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\n );\n\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n\n svg.attr('viewBox', `0 0 ${width} ${height}`);\n svg\n .select('g')\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\n\n // Index nodes\n // flowDb.indexNodes('subGraph' + i);\n\n // Add label rects for non html labels\n if (!conf.htmlLabels) {\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + 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 = doc.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 // If node has a link, wrap it in an anchor SVG object.\n // const keys = Object.keys(classes);\n // keys.forEach(function(key) {\n // const vertex = classes[key];\n\n // if (vertex.link) {\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\n // if (node) {\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n // const linkNode = node.insert(function() {\n // return link;\n // }, ':first-child');\n\n // const shape = node.select('.label-container');\n // if (shape) {\n // linkNode.append(function() {\n // return shape.node();\n // });\n // }\n\n // const label = node.select('.label');\n // if (label) {\n // linkNode.append(function() {\n // return label.node();\n // });\n // }\n // }\n // }\n // });\n};\n\n/**\n * Gets the arrow marker for a type index\n *\n * @param {number} type The type to look for\n * @returns {'aggregation' | 'extension' | 'composition' | 'dependency'} The arrow marker\n */\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n case 1:\n marker = 'extension';\n break;\n case 2:\n marker = 'composition';\n break;\n case 3:\n marker = 'dependency';\n break;\n default:\n marker = 'none';\n }\n return marker;\n}\n\nexport default {\n setConf,\n draw,\n};\n","import { select } from 'd3';\nimport dagre from 'dagre';\nimport graphlib from 'graphlib';\nimport { log } from '../../logger';\nimport classDb, { lookUpDomId } from './classDb';\nimport { parser } from './parser/classDiagram';\nimport svgDraw from './svgDraw';\nimport { configureSvgSize } from '../../utils';\nimport { getConfig } from '../../config';\n\nparser.yy = classDb;\n\nlet idCache = {};\nconst padding = 20;\n\nconst conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n};\n\n/**\n * Gets the ID with the same label as in the cache\n *\n * @param {string} label The label to look for\n * @returns {string} The resulting ID\n */\nconst getGraphId = function (label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n\n if (foundEntry) {\n return foundEntry[0];\n }\n};\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n *\n * @param {SVGSVGElement} elem The SVG element to append to\n */\nconst insertMarkers = function (elem) {\n elem\n .append('defs')\n .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\n .append('defs')\n .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\n .append('defs')\n .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\n .append('defs')\n .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\n .append('defs')\n .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\n .append('defs')\n .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\n .append('defs')\n .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\n .append('defs')\n .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\n/**\n * Merges the value of `conf` with the passed `cnf`\n *\n * @param {object} cnf Config to merge\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/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n *\n * @param {string} text\n * @param {string} id\n */\nexport const draw = function (text, id) {\n idCache = {};\n parser.yy.clear();\n parser.parse(text);\n\n log.info('Rendering diagram ' + text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and ocument for when rendering in sanbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n // Fetch the default direction, use TD if none was found\n const diagram = root.select(`[id='${id}']`);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\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\n for (let i = 0; i < keys.length; i++) {\n const classDef = classes[keys[i]];\n const node = svgDraw.drawClass(diagram, classDef, conf);\n idCache[node.id] = node;\n\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\n log.info('Org height: ' + node.height);\n }\n\n const relations = classDb.getRelations();\n relations.forEach(function (relation) {\n log.info(\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation: relation,\n },\n relation.title || 'DEFAULT'\n );\n });\n\n dagre.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n root\n .select('#' + lookUpDomId(v))\n .attr(\n 'transform',\n 'translate(' +\n (g.node(v).x - g.node(v).width / 2) +\n ',' +\n (g.node(v).y - g.node(v).height / 2) +\n ' )'\n );\n }\n });\n\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n\n const svgBounds = diagram.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\n\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram.attr('viewBox', vBox);\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n`;\n\nexport default getStyles;\n","import { line, curveBasis } from 'd3';\nimport { lookUpDomId, relationType } from './classDb';\nimport utils from '../../utils';\nimport { log } from '../../logger';\n\nlet edgeCount = 0;\nexport const drawEdge = function (elem, path, relation, conf) {\n const getRelationType = function (type) {\n switch (type) {\n case relationType.AGGREGATION:\n return 'aggregation';\n case relationType.EXTENSION:\n return 'extension';\n case relationType.COMPOSITION:\n return 'composition';\n case relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\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 = line()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n })\n .curve(curveBasis);\n\n const svgPath = elem\n .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 =\n window.location.protocol +\n '//' +\n window.location.host +\n window.location.pathname +\n window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n if (relation.relation.lineType == 1) {\n svgPath.attr('class', 'relation dashed-line');\n }\n if (relation.relation.type1 !== 'none') {\n svgPath.attr(\n 'marker-start',\n 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')'\n );\n }\n if (relation.relation.type2 !== 'none') {\n svgPath.attr(\n 'marker-end',\n 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')'\n );\n }\n\n let x, y;\n const l = path.points.length;\n // Calculate Label position\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== 'none',\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== 'none',\n path.points,\n path.points[l - 1]\n );\n\n log.debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\n log.debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\n\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n\n if (typeof relation.title !== 'undefined') {\n const g = elem.append('g').attr('class', 'classLabel');\n const label = g\n .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 log.info('Rendering relation ' + JSON.stringify(relation));\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type1')\n .attr('x', p1_card_x)\n .attr('y', p1_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle1);\n }\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\n const g = elem.append('g').attr('class', 'cardinality');\n g.append('text')\n .attr('class', 'type2')\n .attr('x', p2_card_x)\n .attr('y', p2_card_y)\n .attr('fill', 'black')\n .attr('font-size', '6')\n .text(relation.relationTitle2);\n }\n\n edgeCount++;\n};\n\n/**\n * Renders a class diagram\n *\n * @param {SVGSVGElement} elem The element to draw it into\n * @param classDef\n * @param conf\n * @todo Add more information in the JSDOC here\n */\nexport const drawClass = function (elem, classDef, conf) {\n log.info('Rendering class ' + classDef);\n\n const id = classDef.id;\n const classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0,\n };\n\n // add class group\n const g = elem.append('g').attr('id', lookUpDomId(id)).attr('class', 'classGroup');\n\n // add title\n let title;\n if (classDef.link) {\n title = g\n .append('svg:a')\n .attr('xlink:href', classDef.link)\n .attr('target', classDef.linkTarget)\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n } else {\n title = g\n .append('text')\n .attr('y', conf.textHeight + conf.padding)\n .attr('x', 0);\n }\n\n // add annotations\n let isFirst = true;\n classDef.annotations.forEach(function (member) {\n const titleText2 = title.append('tspan').text('«' + member + '»');\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\n isFirst = false;\n });\n\n let classTitleString = classDef.id;\n\n if (classDef.type !== undefined && classDef.type !== '') {\n classTitleString += '<' + classDef.type + '>';\n }\n\n const classTitle = title.append('tspan').text(classTitleString).attr('class', 'title');\n\n // If class has annotations the title needs to have an offset of the text height\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\n\n const titleHeight = title.node().getBBox().height;\n\n const membersLine = g\n .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\n .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 isFirst = true;\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n\n const membersBox = members.node().getBBox();\n\n const methodsLine = g\n .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\n .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, conf);\n isFirst = false;\n });\n\n const classBox = g.node().getBBox();\n var cssClassStr = ' ';\n\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\n }\n\n const rect = g\n .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 .attr('class', cssClassStr);\n\n const rectWidth = rect.node().getBBox().width;\n\n // Center title\n // We subtract the width of each text element from the class box width and divide it by 2\n title.node().childNodes.forEach(function (x) {\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\n });\n\n if (classDef.tooltip) {\n title.insert('title').text(classDef.tooltip);\n }\n\n membersLine.attr('x2', rectWidth);\n methodsLine.attr('x2', rectWidth);\n\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n\n return classInfo;\n};\n\nexport const parseMember = function (text) {\n const fieldRegEx = /^(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+) *(\\*|\\$)?$/;\n const methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\n\n let fieldMatch = text.match(fieldRegEx);\n let methodMatch = text.match(methodRegEx);\n\n if (fieldMatch && !methodMatch) {\n return buildFieldDisplay(fieldMatch);\n } else if (methodMatch) {\n return buildMethodDisplay(methodMatch);\n } else {\n return buildLegacyDisplay(text);\n }\n};\n\nconst buildFieldDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let fieldType = parsedText[2] ? parsedText[2].trim() : '';\n let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let fieldName = parsedText[4] ? parsedText[4].trim() : '';\n let classifier = parsedText[5] ? parsedText[5].trim() : '';\n\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildMethodDisplay = function (parsedText) {\n let cssStyle = '';\n let displayText = '';\n\n try {\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\n let methodName = parsedText[2] ? parsedText[2].trim() : '';\n let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n let classifier = parsedText[4] ? parsedText[4].trim() : '';\n let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\n\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\nconst buildLegacyDisplay = function (text) {\n // if for some reason we dont have any match, use old format to parse text\n let displayText = '';\n let cssStyle = '';\n let memberText = '';\n let returnType = '';\n let methodStart = text.indexOf('(');\n let methodEnd = text.indexOf(')');\n\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\n let visibility = '';\n let methodName = '';\n\n let firstChar = text.substring(0, 1);\n if (firstChar.match(/\\w/)) {\n methodName = text.substring(0, methodStart).trim();\n } else {\n if (firstChar.match(/\\+|-|~|#/)) {\n visibility = firstChar;\n }\n\n methodName = text.substring(1, methodStart).trim();\n }\n\n let parameters = text.substring(methodStart + 1, methodEnd);\n let classifier = text.substring(methodEnd + 1, 1);\n cssStyle = parseClassifier(classifier);\n\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\n\n if (methodEnd < memberText.length) {\n returnType = text.substring(methodEnd + 2).trim();\n if (returnType !== '') {\n returnType = ' : ' + parseGenericTypes(returnType);\n }\n }\n } else {\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\n displayText = parseGenericTypes(text);\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle,\n };\n};\n\n/**\n * Adds a for a member in a diagram\n *\n * @param {SVGElement} textEl The element to append to\n * @param {string} txt The member\n * @param {boolean} isFirst\n * @param {{ padding: string; textHeight: string }} conf The configuration for the member\n */\nconst addTspan = function (textEl, txt, isFirst, conf) {\n let member = parseMember(txt);\n\n const tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\n\n if (member.cssStyle !== '') {\n tSpan.attr('style', member.cssStyle);\n }\n\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight);\n }\n};\n\n/**\n * Makes generics in typescript syntax\n *\n * @example Array of array of strings in typescript syntax\n * // returns \"Array>\"\n * parseGenericTypes('Array~Array~string~~');\n *\n * @param {string} text The text to convert\n * @returns {string} The converted string\n */\nconst parseGenericTypes = function (text) {\n let cleanedText = text;\n\n if (text.indexOf('~') != -1) {\n cleanedText = cleanedText.replace('~', '<');\n cleanedText = cleanedText.replace('~', '>');\n\n return parseGenericTypes(cleanedText);\n } else {\n return cleanedText;\n }\n};\n\n/**\n * Gives the styles for a classifier\n *\n * @param {'+' | '-' | '#' | '~' | '*' | '$'} classifier The classifier string\n * @returns {string} Styling for the classifier\n */\nconst parseClassifier = function (classifier) {\n switch (classifier) {\n case '*':\n return 'font-style:italic;';\n case '$':\n return 'text-decoration:underline;';\n default:\n return '';\n }\n};\n\nexport default {\n drawClass,\n drawEdge,\n parseMember,\n};\n","import DOMPurify from 'dompurify';\n\n/**\n * Gets the number of lines in a string\n *\n * @param {string | undefined} s The string to check the lines for\n * @returns {number} The number of lines in that string\n */\nexport const getRows = (s) => {\n if (!s) return 1;\n let str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\n\nexport const removeEscapes = (text) => {\n let newStr = text.replace(/\\\\u[\\dA-F]{4}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\u/g, ''), 16));\n });\n\n newStr = newStr.replace(/\\\\x([0-9a-f]{2})/gi, (_, c) => String.fromCharCode(parseInt(c, 16)));\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{3}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n newStr = newStr.replace(/\\\\[\\d\\d\\d]{2}/gi, function (match) {\n return String.fromCharCode(parseInt(match.replace(/\\\\/g, ''), 8));\n });\n\n return newStr;\n};\n\n/**\n * Removes script tags from a text\n *\n * @param {string} txt The text to sanitize\n * @returns {string} The safer text\n */\nexport const removeScript = (txt) => {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('= 0) {\n rs += txt.substr(0, idx);\n txt = txt.substr(idx + 1);\n\n idx = txt.indexOf('');\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n let decodedText = removeEscapes(rs);\n decodedText = decodedText.replace(/script>/gi, '#');\n decodedText = decodedText.replace(/javascript:/gi, '#');\n decodedText = decodedText.replace(/onerror=/gi, 'onerror:');\n decodedText = decodedText.replace(/';\n\n svgCode = decodeEntities(svgCode);\n\n // Fix for when the br tag is used\n svgCode = svgCode.replace(/
/g, '
');\n\n if (cnf.securityLevel === 'sandbox') {\n // const newSvgCode =\n // '';\n // svgCode = newSvgCode;\n // svgCode = ``;\n let svgEl = root.select('#d' + id + ' svg').node();\n let width = '100%';\n let height = '100%';\n if (svgEl) {\n width = svgEl.viewBox.baseVal.width + 'px';\n height = svgEl.viewBox.baseVal.height + 'px';\n }\n svgCode = ``;\n }\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, flowDb.bindFunctions);\n break;\n case 'gantt':\n cb(svgCode, ganttDb.bindFunctions);\n break;\n case 'class':\n case 'classDiagram':\n cb(svgCode, classDb.bindFunctions);\n break;\n default:\n cb(svgCode);\n }\n } else {\n log.debug('CB = undefined!');\n }\n attachFunctions();\n\n const tmpElementSelector = cnf.securityLevel === 'sandbox' ? '#i' + id : '#d' + id;\n const node = select(tmpElementSelector).node();\n if (node !== null && typeof node.remove === 'function') {\n select(tmpElementSelector).node().remove();\n }\n\n return svgCode;\n};\n\nlet currentDirective = {};\n\nconst parseDirective = function (p, statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n case 'close_directive':\n handleDirective(p, currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n log.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n log.error(error.message);\n }\n};\n\nconst handleDirective = function (p, directive, type) {\n log.debug(`Directive type=${directive.type} with args:`, directive.args);\n switch (directive.type) {\n case 'init':\n case 'initialize': {\n ['config'].forEach((prop) => {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n log.debug('sanitize in handleDirective', directive.args);\n directiveSanitizer(directive.args);\n log.debug('sanitize in handleDirective (done)', directive.args);\n reinitialize(directive.args);\n configApi.addDirective(directive.args);\n break;\n }\n case 'wrap':\n case 'nowrap':\n if (p && p['setWrap']) {\n p.setWrap(directive.type === 'wrap');\n }\n break;\n case 'themeCss':\n log.warn('themeCss encountered');\n break;\n default:\n log.warn(\n `Unhandled directive: source: '%%{${directive.type}: ${JSON.stringify(\n directive.args ? directive.args : {}\n )}}%%`,\n directive\n );\n break;\n }\n};\n\n/** @param {any} conf */\nfunction updateRendererConfigs(conf) {\n // Todo remove, all diagrams should get config on demoand from the config object, no need for this\n gitGraphRenderer.setConf(conf.git);\n flowRenderer.setConf(conf.flowchart);\n flowRendererV2.setConf(conf.flowchart);\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n sequenceRenderer.setConf(assignWithDepth(conf.sequence, conf['sequenceDiagram']));\n }\n sequenceRenderer.setConf(conf.sequence);\n ganttRenderer.setConf(conf.gantt);\n classRenderer.setConf(conf.class);\n stateRenderer.setConf(conf.state);\n stateRendererV2.setConf(conf.state);\n infoRenderer.setConf(conf.class);\n // pieRenderer.setConf(conf.class);\n erRenderer.setConf(conf.er);\n journeyRenderer.setConf(conf.journey);\n requirementRenderer.setConf(conf.requirement);\n errorRenderer.setConf(conf.class);\n}\n\n/** To be removed */\nfunction reinitialize() {\n // `mermaidAPI.reinitialize: v${pkg.version}`,\n // JSON.stringify(options),\n // options.themeVariables.primaryColor;\n // // if (options.theme && theme[options.theme]) {\n // // options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n // // }\n // // Set default options\n // const config =\n // typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();\n // updateRendererConfigs(config);\n // setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.reinitialize: ', config);\n}\n\n/** @param {any} options */\nfunction initialize(options) {\n // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);\n\n // Handle legacy location of font-family configuration\n if (options && options.fontFamily) {\n if (!options.themeVariables) {\n options.themeVariables = { fontFamily: options.fontFamily };\n } else {\n if (!options.themeVariables.fontFamily) {\n options.themeVariables = { fontFamily: options.fontFamily };\n }\n }\n }\n // Set default options\n configApi.saveConfigFromInitilize(options);\n\n if (options && options.theme && theme[options.theme]) {\n // Todo merge with user options\n options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n\n const config =\n typeof options === 'object' ? configApi.setSiteConfig(options) : configApi.getSiteConfig();\n\n updateRendererConfigs(config);\n setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.initialize: ', config);\n}\n\nconst mermaidAPI = Object.freeze({\n render,\n parse,\n parseDirective,\n initialize,\n reinitialize,\n getConfig: configApi.getConfig,\n setConfig: configApi.setConfig,\n getSiteConfig: configApi.getSiteConfig,\n updateSiteConfig: configApi.updateSiteConfig,\n reset: () => {\n // console.warn('reset');\n configApi.reset();\n // const siteConfig = configApi.getSiteConfig();\n // updateRendererConfigs(siteConfig);\n },\n globalReset: () => {\n configApi.reset(configApi.defaultConfig);\n updateRendererConfigs(configApi.getConfig());\n },\n defaultConfig: configApi.defaultConfig,\n});\n\nsetLogLevel(configApi.getConfig().logLevel);\nconfigApi.reset(configApi.getConfig());\n\nexport default mermaidAPI;\n/**\n * ## mermaidAPI configuration defaults\n *\n * ```html\n * \n * ```\n */\n","import classDiagram from './diagrams/class/styles';\nimport er from './diagrams/er/styles';\nimport flowchart from './diagrams/flowchart/styles';\nimport gantt from './diagrams/gantt/styles';\nimport git from './diagrams/git/styles';\nimport info from './diagrams/info/styles';\nimport pie from './diagrams/pie/styles';\nimport requirement from './diagrams/requirement/styles';\nimport sequence from './diagrams/sequence/styles';\nimport stateDiagram from './diagrams/state/styles';\nimport journey from './diagrams/user-journey/styles';\n\nconst themes = {\n flowchart,\n 'flowchart-v2': flowchart,\n sequence,\n gantt,\n classDiagram,\n 'classDiagram-v2': classDiagram,\n class: classDiagram,\n stateDiagram,\n state: stateDiagram,\n git,\n info,\n pie,\n er,\n journey,\n requirement,\n};\n\nexport const calcThemeVariables = (theme, userOverRides) => theme.calcColors(userOverRides);\n\nconst getStyles = (type, userStyles, options) => {\n //console.warn('options in styles: ', options);\n return ` {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ${options.errorBkgColor};\n }\n .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n .marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${themes[type](options)}\n\n ${userStyles}\n`;\n};\n\nexport default getStyles;\n","import { getThemeVariables as baseThemeVariables } from './theme-base';\nimport { getThemeVariables as darkThemeVariables } from './theme-dark';\nimport { getThemeVariables as defaultThemeVariables } from './theme-default';\nimport { getThemeVariables as forestThemeVariables } from './theme-forest';\nimport { getThemeVariables as neutralThemeVariables } from './theme-neutral';\n\nexport default {\n base: {\n getThemeVariables: baseThemeVariables,\n },\n dark: {\n getThemeVariables: darkThemeVariables,\n },\n default: {\n getThemeVariables: defaultThemeVariables,\n },\n forest: {\n getThemeVariables: forestThemeVariables,\n },\n neutral: {\n getThemeVariables: neutralThemeVariables,\n },\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n /** # Base variables */\n /**\n * - Background - used to know what the background color is of the diagram. This is used for\n * deducing colors for istance line color. Defaulr value is #f4f4f4.\n */\n this.background = '#f4f4f4';\n this.darkMode = false;\n\n // this.background = '#0c0c0c';\n // this.darkMode = true;\n this.primaryColor = '#fff4dd';\n // this.background = '#0c0c0c';\n // this.primaryColor = '#1f1f00';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333';\n\n // dark\n\n // this.primaryColor = '#034694';\n // this.primaryColor = '#f2ee7e';\n // this.primaryColor = '#9f33be';\n // this.primaryColor = '#f0fff0';\n // this.primaryColor = '#fa255e';\n // this.primaryColor = '#ECECFF';\n\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n\n // this.secondaryColor = '#dfdfde';\n // this.tertiaryColor = '#CCCCFF';\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n // this.updateColors();\n }\n updateColors() {\n // The || is to make sure that if the variable has been defiend by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#ddd' : '#333'); // invert(this.primaryColor);\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor =\n this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor =\n this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || '#fff5ad';\n this.noteTextColor = this.noteTextColor || '#333';\n\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n\n /* Flowchart variables */\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground =\n this.edgeLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || 'grey';\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || '#eeeeee';\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n /* The color of the text tables of the tstates*/\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n\n /* class */\n this.classText = this.classText || this.textColor;\n\n /* user-journey */\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, darken, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = lighten(this.primaryColor, 16);\n\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = lighten(invert('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = darken('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n\n /* state colors */\n this.labelColor = 'calculated';\n\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n updateColors() {\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#555';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#f4f4f4'; // this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || '#0b0000';\n this.pie2 = this.pie2 || '#4d1037';\n this.pie3 = this.pie3 || '#3f5258';\n this.pie4 = this.pie4 || '#4f2f1b';\n this.pie5 = this.pie5 || '#6e0a0a';\n this.pie6 = this.pie6 || '#3b0048';\n this.pie7 = this.pie7 || '#995a01';\n this.pie8 = this.pie8 || '#154706';\n this.pie9 = this.pie9 || '#161722';\n this.pie10 = this.pie10 || '#00296f';\n this.pie11 = this.pie11 || '#01629c';\n this.pie12 = this.pie12 || '#010029';\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* class */\n this.classText = this.primaryTextColor;\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground =\n this.relationLabelBackground ||\n (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { invert, lighten, rgba, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\nclass Theme {\n constructor() {\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n\n /* Sequence Diagram variables */\n\n // this.actorBorder = lighten(this.border1, 0.5);\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { darken, lighten, adjust, invert } from 'khroma';\nimport { mkBorder } from './theme-helpers';\nclass Theme {\n constructor() {\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n this.tertiaryColor = lighten('#cde498', 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n /* Flowchart variables */\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n\n /* state colors */\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f0f0f0';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n /* pie */\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { adjust } from 'khroma';\n\nexport const mkBorder = (col, darkMode) =>\n darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\n","import { invert, darken, lighten, adjust } from 'khroma';\nimport { mkBorder } from './theme-helpers';\n\n// const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nclass Theme {\n constructor() {\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = '#ffffff';\n\n // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n\n // this.altBackground = lighten(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.excludeBkgColor = '#eeeeee';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n\n /* state colors */\n this.labelColor = 'black';\n\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n updateColors() {\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n\n /* Sequence Diagram variables */\n\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = '#999';\n this.noteBkgColor = '#666';\n this.noteTextColor = '#fff';\n\n /* Gantt chart variables */\n\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n\n this.taskBorderColor = darken(this.contrast, 10);\n\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n\n this.todayLineColor = this.critBkgColor;\n\n /* state colors */\n this.transitionColor = this.transitionColor || '#000';\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || '#f4f4f4';\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || '#000';\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = '#222';\n\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n\n /* class */\n this.classText = this.primaryTextColor;\n /* journey */\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n\n // /* pie */\n this.pie1 = this.pie1 || '#F4F4F4';\n this.pie2 = this.pie2 || '#555';\n this.pie3 = this.pie3 || '#BBB';\n this.pie4 = this.pie4 || '#777';\n this.pie5 = this.pie5 || '#999';\n this.pie6 = this.pie6 || '#DDD';\n this.pie7 = this.pie7 || '#FFF';\n this.pie8 = this.pie8 || '#DDD';\n this.pie9 = this.pie9 || '#BBB';\n this.pie10 = this.pie10 || '#999';\n this.pie11 = this.pie11 || '#777';\n this.pie12 = this.pie12 || '#555';\n this.pieTitleTextSize = this.pieTitleTextSize || '25px';\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || '17px';\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || '17px';\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || 'black';\n this.pieStrokeWidth = this.pieStrokeWidth || '2px';\n this.pieOpacity = this.pieOpacity || '0.7';\n\n // this.pie1 = this.pie1 || '#212529';\n // this.pie2 = this.pie2 || '#343A40';\n // this.pie3 = this.pie3 || '#495057';\n // this.pie4 = this.pie4 || '#6C757D';\n // this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n // this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n // this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 });\n // this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n // this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n // this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 });\n // this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n // this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n\n /* requirement-diagram */\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor;\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n }\n calculate(overrides) {\n if (typeof overrides !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n const keys = Object.keys(overrides);\n\n // Copy values from overrides, this is mainly for base colors\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n\n // Calculate colors form base colors\n this.updateColors();\n // Copy values from overrides again in case of an override of derived value\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\n\nexport const getThemeVariables = (userOverrides) => {\n const theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n","import { sanitizeUrl } from '@braintree/sanitize-url';\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select,\n} from 'd3';\nimport common from './diagrams/common/common';\nimport { configKeys } from './defaultConfig';\nimport { log } from './logger';\n\n// Effectively an enum of the supported curve types, accessible by name\nconst d3CurveTypes = {\n curveBasis: curveBasis,\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveLinear: curveLinear,\n curveLinearClosed: curveLinearClosed,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore,\n};\nconst directive =\n /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst directiveWithoutOpen =\n /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\n\n/**\n * @function detectInit Detects the init config object from the text\n *\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\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 * Or\n *\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\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 * @param {string} text The text defining the graph\n * @param {any} cnf\n * @returns {object} The json object representing the init passed to mermaid.initialize()\n */\nexport const detectInit = function (text, cnf) {\n let inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n\n if (Array.isArray(inits)) {\n let args = inits.map((init) => init.args);\n directiveSanitizer(args);\n\n results = assignWithDepth(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type = detectType(text, cnf);\n ['config'].forEach((prop) => {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n\n // Todo: refactor this, these results are never used\n return results;\n};\n\n/**\n * @function detectDirective Detects the directive from the text. Text can be single line or\n * multiline. If type is null or omitted the first directive encountered in text will be returned\n *\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * @param {string} text The text defining the graph\n * @param {string | RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args:\n * object|null } matched by the input type if a single directive was found, that directive object\n * will be returned.\n */\nexport const detectDirective = function (text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\\n`,\n 'ig'\n );\n text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n let match,\n result = [];\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (\n (match && !type) ||\n (type && match[1] && match[1].match(type)) ||\n (type && match[2] && match[2].match(type))\n ) {\n let type = match[1] ? match[1] : match[2];\n let args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${error.message} - Unable to parse directive\n ${type !== null ? ' type:' + type : ''} based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\n\n/**\n * @function detectType Detects the type of the graph text. Takes into consideration the possible\n * existence of an %%init directive\n *\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\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 * @param {string} text The text defining the graph\n * @param {{\n * class: { defaultRenderer: string } | undefined;\n * state: { defaultRenderer: string } | undefined;\n * flowchart: { defaultRenderer: string } | undefined;\n * }} [cnf]\n * @returns {string} A graph definition key\n */\nexport const detectType = function (text, cnf) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n if (text.match(/^\\s*classDiagram/)) {\n if (cnf && cnf.class && cnf.class.defaultRenderer === 'dagre-wrapper') return 'classDiagram';\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n if (cnf && cnf.class && cnf.state.defaultRenderer === 'dagre-wrapper') return 'stateDiagram';\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n if (text.match(/^\\s*requirement/) || text.match(/^\\s*requirementDiagram/)) {\n return 'requirement';\n }\n if (cnf && cnf.flowchart && cnf.flowchart.defaultRenderer === 'dagre-wrapper')\n return 'flowchart-v2';\n\n return 'flowchart';\n};\n\n/**\n * Caches results of functions based on input\n *\n * @param {Function} fn Function to run\n * @param {Function} resolver Function that resolves to an ID given arguments the `fn` takes\n * @returns {Function} An optimized caching function\n */\nconst memoize = (fn, resolver) => {\n let cache = {};\n return (...args) => {\n let n = resolver ? resolver.apply(this, args) : args[0];\n if (n in cache) {\n return cache[n];\n } else {\n let result = fn(...args);\n cache[n] = result;\n return result;\n }\n };\n};\n\n/**\n * @function isSubstringInArray 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\n/**\n * Returns a d3 curve given a curve name\n *\n * @param {string | undefined} interpolate The interpolation name\n * @param {any} defaultCurve The default curve to return\n * @returns {import('d3-shape').CurveFactory} The curve factory to use\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 d3CurveTypes[curveName] || defaultCurve;\n};\n\n/**\n * Formats a URL string\n *\n * @param {string} linkStr String of the URL\n * @param {{ securityLevel: string }} config Configuration passed to MermaidJS\n * @returns {string | undefined} The formatted URL\n */\nexport const formatUrl = (linkStr, config) => {\n let url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return sanitizeUrl(url);\n }\n\n return url;\n }\n};\n\n/**\n * Runs a function\n *\n * @param {string} functionName A dot seperated path to the function relative to the `window`\n * @param {...any} params Parameters to pass to the function\n */\nexport const runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split('.');\n\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n obj[fnName](...params);\n};\n\n/**\n * @typedef {object} Point A (x, y) point\n * @property {number} x The x value\n * @property {number} y The y value\n */\n\n/**\n * Finds the distance between two points using the Distance Formula\n *\n * @param {Point} p1 The first point\n * @param {Point} p2 The second point\n * @returns {number} The distance\n */\nconst distance = (p1, p2) =>\n p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n\n/**\n * @param {Point[]} points List of points\n * @returns {Point}\n * @todo Give this a description\n */\nconst traverseEdge = (points) => {\n let prevPoint;\n let totalDistance = 0;\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse half of total distance along points\n let remainingDistance = totalDistance / 2;\n let center = undefined;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n};\n\n/**\n * Alias for `traverseEdge`\n *\n * @param {Point[]} points List of points\n * @returns {Point} Return result of `transverseEdge`\n */\nconst calcLabelPosition = (points) => {\n return traverseEdge(points);\n};\n\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n log.info('our points', points);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = isRelationTypePresent ? 10 : 5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n let cardinalityPosition = { x: 0, y: 0 };\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n\n/**\n * Position ['start_left', 'start_right', 'end_left', 'end_right']\n *\n * @param {any} terminalMarkerSize\n * @param {any} position\n * @param {any} _points\n * @returns {any}\n */\nconst calcTerminalLabelPosition = (terminalMarkerSize, position, _points) => {\n // Todo looking to faster cloning method\n let points = JSON.parse(JSON.stringify(_points));\n let prevPoint;\n let totalDistance = 0; // eslint-disable-line\n log.info('our points', points);\n if (position !== 'start_left' && position !== 'start_right') {\n points = points.reverse();\n }\n\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n\n // Traverse only 25 total distance along points to find cardinality point\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = undefined;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = { x: point.x, y: point.y };\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y,\n };\n }\n }\n }\n prevPoint = point;\n });\n // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n let d = 10 + terminalMarkerSize * 0.5;\n //Calculate Angle for x and y axis\n let angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n\n let cardinalityPosition = { x: 0, y: 0 };\n\n //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n if (position === 'start_left') {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n }\n if (position === 'end_right') {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n }\n if (position === 'end_left') {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n }\n return cardinalityPosition;\n};\n\n/**\n * Gets styles from an array of declarations\n *\n * @param {string[]} arr Declarations\n * @returns {{ style: string; labelStyle: string }} The styles grouped as strings\n */\nexport const getStylesFromArray = (arr) => {\n let style = '';\n let labelStyle = '';\n\n for (let i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return { style: style, labelStyle: labelStyle };\n};\n\nlet cnt = 0;\nexport const generateId = () => {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\n/**\n * @param {any} length\n * @returns {any}\n */\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n\nexport const random = (options) => {\n return makeid(options.length);\n};\n\n/**\n * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the\n * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively)\n * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of\n * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and\n * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the\n * config.clobber parameter === true. Example:\n *\n * ```js\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n *\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. If src is a\n * destructured array of objects and dst is not an array, assignWithDepth will apply each element\n * of src to dst in order.\n * @param dst\n * @param src\n * @param config\n * @param dst\n * @param src\n * @param config\n * @param dst\n * @param src\n * @param config\n * @param {any} dst - The destination of the merge\n * @param {any} src - The source object(s) to merge into destination\n * @param {{ depth: number; clobber: boolean }} [config={ depth: 2, clobber: false }] - Depth: depth\n * to traverse within src and dst for merging - clobber: should dissimilar types clobber (default:\n * { depth: 2, clobber: false }). Default is `{ depth: 2, clobber: false }`\n * @returns {any}\n */\nexport const assignWithDepth = function (dst, src, config) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && typeof dst === 'object' && typeof src === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (typeof src !== 'undefined' && typeof dst === 'object' && typeof src === 'object') {\n Object.keys(src).forEach((key) => {\n if (\n typeof src[key] === 'object' &&\n (dst[key] === undefined || typeof dst[key] === 'object')\n ) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || (typeof dst[key] !== 'object' && typeof src[key] !== 'object')) {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\n\nexport const getTextObj = function () {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined,\n };\n};\n\n/**\n * Adds text to an element\n *\n * @param {SVGElement} elem Element to add text to\n * @param {{\n * text: string;\n * x: number;\n * y: number;\n * anchor: 'start' | 'middle' | 'end';\n * fontFamily: string;\n * fontSize: string | number;\n * fontWeight: string | number;\n * fill: string;\n * class: string | undefined;\n * textMargin: number;\n * }} textData\n * @returns {SVGTextElement} Text element with given styling and content\n */\nexport const drawSimpleText = function (elem, textData) {\n // Remove and ignore br:s\n const nText = textData.text.replace(common.lineBreakRegex, ' ');\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.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\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 wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '
' },\n config\n );\n if (common.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(' ');\n const completedLines = [];\n let nextLine = '';\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, '-', config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== '').join(config.joinWith);\n },\n (label, maxWidth, config) =>\n `${label}-${maxWidth}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}-${config.joinWith}`\n);\n\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = '-', config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 },\n config\n );\n const characters = word.split('');\n const lines = [];\n let currentLine = '';\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = '-', config) =>\n `${word}-${maxWidth}-${hyphenCharacter}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * This calculates the text's height, taking into account the wrap breaks and both the statically\n * configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's value won't overflow.\n *\n * @param {any} text The text to measure\n * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n * @returns {any} - The height for the given text\n */\nexport const calculateTextHeight = function (text, config) {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 15 },\n config\n );\n return calculateTextDimensions(text, config).height;\n};\n\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @param {any} text - The text to calculate the width of\n * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n * @returns {any} - The width for the given text\n */\nexport const calculateTextWidth = function (text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n return calculateTextDimensions(text, config).width;\n};\n\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @param {any} text - The text to calculate the width of\n * @param {any} config - The config for fontSize, fontFamily, fontWeight, and margin all impacting\n * the resulting size\n * @returns - The width for the given text\n */\nexport const calculateTextDimensions = memoize(\n function (text, config) {\n config = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial' }, config);\n const { fontSize, fontFamily, fontWeight } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n\n // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n const fontFamilies = ['sans-serif', fontFamily];\n const lines = text.split(common.lineBreakRegex);\n let dims = [];\n\n const body = select('body');\n // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n\n const g = body.append('svg');\n\n for (let fontFamily of fontFamilies) {\n let cheight = 0;\n let dim = { width: 0, height: 0, lineHeight: 0 };\n for (let line of lines) {\n const textObj = getTextObj();\n textObj.text = line;\n const textElem = drawSimpleText(g, textObj)\n .style('font-size', fontSize)\n .style('font-weight', fontWeight)\n .style('font-family', fontFamily);\n\n let bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n\n g.remove();\n\n let index =\n isNaN(dims[1].height) ||\n isNaN(dims[1].width) ||\n isNaN(dims[1].lineHeight) ||\n (dims[0].height > dims[1].height &&\n dims[0].width > dims[1].width &&\n dims[0].lineHeight > dims[1].lineHeight)\n ? 0\n : 1;\n return dims[index];\n },\n (text, config) => `${text}-${config.fontSize}-${config.fontWeight}-${config.fontFamily}`\n);\n\n/**\n * Applys d3 attributes\n *\n * @param {any} d3Elem D3 Element to apply the attributes onto\n * @param {[string, string][]} attrs Object.keys equivalent format of key to value mapping of attributes\n */\nconst d3Attrs = function (d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\n\n/**\n * Gives attributes for an SVG's size given arguments\n *\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n * @returns {Map<'height' | 'width' | 'style', string>} Attributes for the SVG\n */\nexport const calculateSvgSizeAttrs = function (height, width, useMaxWidth) {\n let attrs = new Map();\n attrs.set('height', height);\n if (useMaxWidth) {\n attrs.set('width', '100%');\n attrs.set('style', `max-width: ${width}px;`);\n } else {\n attrs.set('width', width);\n }\n return attrs;\n};\n\n/**\n * Applies attributes from `calculateSvgSizeAttrs`\n *\n * @param {SVGSVGElement} svgElem The SVG Element to configure\n * @param {number} height The height of the SVG\n * @param {number} width The width of the SVG\n * @param {boolean} useMaxWidth Whether or not to use max-width and set width to 100%\n */\nexport const configureSvgSize = function (svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\n\nexport const initIdGeneratior = class iterator {\n constructor(deterministic, seed) {\n this.deterministic = deterministic;\n this.seed = seed;\n\n this.count = seed ? seed.length : 0;\n }\n\n next() {\n if (!this.deterministic) return Date.now();\n\n return this.count++;\n }\n};\n\nlet decoder;\n\n/**\n * Decodes HTML, source: {@link https://github.com/shrpne/entity-decode/blob/v2.0.1/browser.js}\n *\n * @param {string} html HTML as a string\n * @returns Unescaped HTML\n */\nexport const entityDecode = function (html) {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g, '&').replace(/%23/g, '#').replace(/%3B/g, ';');\n // decoding\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\n\n/**\n * Sanitizes directive objects\n *\n * @param {object} args Directive's JSON\n */\nexport const directiveSanitizer = (args) => {\n log.debug('directiveSanitizer called with', args);\n if (typeof args === 'object') {\n // check for array\n if (args.length) {\n args.forEach((arg) => directiveSanitizer(arg));\n } else {\n // This is an object\n Object.keys(args).forEach((key) => {\n log.debug('Checking key', key);\n if (key.indexOf('__') === 0) {\n log.debug('sanitize deleting __ option', key);\n delete args[key];\n }\n\n if (key.indexOf('proto') >= 0) {\n log.debug('sanitize deleting proto option', key);\n delete args[key];\n }\n\n if (key.indexOf('constr') >= 0) {\n log.debug('sanitize deleting constr option', key);\n delete args[key];\n }\n\n if (key.indexOf('themeCSS') >= 0) {\n log.debug('sanitizing themeCss option');\n args[key] = sanitizeCss(args[key]);\n }\n if (configKeys.indexOf(key) < 0) {\n log.debug('sanitize deleting option', key);\n delete args[key];\n } else {\n if (typeof args[key] === 'object') {\n log.debug('sanitize deleting object', key);\n directiveSanitizer(args[key]);\n }\n }\n });\n }\n }\n};\nexport const sanitizeCss = (str) => {\n const stringsearch = 'o';\n const startCnt = (str.match(/\\{/g) || []).length;\n const endCnt = (str.match(/\\}/g) || []).length;\n if (startCnt !== endCnt) {\n return '{ /* ERROR: Unbalanced CSS */ }';\n }\n // Todo add more checks here\n return str;\n};\n\nexport default {\n assignWithDepth,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n calculateSvgSizeAttrs,\n configureSvgSize,\n detectInit,\n detectDirective,\n detectType,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n memoize,\n runFunc,\n entityDecode,\n initIdGeneratior,\n directiveSanitizer,\n sanitizeCss,\n};\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\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'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\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 = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","module.exports = require(\"@braintree/sanitize-url\");","module.exports = require(\"d3\");","module.exports = require(\"dagre\");","module.exports = require(\"dagre-d3\");","module.exports = require(\"dagre-d3/lib/label/add-html-label.js\");","module.exports = require(\"dompurify\");","module.exports = require(\"graphlib\");","module.exports = require(\"khroma\");","module.exports = require(\"moment-mini\");","module.exports = require(\"stylis\");","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","/* (ignored) */","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the module cache\n__webpack_require__.c = __webpack_module_cache__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","","// module cache are used so entry inlining is disabled\n// startup\n// Load entry module and return exports\nvar __webpack_exports__ = __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n",""],"names":["assignWithDepth","log","theme","config","defaultConfig","Object","freeze","siteConfig","configFromInitialize","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","cfg","sumOfDirectives","i","length","d","sanitize","tmpConfigFromInitialize","themeVariables","getThemeVariables","setSiteConfig","conf","saveConfigFromInitilize","updateSiteConfig","getSiteConfig","setConfig","getConfig","options","keys","secure","forEach","key","debug","indexOf","addDirective","directive","fontFamily","push","reset","intersectRect","createLabel","select","evaluate","rect","parent","node","trace","id","shapeSvg","insert","attr","class","label","text","appendChild","labelText","labelStyle","undefined","bbox","getBBox","flowchart","htmlLabels","div","children","dv","getBoundingClientRect","width","height","padding","halfPadding","diff","JSON","stringify","style","rx","ry","x","y","rectBox","intersect","point","noteGroup","roundedWithTitle","classes","innerRect","append","divider","shapes","clusterElems","insertCluster","elem","shape","getClusterTitleWidth","removeChild","clear","positionCluster","info","el","sanitizeText","sanitizeTxt","txt","applyStyle","dom","styleFn","addHtmlLabel","fo","document","createElementNS","labelClass","isNode","html","_vertexText","isTitle","vertexText","replace","s","vertexNode","svgLabel","setAttribute","rows","split","Array","isArray","j","tspan","setAttributeNS","textContent","trim","line","curveBasis","utils","edgeLabels","terminalLabels","insertEdgeLabel","edge","labelElement","edgeLabel","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","setTerminalWidth","startLabelRight","startEdgeLabelRight","startRight","endLabelLeft","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","value","positionEdgeLabel","paths","path","updatedPath","originalPath","pos","calcLabelPosition","calcTerminalLabelPosition","arrowTypeStart","arrowTypeEnd","outsideNode","dx","Math","abs","dy","w","h","intersection","outsidePoint","insidePoint","warn","r","Q","R","q","res","_x","_y","cutPathAtIntersect","_points","boundryNode","points","lastPointOutside","isInside","inter","pointPresent","p","find","e","insertEdge","clusterDb","diagramType","graph","pointsHasChanged","tail","v","head","slice","unshift","toCluster","fromCluster","reverse","lineData","filter","Number","isNaN","curve","lineFunction","strokeClasses","thickness","pattern","svgPath","url","state","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","dagre","graphlib","insertMarkers","updateNodeBounds","clearGraphlib","adjustClustersAndEdges","findNonClusterChild","sortNodesByHierarchy","insertNode","positionNode","clearNodes","setNodeElem","clearClusters","clearEdges","recursiveRender","_elem","diagramtype","parentCluster","json","write","dir","rankdir","nodes","edges","clusters","edgePaths","data","parse","clusterData","setNode","setParent","clusterNode","o","newEl","name","layout","n","type","render","markers","circle","ellipse","polygon","intersectEllipse","intersectCircle","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","sameSign","module","exports","intersectNode","intersectPolygon","polyPoints","x1","y1","intersections","minX","POSITIVE_INFINITY","minY","entry","min","left","top","sort","pdx","pdy","distp","qdx","qdy","distq","sx","sy","markerArray","markerName","extension","composition","aggregation","dependency","cross","barb","decendants","parents","isDecendant","ancenstorId","edgeInCluster","clusterId","copy","newGraph","rootId","setEdge","error","removeNode","extractDecendants","concat","validate","_id","getAnchorId","externalConnections","depth","d1","d2","removeEdge","extractor","hasChildren","graphSettings","clusterGraph","Graph","multigraph","compound","setGraph","nodesep","ranksep","marginx","marginy","setDefaultEdgeLabel","sorter","result","assign","sorted","labelHelper","insertPolygonShape","note","parseMember","question","questionElem","choice","domId","map","join","hexagon","f","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","totalWidth","totalHeight","props","propKeys","Set","borders","applyNodePropertyBorders","delete","propKey","strokeDashArray","addBorder","skipBorder","includes","rectWithTitle","innerLine","text2","flat","title","textRows","titleBox","descr","stadium","subroutine","start","forkJoin","end","innerCircle","class_box","rowPadding","lineHeight","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","members","str","parsedInfo","parsedText","displayText","lbl","cssStyle","classMethods","methods","diffX","fork","nodeElems","link","linkTarget","tooltip","haveCallback","decodeEntities","_classes","element","themeCSS","maxTextSize","darkMode","logLevel","securityLevel","startOnLoad","deterministicIds","deterministicIDSeed","diagramPadding","nodeSpacing","rankSpacing","useMaxWidth","defaultRenderer","sequence","activationWidth","diagramMarginX","diagramMarginY","actorMargin","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","mirrorActors","forceMenus","bottomMarginAdj","rightAngles","showSequenceNumbers","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","noteAlign","messageFontSize","messageFontFamily","messageFontWeight","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","messageFont","fontSize","fontWeight","noteFont","actorFont","gantt","titleTopMargin","barHeight","barGap","topPadding","rightPadding","leftPadding","gridLineStartPadding","sectionFontSize","numberSectionStyles","axisFormat","topAxis","useWidth","journey","leftMargin","taskFontSize","taskFontFamily","taskMargin","textPlacement","actorColours","sectionFills","sectionColours","git","dividerMargin","sizeUnit","textHeight","titleShift","forkWidth","forkHeight","miniPadding","fontSizeFactor","labelHeight","edgeLengthFactor","compositTitleSize","radius","er","layoutDirection","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","pie","requirement","rect_fill","text_color","rect_border_size","rect_border_color","rect_min_width","rect_min_height","rect_padding","line_height","keyify","obj","prefix","reduce","configKeys","configApi","common","mermaidAPI","MERMAID_DOM_ID_PREFIX","relations","classCounter","funs","parseDirective","statement","context","splitClassNameAndType","genericType","className","addClass","classId","cssClasses","lookUpDomId","classKeys","setupToolTips","getClass","getClasses","getRelations","addRelation","relation","id1","id2","relationTitle1","relationTitle2","addAnnotation","annotation","validatedClassName","addMember","member","theClass","memberString","startsWith","endsWith","substring","addMembers","cleanupLabel","substr","setCssClass","ids","match","setTooltip","setLink","linkStr","target","formatUrl","setClickEvent","functionName","functionArgs","setClickFunc","elemId","argList","item","charAt","querySelector","addEventListener","runFunc","bindFunctions","fun","lineType","LINE","DOTTED_LINE","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","tooltipElem","_groups","svg","selectAll","on","transition","duration","scrollX","right","scrollY","body","scrollTop","classed","direction","getDirection","setDirection","classDb","parser","svgDraw","curveLinear","interpolateToCurve","getStylesFromArray","configureSvgSize","yy","idCache","addClasses","g","vertex","cssClassStr","styles","radious","_shape","addRelations","cnt","defaultStyle","defaultLabelStyle","edgeData","arrowhead","getArrowMarker","type1","type2","interpolate","defaultInterpolate","arrowheadStyle","labelpos","labelType","lineBreakRegex","getGraphId","foundEntry","entries","setConf","cnf","draw","sandboxElement","root","contentDocument","svgBounds","_label","doc","labels","querySelectorAll","k","dim","insertBefore","firstChild","marker","diagram","isMultiGraph","classDef","drawClass","drawEdge","vBox","getStyles","nodeBorder","classText","mainBkg","lineColor","edgeCount","getRelationType","l","labelPosition","p1_card_x","p1_card_y","p2_card_x","p2_card_y","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","bounds","classInfo","isFirst","titleText2","classTitle","titleHeight","membersLine","addTspan","membersBox","methodsLine","method","classBox","rectWidth","childNodes","fieldRegEx","methodRegEx","fieldMatch","methodMatch","buildFieldDisplay","buildMethodDisplay","buildLegacyDisplay","visibility","fieldType","parseGenericTypes","fieldName","classifier","parseClassifier","err","methodName","parameters","returnType","memberText","methodStart","methodEnd","firstChar","textEl","tSpan","cleanedText","DOMPurify","getRows","breakToPlaceholder","removeEscapes","newStr","String","fromCharCode","parseInt","_","c","removeScript","rs","idx","decodedText","sanitizeMore","level","placeholderToBreak","sanitizeTextOrArray","a","hasBreaks","test","splitBreaks","getUrl","useAbsolute","val","entities","relationships","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","Identification","NON_IDENTIFYING","IDENTIFYING","addEntity","attributes","getEntities","addAttributes","entityName","attribs","entity","attributeName","addRelationship","entA","rolA","entB","rSpec","rel","entityA","roleA","entityB","relSpec","getRelationships","setTitle","getTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","erDb","erParser","erMarkers","drawAttributes","groupNode","entityTextNode","heightPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","attributeKeyType","attributeComment","attrPrefix","nodeHeight","typeNode","attributeType","nameNode","attributeNode","tn","nn","typeBBox","nameBBox","max","keyTypeNode","kn","keyTypeBBox","commentNode","cn","commentNodeBBox","widthPaddingFactor","bBox","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","parseFloat","nameRect","keyTypeAndCommentXOffset","keyTypeRect","drawEntities","svgNode","firstOne","textId","textNode","entityWidth","entityHeight","rectNode","rectBBox","adjustEntities","getEdgeName","addRelationships","relationship","relCnt","drawRelationshipFromLayout","relType","cardA","cardB","len","getTotalLength","labelPoint","getPointAtLength","labelId","labelNode","directed","edgesep","firstEntity","tertiaryColor","dagreD3","addToRender","addToRenderV2","addShape","vertexCounter","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","version","veritceKeys","addVertex","addSingleLink","_start","_end","linktext","addLink","updateLinkInterpolate","positions","interp","updateLink","isSubstringInArray","textStyles","newStyle1","newStyle2","setClass","setClickFun","getTooltip","getVertices","getEdges","ver","setGen","addSubGraph","list","_title","uniq","prims","boolean","number","string","objs","nodeList","stmt","hasOwnProperty","apply","nl","subGraph","makeUniq","getPosForId","secCount","posCrossRef","indexNodes2","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","firstGraph","destructStartLink","_str","countChar","char","destructEndLink","dots","destructLink","_startStr","startInfo","exists","allSgs","sg","allSubgraphs","lex","flowDb","flow","addVertices","vert","svgId","classStr","parentNode","addEdges","linkIdCnt","defaultStyles","linkIdBase","linkId","linkNameStart","linkNameEnd","minlen","subG","linkNode","flowChartShapes","_doc","Render","arrows","none","normal","util","clusterRects","clusterEl","xPos","baseVal","yPos","cluster","te","classList","add","nodeTextColor","textColor","titleColor","arrowheadColor","edgeLabelBackground","clusterBkg","clusterBorder","border2","moment","sanitizeUrl","dateFormat","todayMarker","excludes","sections","tasks","currentSection","tags","inclusiveEndDates","lastOrder","taskCnt","lastTask","lastTaskID","rawTasks","setAxisFormat","getAxisFormat","setTodayMarker","getTodayMarker","setDateFormat","enableInclusiveEndDates","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getDateFormat","setIncludes","toLowerCase","getIncludes","setExcludes","getExcludes","addSection","getSections","getTasks","allItemsPricessed","compileTasks","maxDepth","iterationCount","isInvalidDate","date","format","isoWeekday","checkTaskDates","task","manualEndTime","startTime","endTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","re","afterStatement","exec","latestEndingTask","findTaskById","dt","Date","setHours","mDate","isValid","durationToDate","durationStatement","relativeTime","getEndDate","inclusive","parseId","idStr","compileData","prevTask","dataStr","ds","getTaskTags","endTimeData","parseData","prevTaskId","startData","taskDb","addTask","rawTask","section","processed","raw","taskInfo","active","done","crit","milestone","order","addTaskOrg","newTask","description","compileTask","allProcessed","_linkStr","pushFun","open","callbackFunction","matchFound","t","regex","RegExp","shift","scaleTime","scaleLinear","interpolateHcl","axisBottom","axisTop","timeFormat","ganttDb","getElementById","parentElement","offsetWidth","taskArray","timeScale","domain","rangeRound","categories","catsUnfiltered","checkUnique","taskCompare","b","taskA","taskB","makeGant","pageWidth","pageHeight","gap","colorScale","range","drawExcludeDays","makeGrid","drawRects","vertLabels","drawToday","theArray","theGap","theTopPad","theSidePad","theBarHeight","theColorScale","enter","rectangles","toString","secNum","taskClass","startX","endX","textWidth","taskType","minTime","maxTime","excludeRanges","valueOf","clone","renderEnd","bottomXAxis","tickSize","tickFormat","call","topXAxis","numOccurances","prevGap","getCount","todayG","today","todayLine","arr","hash","prototype","getCounts","word","excludeBkgColor","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","ganttFontSize","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","random","commits","branches","master","curBranch","seq","getId","isfastforwardable","currentCommit","otherCommit","isReachableFrom","currentSeq","otherSeq","uniqBy","fn","recordMap","create","out","setOptions","rawOptString","message","getOptions","commit","msg","branch","merge","otherBranch","checkout","commitRef","ref","parentCount","upsert","newval","index","splice","prettyPrintCommitHistory","commitArr","newCommit","nextCommit","prettyPrint","getCommitsArray","getBranchesAsObjArray","branchArr","getBranches","getCommits","getCurrentBranch","getHead","db","gitGraphParser","allCommitsDict","branchNum","nodeFillColor","nodeStrokeWidth","nodeStrokeColor","lineStrokeWidth","branchOffset","branchColors","nodeRadius","nodeLabel","apiConfig","svgCreateDefs","svgDrawLine","colorIdx","color","lineGen","round","getElementCoords","coords","ctm","getCTM","xn","yn","svgDrawLineForCommits","fromId","toId","fromBbox","toBbox","lineStart","lineEnd","cloneNode","selector","renderCommitHistory","commitid","numCommits","size","branchName","renderLines","branchColor","lineDrawn","setMessage","getMessage","setInfo","inf","getInfo","infoParser","showData","setShowData","toggle","getShowData","cleanupValue","scaleOrdinal","d3pie","arc","pieData","pieParser","margin","legendRectSize","legendSpacing","sum","myGeneratedColors","pie1","pie2","pie3","pie4","pie5","pie6","pie7","pie8","pie9","pie10","pie11","pie12","dataReady","arcGenerator","innerRadius","outerRadius","toFixed","centroid","legend","horz","pieStrokeColor","pieStrokeWidth","pieOpacity","pieTitleTextSize","pieTitleTextColor","pieSectionTextColor","pieSectionTextSize","pieLegendTextColor","pieLegendTextSize","latestRequirement","requirements","latestElement","elements","RequirementType","REQUIREMENT","FUNCTIONAL_REQUIREMENT","INTERFACE_REQUIREMENT","PERFORMANCE_REQUIREMENT","PHYSICAL_REQUIREMENT","DESIGN_CONSTRAINT","RiskLevel","LOW_RISK","MED_RISK","HIGH_RISK","VerifyType","VERIFY_ANALYSIS","VERIFY_DEMONSTRATION","VERIFY_INSPECTION","VERIFY_TEST","Relationships","CONTAINS","COPIES","DERIVES","SATISFIES","VERIFIES","REFINES","TRACES","addRequirement","risk","verifyMethod","getRequirements","setNewReqId","setNewReqText","setNewReqRisk","setNewReqVerifyMethod","addElement","docRef","getElements","setNewElementType","setNewElementDocRef","src","dst","req","ReqMarkers","ARROW","insertLineEndings","containsNode","requirementDb","newRectNode","newTitleNode","txts","textStr","yPadding","linePadding","totalY","titleNode","newBodyNode","yStart","currentRow","charLimit","wrappedTxts","currentTextLen","firstPart","lastStr","addEdgeLabel","elementString","drawReqs","reqs","reqName","titleNodeInfo","bodyNode","drawElements","els","elName","relationColor","requirementBackground","requirementBorderColor","requirementBorderSize","requirementTextColor","relationLabelBackground","relationLabelColor","prevActor","actors","messages","notes","titleWrapped","sequenceNumbersEnabled","wrapEnabled","addActor","old","autoWrap","links","properties","actorCnt","rectData","nextActor","activationCount","part","LINETYPE","ACTIVE_START","from","actor","ACTIVE_END","addMessage","idFrom","idTo","answer","to","addSignal","messageType","Error","token","loc","first_line","last_line","first_column","last_column","expected","getMessages","getActors","getActor","getActorKeys","getTitleWrapped","enableSequenceNumbers","setWrap","wrapSetting","parseMessage","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","SOLID_POINT","DOTTED_POINT","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","addNote","placement","addLinks","actorId","sanitizedText","insertLinks","addALink","sep","addProperties","insertProperties","addDetails","innerHTML","details","getActorProperty","titleWrap","param","signalType","loopText","optText","altText","parText","drawText","fixLifeLineHeights","sequenceDb","startx","stopx","starty","stopy","sequenceItems","activations","models","getHeight","loops","it","acc","actorModel","addLoop","loopModel","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","init","updateVal","updateBounds","_self","updateFn","updateItemBounds","_startx","_stopx","_starty","_stopy","newActivation","actorRect","stackedSize","actorActivations","anchored","anchorElement","endActivation","lastActorActivationIdx","activation","lastIndexOf","createLoop","newLoop","endLoop","pop","addSectionToLoop","loop","sectionTitles","getVerticalPos","bumpVerticalPos","bump","getBounds","drawNote","getNoteRect","rectElem","drawRect","textObj","getTextObj","anchor","textMargin","valign","textElem","curr","drawMessage","sequenceIndex","lines","textDims","calculateTextDimensions","totalOffset","lineStarty","fromBounds","toBounds","drawActors","actorKeys","prevWidth","prevMargin","drawActor","drawActorsPopup","minMenuWidth","getRequiredPopupWidth","menuDimensions","drawPopup","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","textConf","wrapLabel","maxMessageWidthPerActor","getMaxMessageWidthPerActor","calculateActorMargins","insertComputerIcon","insertDatabaseIcon","insertClockIcon","calculateLoopBounds","insertArrowHead","insertArrowCrossHead","insertArrowFilledHead","insertSequenceNumber","activeEnd","activationData","drawActivation","drawLoop","drawBackgroundRect","requiredBoxSize","box","actorLines","boxHeight","boxWidth","extraVertForTitle","isNote","isMessage","textFont","wrappedMessage","messageDimensions","messageWidth","requiredPopupWidth","labelDimensions","labelWidth","actorToMessageWidth","prop","actDims","actorKey","actorWidth","buildNoteModel","shouldWrap","textDimensions","buildMessageModel","process","fromIdx","toIdx","allBounds","boundedWidth","msgDims","stack","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","stk","actorBorder","actorBkg","actorTextColor","actorLineColor","signalColor","sequenceNumberColor","signalTextColor","labelBoxBorderColor","labelBoxBkgColor","labelTextColor","loopTextColor","noteBorderColor","noteBkgColor","noteTextColor","activationBkgColor","activationBorderColor","addFunction","addPopupInteraction","popupMenuUpFunc","popupMenuDownFunc","textAttrs","displayValue","actorClass","menuWidth","linkY","linkElem","sanitizedLink","_drawMenuItemTextCandidateFunc","drawImage","imageElem","drawEmbeddedImage","popupMenu","popid","popdownMenu","popupId","pu","display","textData","prevTextHeight","textElems","yfunc","dominantBaseline","alignmentBaseline","span","drawLabel","txtObject","genPoints","cut","drawActorTypeParticipant","center","boxpluslineGroup","cssclass","iconSrc","_drawTextCandidateFunc","drawActorTypeActor","actElem","drawLoopLine","sectionHeight","lower","defs","byText","content","_setTextAttrs","byTspan","byFo","toText","fromTextAttrsDict","set","get","stateDb","drawStartState","drawDivider","drawSimpleState","stateDef","drawDescrState","descriptions","isSecond","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgWidth","orgX","titleWidth","graphBox","lineY","drawEndState","drawForkJoinState","parentId","tmp","nText","_drawLongText","_text","tHeight","textBounds","drawState","stateInfo","stateBox","titleRows","boundstmp","heightAdj","generateId","rootDoc","setRootDoc","getRootDoc","docTranslator","first","state1","state2","currentDoc","newNode","docNode","getRootDocV2","extract","addState","newDoc","states","documents","currentDocument","startCnt","endCnt","addDescription","des","getState","getStates","logDocuments","_id1","_id2","_descr","theState","dividerCnt","getDividerId","trimColon","nodeDb","setupNode","altFlag","getDir","nodeData","noteData","groupData","position","arrowType","setupDoc","startId","endId","defaultDir","transformationLog","renderDoc","svgWidth","getLabelWidth","domDocument","edgeFreeDoc","ranker","nodeSep","sub","boxBounds","noteDef","nodeCount","svgElem","dividers","pWidth","pShift","getAttribute","transitionColor","stateLabelColor","background","labelBackgroundColor","transitionLabelColor","tertiaryTextColor","specialStateColor","innerEndBackground","compositeBackground","stateBkg","stateBorder","compositeTitleBackground","altBackground","allItemsProcessed","updateActors","tempActors","people","unique","taskData","pieces","score","peeps","peopleList","journeyDb","drawActorLegend","person","colour","circleData","drawCircle","labelData","LEFT_MARGIN","initGraphics","actorNames","actorPos","actorName","drawTasks","fills","textColours","lastSection","sectionVHeight","taskPos","sectionNumber","drawSection","taskActors","drawTask","faceColor","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","actor0","actor1","actor2","actor3","actor4","actor5","d3arc","drawFace","faceData","circleElement","face","smile","startAngle","PI","endAngle","sad","ambivalent","labelMargin","taskCount","graphics","interactionFunctions","func","attachFunctions","LEVELS","fatal","setLogLevel","console","bind","time","arguments","mermaid","sequenceConfig","callback","Node","ganttConfig","idGeneratior","initIdGeneratior","next","entityDecode","detectInit","svgCode","parseError","initialize","contentLoaded","compile","serialize","pkg","classRenderer","classRendererV2","classParser","erRenderer","flowRenderer","flowRendererV2","flowParser","ganttRenderer","ganttParser","gitGraphAst","gitGraphRenderer","infoDb","infoRenderer","pieDb","pieRenderer","requirementParser","requirementRenderer","sequenceParser","sequenceRenderer","stateParser","stateRenderer","stateRendererV2","journeyRenderer","journeyParser","errorRenderer","directiveSanitizer","sanitizeCss","graphInit","reinitialize","graphType","detectType","encodeEntities","innerTxt","isInt","_txt","cb","container","iframe","existingSvg","remove","userStyles","altFontFamily","stylis","rules","style1","createElement","sequenceDiagram","svgEl","viewBox","btoa","tmpElementSelector","currentDirective","args","handleDirective","updateRendererConfigs","default","globalReset","classDiagram","stateDiagram","themes","calcThemeVariables","userOverRides","calcColors","errorBkgColor","errorTextColor","baseThemeVariables","darkThemeVariables","defaultThemeVariables","forestThemeVariables","neutralThemeVariables","base","dark","forest","neutral","darken","lighten","adjust","invert","mkBorder","Theme","primaryColor","primaryTextColor","secondaryColor","primaryBorderColor","secondaryBorderColor","tertiaryBorderColor","secondaryTextColor","nodeBkg","defaultLinkColor","taskTextLightColor","compositeBorder","overrides","updateColors","userOverrides","calculate","rgba","secondBkg","mainContrastColor","darkTextColor","border1","labelBackground","labelColor","col","contrast","critical","curveBasisClosed","curveBasisOpen","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","d3CurveTypes","directiveWithoutOpen","anyComment","inits","detectDirective","results","commentWithoutDirectives","source","lastIndex","memoize","resolver","cache","defaultCurve","curveName","toUpperCase","arrPaths","fnName","params","distance","pow","traverseEdge","prevPoint","totalDistance","remainingDistance","vectorDistance","distanceRatio","isRelationTypePresent","initialPosition","distanceToCardinalityPoint","angle","atan2","cardinalityPosition","sin","cos","terminalMarkerSize","makeid","characters","charactersLength","floor","clobber","drawSimpleText","joinWith","words","completedLines","nextLine","wordLength","calculateTextWidth","nextLineLength","breakString","hyphenatedStrings","remainingWord","Boolean","currentWord","isLastWord","hyphenCharacter","currentLine","character","lineWidth","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextHeight","fontFamilies","dims","cheight","d3Attrs","d3Elem","attrs","calculateSvgSizeAttrs","Map","deterministic","seed","now","decoder","escape","unescape","arg","stringsearch"],"sourceRoot":""}